xcall MIAMEX, MX_GETQUEUE, blkno, qblock
MX_GETQUEUE (MIAMEX 30) retrieves the contents of the queue block specified by the numeric parameter blkno, returning it in the unformatted variable qblock. qblock should be mapped as:
MAP1 Q'BLOCK ! Queue data block
MAP2 QNEXT,b,2 ! Pointer to next queue block
MAP2 QTYPE,b,2 ! Queue block type (see table)
MAP2 QOWNER,b,2 ! Owner of queue block
MAP2 QJUNK,b,2 ! Currently unused
MAP2 QDATA,x,32 ! 32 bytes of data
MAP2 QD'FLOCK,x,@QDATA ! Format of FLOCK record
MAP3 ACTION,b,2 ! Action
MAP3 MODE,b,2 ! Mode
MAP3 RECORD,b,4 ! Record number
MAP3 CHANNEL,b,4 ! Channel number [12] was 2
MAP2 QD'XLOCK,x,@QDATA ! Format of XLOCK record
MAP3 LOCK1,i,4 ! Primary lock code
MAP3 LOCK2,i,4 ! Secondary lock code
MAP3 LOCK3,b,2 ! Lock class: 0=xlock
Queue block zero is a control record of a different layout, which should not be accessed.
Each of the data queue blocks shares the same first four fields, followed by a 32 byte area whose format depends on the block type (qtype):
Value |
Queue block type |
---|---|
0 |
Unused block |
3 |
FLOCK – normal |
4 |
XLOCK |
6 |
FLOCK – inactive |
7 |
ZLOCK (proprietary format) |
8 |
RLOCK (proprietary format) |
9 |
FLOCK – pending |
The number of queue blocks is set by the QUEUE= statement in miame.ini.
To scan through all of the active queue blocks, start at blkno 2 and then proceed to set each new blkno to the qnext field, until it becomes zero.