Trailing-Edge
-
PDP-10 Archives
-
decuslib10-08
-
43,50512/ipcf.req
There are no other files named ipcf.req in the archive.
!FTIPC will control the compilation of the extra four IPC-added
! words of the external queue entry.
! The default compilation is FTIPC = 0 (off).
!Compile with /VARIANT:4 for IPC features
%IF (%VARIANT AND %O'4') EQL %O'4' %THEN COMPILETIME FTIPC=1; %FI
%IF NOT %DECLARED (FTIPC) %THEN COMPILETIME FTIPC = 0 %FI ;
!FTUUOS and FTJSYS will control the compilation of operating-system
! dependant portions of the QUASAR message blocks
! Only ONE of them will be non-zero at any time.
%IF NOT %DECLARED (FTUUOS) %THEN COMPILETIME FTUUOS = 1 %FI ;
%IF NOT %DECLARED (FTJSYS) %THEN COMPILETIME FTJSYS = 0 %FI ;
%IF (FTUUOS AND FTJSYS) %THEN
%ERROR 'COMPILATION WITH BOTH FTUUOS AND FTJSYS ON' %FI ;
%IF (%VARIANT AND %O'400') EQL 0
%THEN %IF FTIPC %THEN %INFORM ('IPCF.REQ with IPC modifications')
%FI
%FI
LITERAL IPCF_VARIANT=%VARIANT;
!So we can make sure we got the right set of conditionals
!The TENBITS MACRO allows easy referencing of unsigned PDP-10 bit fields
! The X,Y are PDP-10 bit numbers (0-35, left to right)
! If Y is omitted, a 1 bit field on bit X is assumed
MACRO TENBITS(X,Y)=%IF %NULL (Y) %THEN 35-X, 1 %ELSE 35-Y, Y-X+1 %FI ,0 %;
!The fields for a packet header follow
PHASE (0);
FIELD IPCF$FIELD = SET
DFF [IPCF$FLAGS,THISWORD,WRD], !The whole flags word
DFF [IPCF$NON_BLOCK,THISWORD,TENBITS(0)], !Don't block if input Q is empty on RECIEVE
DFF [IPCF$IND_PID_S,THISWORD,TENBITS(1)], !SEND_PID is adrs of PID
DFF [IPCF$IND_PID_R,THISWORD,TENBITS(2)], !RECV_PID is adrs of PID
DFF [IPCF$SEND_MORE,THISWORD,TENBITS(3)], !Allow 1 more send over quota
DFF [IPCF$TRUNC,THISWORD,TENBITS(4)], !Truncate recieve if not enough room
DFF [IPCF$SEN_LARGE,THISWORD,TENBITS(5)], !Priv process may send larger than max message
DFF [IPCF$RES_DEC_1,THISWORD,TENBITS(6,17)], !Reserved for DEC
DFF [IPCF$PRV_PACK,THISWORD,TENBITS(18)], !Priveledged info in this packet
DFF [IPCF$PAGE_PACK,THISWORD,TENBITS(19)], !This packet is a page of data
DFF [IPCF$ZERO_LEN,THISWORD,TENBITS(20)], !No data, (zero length packet)
DFF [IPCF$ANSWER_ME,THISWORD,TENBITS(21)], !Request receiver to ack this msg
DFF [IPCF$RES_DEC_2,THISWORD,TENBITS(22,23)], !Reserved for DEC
DFF [IPCF$PROC_ERR,THISWORD,TENBITS(24,29)], !Error code from priveledged process
DFF [IPCF$SYS_SENDER,THISWORD,TENBITS(30,32)], !Who sent this message
DFF [IPCF$CFM,THISWORD,TENBITS(33,35)], !???
DFF [IPCF$SEND_PID,NEXTWORD,WRD], !Sender's PID
DFF [IPCF$RECV_PID,NEXTWORD,WRD], !Receiver's PID
DFF [IPCF$MSG_LEN,NEXTWORD,LH], !Length of message (words)
DFF [IPCF$MSG_ADR,THISWORD,RH], !Adrs of message (adrs or page)
DFF [IPCF$MSG_NWAIT,THISWORD,RH], !Alternate, number of msgs in Q on query
DFF [IPCF$PPN,NEXTWORD,WRD], !PPN of sender
DFF [IPCF$CAPA,NEXTWORD,WRD], !Capabilities of sender
DFF [IPCF$JACCT,THISWORD,TENBITS(0)], !Sender is privd
DFF [IPCF$LOGGED_IN,THISWORD,TENBITS(1)], !Sender is logged in
DFF [IPCF$XCT_ONLY,THISWORD,TENBITS(2)], !Sender is execute only job
DFF [IPCF$POKE,THISWORD,TENBITS(3)], !Sender has POKE. privs
DFF [IPCF$IPC_PRIV,THISWORD,TENBITS(4)], !Sender has IPCF global privs
DFF [IPCF$RES_DEC_3,THISWORD,TENBITS(5,17)], !Reserved
DFF [IPCF$JOB_NUM,THISWORD,RH] !Senders job number
TES;
DLIT (IPCF$HEADER_LEN, NEXTWORD); !Length of the block
MACRO IPCF_HEADER = BLOCK [IPCF$HEADER_LEN] FIELD (IPCF$FIELD) %;
!*** End of IPCF definitions
!*** start of QUASAR definitions
!The first thing we define is the version of the request block
! that we will deal with
DLIT (QSRVER,%IF FTIPC %THEN %O'633' %ELSE %O'33' %FI);
!IPC version # is different
!Define the fields for a KILL or MODIFY request descriptor block (RDB)
PHASE (-1);
FIELD QSR$RDB_FIELD = SET
%IF FTIPC %THEN
DFF [QSR$RDB_DEV,NEXTWORD,WRD], !Device
%FI
DFF [QSR$RDB_JOB,NEXTWORD,WRD], !Jobname (SIXBIT)
DFF [QSR$RDB_JOBMSK,NEXTWORD,WRD], !Jobname mask
DFF [QSR$RDB_SEQ,NEXTWORD,WRD], !External sequence number
%IF FTUUOS
%THEN
DFF [QSR$RDB_PPN,NEXTWORD,WRD], !Owner ID (ppn)
DFF [QSR$RDB_PPNMSK,NEXTWORD,WRD] !Owner ID mask
%ELSE
DFF [QSR$RDB_ONWER,MWORDS(%O'10'),WRD] !Request owner spec
%FI
TES;
DLIT (QSR$RDB_SIZE,NEXTWORD); !Size of the block
MACRO QSR$RDB = BLOCK [QSR$RDB_SIZE] FIELD (QSR$RDB_FIELD) %;
!Define the message header for a QUASAR-bound packet
PHASE (0);
FIELD QSR$MSG_FIELD = SET
DFF [QSR$MSTYP,THISWORD,WRD], !The type of message (whole word)
DFF [QSR$MS_ACK,THISWORD,TENBITS(0)], !Sender wants a response
DFF [QSR$MS_CNT,THISWORD,TENBITS(1,17)], !Length of message (including this word)
DFF [QSR$MS_TYP,THISWORD,RH] !Operation code
TES;
DLIT (QSR$MSHSIZ ,NEXTWORD); !The size of the header
MACRO QSR$HEADER = BLOCK [QSR$MSHSIZ] FIELD (QSR$MSG_FIELD) %;
!Allowed values of the MS_TYP field follow:
LITERAL
QSR$MS_HELLO = %O'1',
QSR$MS_RELEASE = %O'2',
QSR$MS_CHECKP = %O'3',
QSR$MS_REQUE = %O'4',
QSR$MS_NEXTJOB = %O'5',
QSR$MS_ABORT = %O'6',
QSR$MS_CREATE = %O'7',
QSR$MS_LIST = %O'10',
QSR$MS_MODIFY = %O'11',
QSR$MS_KILL = %O'12',
QSR$MS_ANSWER = %O'13',
QSR$MS_TEXT = %O'14',
QSR$MS_CHK_REQ = %O'15',
QSR$MS_DEFER = %O'16',
QSR$MS_REROUTE = %O'17',
QSR$MS_CNT_MSG = %O'20',
QSR$MS_CNT_ANS = %O'21';
!Define the fields for an external queue entry
PHASE (QSR$MSHSIZ);
FIELD QSR$EQ_FIELD = SET
DFF [QSR$EQ_TASK,THISWORD,WRD], !Internal task name
DFF [QSR$EQ_VERS,NEXTWORD,LH], !Version of this block (%%.QSR)
DFF [QSR$EQ_LENGTH,THISWORD,RH], !Length of header (exclude file info)
DFF [QSR$EQ_DEVICE,NEXTWORD,WRD], !Device (SIXBIT)
DFF [QSR$EQ_JOBNAME,NEXTWORD,WRD], !Job name (SIXBIT)
DFF [QSR$EQ_EXTERN,NEXTWORD,WRD], !External value word
DFF [QSR$EQ_SEQ,THISWORD,LH], !External sequence number
DFF [QSR$EQ_STATION,THISWORD,TENBITS(18,23)], !Default station (JBTLOC(J))
DFF [QSR$EQ_PRIV,THISWORD,TENBITS(27)], !Request creator was priv'd
DFF [QSR$EQ_SPL,THISWORD,TENBITS(28)], !Request contains spooled files
DFF [QSR$EQ_RDE,THISWORD,TENBITS(29)], !Request doesn't exist
DFF [QSR$EQ_PRIOR,THISWORD,TENBITS(30,35)], !External priority in Q
DFF [QSR$EQ_FILE,NEXTWORD,WRD], !File spec word
DFF [QSR$EQ_PROT,THISWORD,LH], !Request protection
DFF [QSR$EQ_NUMFIL,THISWORD,RH], !Number of files in request
DFF [QSR$EQ_AFTER,NEXTWORD,WRD], !After time (internal fmt)
DFF [QSR$EQ_DEADLN,NEXTWORD,WRD], !Deadline time (internal fmt)
DFF [QSR$EQ_LM1,NEXTWORD,WRD], !First limit word
DFF [QSR$EQ_FORMS,THISWORD,WRD], !For output, forms type (SIXBIT?)
DFF [QSR$EQ_NOREST,THISWORD,TENBITS(0)], !The non-restartable bit
DFF [QSR$EQ_DEPEND,THISWORD,RH], !The dependency count
DFF [QSR$EQ_UNIQUE,THISWORD,TENBITS(1,2)], !The /UNIQUE value
DFF [QSR$EQ_OUTPUT,THISWORD,TENBITS(6,8)], !The /OUTPUT value
DFF [QSR$EQ_NODE,THISWORD,WRD], !We will store the ndoe name here
DFF [QSR$EQ_LM2,NEXTWORD,WRD], !Second limit word
DFF [QSR$EQ_BLOCKS,THISWORD,LH], !Output: number of blocks in req
DFF [QSR$EQ_PAGES,THISWORD,RH], !Output: page limit
DFF [QSR$EQ_CORE,THISWORD,LH], !Input: core limit (in pages)
DFF [QSR$EQ_TIME,THISWORD,RH], !Input:time limit (seconds)
DFF [QSR$EQ_RJOB,THISWORD,TENBITS(0,8)], !The requestor's job number
DFF [QSR$EQ_FUNC,THISWORD,TENBITS(9,17)], !The Function code (send, retrieive)
DFF [QSR$EQ_RMCVER,THISWORD,RH], !The requesting RMCOPY version #
DFF [QSR$EQ_LM3,NEXTWORD,WRD], !Third limit word
DFF [QSR$EQ_NOTE1,THISWORD,WRD], !Output: first half of /NOTE:
DFF [QSR$EQ_LPTLIM,THISWORD,LH], !Input: lpt page request limit
DFF [QSR$EQ_CDPLIM,THISWORD,RH], !Input: CDP card request limit
DFF [QSR$EQ_LIMIT,THISWORD,LH], !NET - Limit in blocks
DFF [QSR$EQ_OPTIONS,THISWORD,RH], !The option bits (/ASCII, etc)
DFF [QSR$EQ_LM4,NEXTWORD,WRD], !Fourth limit word
DFF [QSR$EQ_NOTE2,THISWORD,WRD], !Output: second half of /NOTE:
DFF [QSR$EQ_PTPLIM,THISWORD,LH], !Input: PTP request limit (feet?)
DFF [QSR$EQ_PLTLIM,THISWORD,RH], !Input: PLT request limit (seconds?)
DFF [QSR$EQ_RPROT,THISWORD,WRD], !NET- Destination file protection
DFF [QSR$EQ_RPROT_SY,THISWORD,TENBITS(0,8)], !'System'
DFF [QSR$EQ_RPROT_OW,THISWORD,TENBITS(9,17)], !'Owner'
DFF [QSR$EQ_RPROT_GR,THISWORD,TENBITS(18,26)],!'Group'
DFF [QSR$EQ_RPROT_WO,THISWORD,TENBITS(27,35)],!'World'
DFF [QSR$EQ_RPROT_WD,THISWORD,TENBITS(27,35)],!'World'
DFF [QSR$EQ_LM5,NEXTWORD,WRD], !Fifth limit word, extra
DFF [QSR$EQ_RUNSYS,THISWORD,WRD], !SIXBIT runtime system name
DFF [QSR$EQ_CHKREQ,MWORDS(5),WRD], !Start of checkpoint/reque info
!5 words block
DFF [QSR$EQ_ACCT,MWORDS(%O'10'),WRD], !Start of accounting info
%IF FTIPC %THEN
DFF [QSR$EQ_LOC,NEXTWORD,WRD], !Delivery location (SIXBIT)
DFF [QSR$EQ_SLOT,NEXTWORD,WRD], !Slot name (SIXBIT)
DFF [QSR$EQ_BUILDING,NEXTWORD,WRD], !Sixbit building name
DFF [QSR$EQ_SLOT_NO,NEXTWORD,WRD], !Slot number
DFF [QSR$EQ_CHARGE,NEXTWORD,WRD], !Charge number
DFF [QSR$EQ_IPC,NEXTWORD,WRD], !Misc IPC bits
DFF [QSR$EQ_STN,THISWORD,TENBITS(0,6)], !Station for INPnnn:
DFF [QSR$EQ_DEFLOG,THISWORD,TENBITS(7)], !Default logfile bit
%FI
%IF FTUUOS %THEN
DFF [QSR$EQ_USER,NEXTWORD,WRD], !The user name
DFF [QSR$EQ_USER2,NEXTWORD,WRD], !Second half
DFF [QSR$EQ_OWNER,NEXTWORD,WRD] !The ppn
%FI
TES;
DLIT (QSR$EQ_SIZE, NEXTWORD);
! End of QSR$EQ_FIELD definition
MACRO QSR_EQ = BLOCK [QSR$EQ_SIZE] FIELD (QSR$MSG_FIELD,QSR$EQ_FIELD) %;
!Define the FP (file-parameter) area fields
PHASE(0); !FPs are appended to messages
FIELD QSR$FP_FIELD = SET
DFF [QSR$FP_SIZEW,THISWORD,WRD], !The size info word
DFF [QSR$FP_FPSZ,THISWORD,LH], !Size of the parameter area
DFF [QSR$FP_FDSZ,THISWORD,RH], !Size of the descriptor area
DFF [QSR$FP_INFO,NEXTWORD,WRD], !The parameter info word
DFF [QSR$FP_FMT,THISWORD,TENBITS(0,5)], !File format
DFF [QSR$FP_PAPER,THISWORD,TENBITS(6,11)], !Paper format
DFF [QSR$FP_SPAC,THISWORD,TENBITS(12,17)], !Spacing code
DFF [QSR$FP_DEL,THISWORD,TENBITS(18)], !On==> delete this file
DFF [QSR$FP_FLG,THISWORD,TENBITS(19)], !This is the log file
DFF [QSR$FP_NFH,THISWORD,TENBITS(20)], !No file headers
DFF[QSR$FP_LOCAL,%FIELDEXPAND(QSR$FP_NFH)], !This is a local filspc
DFF [QSR$FP_SPL,THISWORD,TENBITS(21)], !This is a spooled file
DFF [QSR$FP_IGN,THISWORD,TENBITS(21)], !Ignore file (/REMOVE)
DFF [QSR$FP_XXX,THISWORD,TENBITS(22,26)], !Extra bits
DFF [QSR$FP_COPY,THISWORD,TENBITS(27,35)], !Copy count... and
DFF [QSR$FP_DAP,THISWORD,TENBITS(27,35)], !The DAP file-sys type
DFF [QSR$FP_START,NEXTWORD,WRD], !Starting point info
DFF [QSR$FP_REP1,NEXTWORD,WRD], !/REPORT word 1
DFF [QSR$FP_REP2,NEXTWORD,WRD] !/REPORT word 2
TES;
DLIT (QSR$FP_SIZE,NEXTWORD);
!End of FP area field definitions
MACRO QSR$FP = BLOCK [QSR$FP_SIZE] FIELD (QSR$FP_FIELD) %;
!Define the FD (file-descriptor) area for either operating system
%IF FTUUOS %THEN
PHASE (0);
FIELD QSR$FD_FIELD = SET
DFF [QSR$FD_STR,THISWORD,WRD], !Structure containing the file
DFF [QSR$FD_NAM,NEXTWORD,WRD], !Name of the file
DFF [QSR$FD_EXT,NEXTWORD,LH], !Extension
DFF [QSR$FD_PPN,NEXTWORD,WRD], !Owner
DFF [QSR$FD_PATH,MWORDS(SFDMAX),WRD] !path spec
TES;
DLIT (QSR$FD_SIZE, NEXTWORD); !This is the size
MACRO QSR$FD = BLOCK [QSR$FD_SIZE] FIELD (QSR$FD_FIELD) %;
%FI
!Define the fields for the QUASAR LIST message, (function 10)
PHASE (QSR$MSHSIZ);
FIELD QSR$LIST_FIELD = SET
DFF [QSR$LIST_QNAM,THISWORD,WRD], !adrs of word
DFF [QSR$LIST_QUE,THISWORD,LH] !The 3 SIXBIT chars of the Q name
%IF FTIPC %THEN ,
DFF[QSR$LIST_RDB,MWORDS(QSR$RDB_SIZE),WRD] !Request descriptor block
%FI
TES;
DLIT (QSR$LIST_SIZE, NEXTWORD); !The size of the message
MACRO QSR$MSG_LIST = BLOCK [QSR$LIST_SIZE] FIELD (QSR$MSG_FIELD,QSR$LIST_FIELD) %;
!Define the fields for the Kill request message (function 12)
PHASE (QSR$MSHSIZ);
FIELD QSR$KILL_FIELD = SET
DFF [QSR$KILL_QNAM,THISWORD,WRD], !The specified Q name
DFF [QSR$KILL_GQNAM,THISWORD,LH] !The LPT of LPTnnn
TES;
DLIT(QSR$KILL_RDB,(MWORDS(QSR$RDB_SIZE))); !Offset to RDB
DLIT (QSR$KILL_SIZE,NEXTWORD);
MACRO QSR$MSG_KILL = BLOCK [QSR$KILL_SIZE] FIELD (QSR$MSG_FIELD,QSR$KILL_FIELD) %;
MACRO EQF(FOO)= !Generate LANSW fields to match EQ fields in limit words
%FIELDEXPAND(%NAME(QSR$EQ_,FOO),0)+
(%FIELDEXPAND(QSR$LANSW_LMW,0)-%FIELDEXPAND(QSR$EQ_LM1,0)) ,
%FIELDEXPAND(%NAME(QSR$EQ_,FOO),1) ,
%FIELDEXPAND(%NAME(QSR$EQ_,FOO),2) ,
%FIELDEXPAND(%NAME(QSR$EQ_,FOO),3) %;
!Define the fields for the LIST ANSWER message (function 13)
DLIT (QSR$LANSW_FIRST, QSR$MSHSIZ); !Offset to the first answer on a page
PHASE (0); !Entries are stored sequentially on a page
FIELD QSR$LANSW_FIELD = SET
DFF [QSR$LANSW_JOB,THISWORD,WRD], !External job name
DFF [QSR$LANSW_VALS,NEXTWORD,WRD], !The external values word
DFF [QSR$LANSW_SEQ,THISWORD,LH], !External sequence number
DFF [QSR$LANSW_PRO,THISWORD,RH], !External protection
DFF [QSR$LANSW_DEV,NEXTWORD,WRD], !Q or device
DFF [QSR$LANSW_PRDEV,NEXTWORD,WRD], !Device processing this entry (0 if none)
DFF [QSR$LANSW_OWN,NEXTWORD,WRD], !Owner's ID
DFF [QSR$LANSW_AFTER,NEXTWORD,WRD], !After param (0 if none)
DFF [QSR$LANSW_LMW,MWORDS(5),WRD], !The 5 limit words
DFF [QSR$LANSW_NODE,EQF(NODE)], !Remote NODEID
DFF [QSR$LANSW_RJOB,EQF(RJOB)], !Requesting job #
DFF [QSR$LANSW_FUNC,EQF(FUNC)], !The function code
DFF [QSR$LANSW_RMCV,EQF(RMCVER)], !RMCOPY version #
DFF [QSR$LANSW_OPT,EQF(OPTIONS)], !The option bits
DFF [QSR$LANSW_RPROT,EQF(RPROT)], !NET- Remote protection code
DFF [QSR$LANSW_LIMIT,EQF(LIMIT)], !NET- Limit in blocks
DFF [QSR$LANSW_RTS,EQF(RUNSYS)], !The runtime system
DFF [QSR$LANSW_STR,NEXTWORD,WRD], !Structure containing the req
DFF [QSR$LANSW_PRWD,NEXTWORD,WRD], !Priority word
DFF [QSR$LANSW_PRIO,THISWORD,TENBITS(30,35)], !The priority itself
DFF [QSR$LANSW_USER,NEXTWORD,WRD], !User's name
DFF [QSR$LANSW_USER2,NEXTWORD,WRD] !Second half
%IF FTIPC %THEN ,
DFF [QSR$LANSW_LOC,NEXTWORD,WRD], !Distribution location
DFF [QSR$LANSW_SLOT,NEXTWORD,WRD] !Slot name
%FI
TES;
DLIT (QSR$LANSW_SIZE, NEXTWORD); !The size of an answer
LITERAL QSR$LANSW_APP = (%O'1000' - QSR$LANSW_FIRST) / QSR$LANSW_SIZE; !Number of answers that fit on a page
MACRO QSR$MSG_LANSW = BLOCK [QSR$LANSW_SIZE] FIELD (QSR$LANSW_FIELD) %;
!Define the bits for function 14 - the TEXT message
PHASE (QSR$MSHSIZ);
FIELD QSR$TEXT_FIELD = SET
DFF [QSR$TEXT_STATUS,THISWORD,WRD], !The status bit word
DFF [QSR$TEXT_FATAL,THISWORD,TENBITS(0)], !A fatal message
DFF [QSR$TEXT_WARN,THISWORD,TENBITS(1)], !A warning message
DFF [QSR$TEXT_OPR,THISWORD,TENBITS(2)], !Tell operator, too
DFF [QSR$TEXT_EXIT,THISWORD,TENBITS(3)], !Known component, exit
DFF [QSR$TEXT_NOMESS,THISWORD,TENBITS(4)], !No message, just an ack
DFF [QSR$TEXT_MORE,THISWORD,TENBITS(5)], !Another message will follow
DFF [QSR$TEXT_SUFFIX,THISWORD,RH], !SIXBIT suffix (eg the xxx in QSRxxx)
DFF [QSR$TEXT_MSG,NEXTWORD,WRD] !The ASCIZ message starts here
TES;
DLIT (QSR$TEXT_SIZE, NEXTWORD);
MACRO QSR$MSG_TEXT = BLOCK[QSR$TEXT_SIZE] FIELD (QSR$MSG_FIELD,QSR$TEXT_FIELD) %;
!Now fields for HELLO message
PHASE(QSR$MSHSIZ);
FIELD QSR$HI_FIELD= SET
DFF [QSR$HI_NAME,THISWORD,WRD], !Program name
DFF [QSR$HI_SDEV,NEXTWORD,WRD], !Scheduling device
DFF [QSR$HI_PDEV,NEXTWORD,WRD], !Processing device
DFF [QSR$HI_NODEID,NEXTWORD,WRD], !Node we want to deal with
DFF [QSR$HI_MLIMIT,NEXTWORD,LH], !Overall limit for transfers
DFF[QSR$HI_MJOB,%FIELDEXPAND(QSR$HI_MLIMIT)], !Max # of simultaneous jobs
DFF [QSR$HI_NEXT,THISWORD,RH], !Job to do next
DFF [QSR$HI_CORE,NEXTWORD,WRD], !Unused by NETSPL
DFF [QSR$HI_STATUS,NEXTWORD,WRD], !Status word, as follows:
DFF [QSR$HI_LOC,THISWORD,30,6,0], !Default station/location
DFF [QSR$HI_AVAIL,THISWORD,29,1,0], !Avaliable for scheduling
DFF [QSR$HI_FREEZE,THISWORD,28,1,0], !Freeze forms
DFF [QSR$HI_STC,THISWORD,27,1,0], !Status change
DFF [QSR$HI_BYE,THISWORD,26,1,0], !Going away soon
DFF [QSR$HI_LOWER,THISWORD,25,1,0], !Lower case
DFF [QSR$HI_RDE,THISWORD,24,1,0], !Accepts RDE jobs (whatever that is)
DFF [QSR$HI_VERS,THISWORD,RH] !QSRMAC/????.REQ Version #
TES;
DLIT(QSR$HI_SIZE,NEXTWORD);
MACRO QSR$HI=BLOCK[QSR$HI_SIZE] FIELD (QSR$HI_FIELD,QSR$MSG_FIELD)%;
PHASE(QSR$MSHSIZ);
FIELD QSR$REQ_FIELD=
SET
DFF [QSR$REQ_ITN,THISWORD,WRD], !Internal task name
DFF [QSR$REQ_INFO,MWORDS(5),WRD], !Checkpoint/Reque info
DFF [QSR$REQ_AFTER,NEXTWORD,WRD] !/AFTER value
TES;
DLIT (QSR$REQ_SIZE,NEXTWORD);
MACRO QSR$REQ=BLOCK[QSR$REQ_SIZE] FIELD (QSR$REQ_FIELD,QSR$MSG_FIELD)%;
PHASE(QSR$MSHSIZ);
FIELD QSR$REL_FIELD=
SET
DFF [QSR$REL_ITN,THISWORD,WRD] !Internal task name
TES;
DLIT (QSR$REL_SIZE,NEXTWORD);
MACRO QSR$REL=BLOCK[QSR$REL_SIZE] FIELD (QSR$REL_FIELD,QSR$MSG_FIELD)%;
PHASE(QSR$MSHSIZ);
FIELD QSR$ABO_FIELD=
SET
DFF [QSR$ABO_ITN,THISWORD,WRD], !Internal task name
DFF [QSR$ABO_REASON,NEXTWORD,WRD], !Reason (1: user 2:operator)
DFF [QSR$ABO_ID,NEXTWORD,WRD] !ID of abortionist
TES;
DLIT (QSR$ABO_SIZE,NEXTWORD);
MACRO QSR$ABO=BLOCK[QSR$ABO_SIZE] FIELD (QSR$ABO_FIELD,QSR$MSG_FIELD)%;