CFC TITLE 'DMKCFC (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
MACRO 00003000
&LABEL COMND &CMD,&CLASS,&ABREV,&ADDR,&NCL=0,&TYPE=V 00004000
&LABEL DC CL8'&CMD' COMMAND NAME 00005000
DC AL1(&CLASS,&NCL),AL2(&ABREV) 00006000
DC &TYPE.(&ADDR) ROUTINE ADDRESS 00007000
SPACE 2 00008000
MEND 00009000
EJECT 00010000
*. 00011000
* MODULE NAME - 00012000
* 00013000
* DMKCFC 00014000
* 00015000
* FUNCTION - 00016000
* 00017000
* TO GET THE ADDRESS OF THE ROUTINE THAT WILL PROCESS THE CP 00018000
* CONSOLE FUNCTION REQUESTED. 00019000
* 00020000
* ATTRIBUTES- 00021000
* 00022000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00023000
* 00024000
* 00025000
* ENTRY POINTS - 00026000
* 00027000
* DMKCFCMD - ENTERED TO PROCESS A CP CONSOLE FUNCTION 00028000
* DMKCFCSL - ENTERED WHEN SLEEP COMMAND FOUND. 00029000
* DMKCFCBE - ENTERED WHEN BEGIN COMMAND FOUND 00030000
* DMKCFCQU - ENTERED WHEN QUERY COMMAND FOUND. 00031000
* DMKCFCSE - ENTERED WHEN SET COMMAND FOUND 00031500
* DMKCFCRQ - ENTERED FOR REQUEST COMMAND 00032000
* DMKCFCSC - SCAN STRING FOR SPECIFIED CHARACTER 00032100
* 00033000
* ENTRY CONDITIONS - 00034000
* 00035000
* DMKCFCMD - 00036000
* GPR 0 CONTAINS THE MESSAGE CHARACTER COUNT 00037000
* GPR 1 POINTS TO AN 18 DOUBLE WORD INPUT MESSAGE BUFFER 00038000
* GPR 9 POINTS TO MESSAGE BUFFER 00039000
* GPR 11 CONTAINS THE USER'S VMBLOK ADDRESS 00040000
* 00041000
* EXIT CONDITIONS - 00042000
* 00043000
* NORMAL - 00044000
* GPR 1 CONTAINS THE ADDRESS OF THE CONSOLE FUNCTION ROUTINE 00045000
* OR MINUS ONE (1) INDICATING THAT THE COMMAND WAS 'CP'. 00046000
* 00047000
* ERROR - 00048000
* GPR 1 CONTAINS ZERO INDICATING THE COMMAND WAS NOT FOUND. 00049000
* GPR 2 CONTAINS THE ERROR RETURN CODE 00050000
* 00051000
* CALLS TO OTHER ROUTINES - 00052000
* 00053000
* NONE 00054000
* 00055000
* TABLES / WORK AREAS - 00056000
* 00057000
* VMBLOK 00058000
* 00059000
* 00060000
* COMNDBEG TO COMNDEND IS A TABLE USED TO LOCATE THE ROUTINES TO 00061000
* PROCESS THE VARIOUS CP COMMANDS. IT IS MADE UP OF ONE 16-BYTE 00062000
* ENTRY FOR EACH VALID COMMAND. THE FORMAT OF EACH ENTRY IS: 00063000
* COMMAND NAME--------- 8 BYTES 00064000
* CLASS MASK ---------- 2 BYTES 00065000
* ABREVIATION COUNT --- 2 BYTES 00066000
* ROUTINE ADDRESS ----- 4 BYTES 00067000
* 00068000
* 00069000
* REGISTER USAGE - 00070000
* 00071000
* GPR 0 = PARAMETER 00072000
* GPR 1 = PARAMETER 00073000
* GPR 2 = SCRATCH 00074000
* GPR 3 = SCRATCH 00075000
* GPR 4 = SCRATCH 00076000
* GPR 5 = SCRATCH 00077000
* GPR 6 = SCRATCH 00077500
* GPR 9 = INPUT MESSAGE BASE 00078000
* GPR 11 = VMBLOK BASE 00079000
* GPR 12 = MODULE BASE 00080000
* GPR 13 = SAVE AREA BASE 00081000
* GPR 14 = LINKAGE 00082000
* GPR 15 = LINKAGE 00083000
* 00084000
* 00085000
* 00086000
* NOTES - 00087000
* NONE 00088000
* 00089000
* 00090000
* OPERATION - 00091000
* 00092000
* 1. COMPARE THE COMMAND POINTED TO BY GPR 1 AGAINST A LIST 00093000
* OF VALID COMMANDS. 00094000
* 2. IF THE COMMAND IS FOUND CHECK TO INSURE THAT THE 00095000
* ABREVIATION AND CLASS ARE VALID. IF THE COMMAND OR CLASS 00096000
* IS INVALID SEND ERROR MMESSAGE DMKCFC001E, AND RETURN TO 00097000
* CALLER WITH ERROR RETURN CODE IN GPR 2. 00098000
* 3. IF THE COMMAND IS VALID RETURN THE CONSOLE FUNCTION 00099000
* ROUTINE ADDRESS IN THE CALLERS GPR 1, AND ZERO THE ERROR 00100000
* RETURN CODE REGISTER GPR 2. 00101000
* 00102000
* ERROR MESSAGES - 00103000
* DMKCFC001E ?CP: (COMMAND) 00104000
*. 00105000
EJECT 00106000
COPY OPTIONS 00107000
COPY LOCAL 00108000
EJECT 00109000
DMKCFC START 0 @VM03169 00110000
MODID DC CL8'DMKCFC' MODULE IDENTIFIER @VM03169 00111000
USING PSA,R0 00112000
USING VMBLOK,R11 00113000
USING SAVEAREA,R13 00114000
EXTRN DMKERMSG,DMKCFMAT,DMKSCNFD,DMKCVTHB,DMKCVTDB @VM03169 00115000
EXTRN DMKSCHRT,DMKSCHST,DMKCQGEN,DMKCQPRV,DMKCQREY @VM03169 00116000
EXTRN DMKCFSET,DMKCFOEX @V326538 00116500
EXTRN DMKTRCPB,DMKTRCIT,DMKCFMWU @VM03169 00117000
EXTRN DMKCVTAB @VA04301 00117100
EXTRN DMKCQYEY 00117550
EXTRN DMKJRLQU,DMKJRLSE @V60BBBB 00117750
EXTRN DMKCQHQU @VA13360 00117850
EXTRN HDKCQURY HRC019DK 00117920
EXTRN HDKCQALO HRC030DK 00117960
DMKCFCMD RELOC @VM03169 00118000
CLI 0(R1),C'.' OUTPUT SUPPRESSION CHAR? HRC021DK 00118100
BNE CHKLEN NO...PROCEED AS NORMAL HRC021DK 00118200
OI VMHRCFLG,VMTRMOFF INHIBIT TERM OUTPUT HRC021DK 00118300
BCTR R0,0 DECREMENT LENGTH BY ONE HRC021DK 00118400
LA R1,1(,R1) BUMP PAST SUPPRESSION CHAR HRC021DK 00118500
CHKLEN EQU * HRC021DK 00118600
CL R0,F8 IS THE COMMAND LENGTH GREATER 00119000
* THAN 8 ? 00120000
BH CONFERR BRANCH IF YES 00121000
LR R2,R0 SAVE BYTE COUNT 00122000
BCTR R2,0 SUBTRACT ONE FOR EX 00123000
TM VMRSTAT,VMLOGON HAS USER LOGGED ON YET ? 00124000
BO STRTLOGN NO - GO SET UP TO SCAN FOR LOGON 00125000
LA R3,COMNBEG1 BYPASS SCAN FOR LOGON SINCE IS 00126000
* ON NOW 00127000
B SETLEN 00128000
STRTLOGN LA R3,COMNBEG0 SCAN FOR LOGON 00129000
TM APSTAT1,CPINITD IS IPL IN PROGRESS ? @VA12658 00129100
BZ EXITNULL YES... EXIT @VA12658 00129200
SETLEN LA R4,16 LOAD TABLE ENTRY LENGTH 00130000
LA R5,COMNDEND LOAD LAST COMMAND ADDRESS 00131000
CONFEXEC EX R2,COMNDCLC DO THE COMMAND NAMES MATCH ? 00132000
BE CONFABRV BRANCH IF YES 00133000
CONFBXLE BXLE R3,R4,CONFEXEC BRANCH IF MORE COMMANDS 00134000
CONFERR TM VMRSTAT,VMLOGON USER LOGGED ON YET ??? 00135000
BNO CFC001 YES ---- @VM03169 00136000
LA R0,L'RETRYMSG GET MESSAGE LENGTH 00137000
LA R1,RETRYMSG GET POINTER TO MESSAGE 00138000
L R2,VMTERM GET TERMINAL RDEVBLOK 00139000
USING RDEVBLOK,R2 00140000
CLI RDEVTYPE,TYP2741 2741 TERMINAL? 00141000
BE SENDMSG YES 00142000
DROP R2 00143000
LA R0,L'RETRYMSG-9 GET MESSAGE LENGTH 00144000
B SENDMSG 00145000
CFC001 DS 0H @VM03169 00146000
LA R2,1 ERROR CODE 00147000
TM VMOSTAT,VMVIRCF VIRTUAL CONSOLE FUNCTION ?? @V200930 00148000
BO EXITNULL YES @VM03169 00149000
O R2,=X'80000000' TELL ERM TO RETURN HERE 00150000
ICM R0,14,MODID+3 INSERT MODULE IDENTIFIER 00151000
CALL DMKERMSG SEND MESSAGE 00152000
B EXITNULL CONTINUE SCAN @VM03169 00153000
SPACE 00154000
SENDMSG CALL DMKQCNWT,PARM=NORET 00155000
B EXITNULL CONTINUE SCAN 00156000
SPACE 2 00157000
CONFABRV SR R6,R6 ZERO COUNT REGISTER 00158000
LH R6,10(,R3) LOAD ABREVIATION COUNT 00159000
BCTR R6,0 SUBTRACT ONE FOR EXECUTE 00160000
EX R6,COMNDCLC IS THIS A VALID ABREVIATION 00161000
BE CONFFIND YES, GO CHECK FUNCTION CLASS 00162000
B CONFBXLE NO, CONTINUE SCANNING COMMAND 00163000
* TABLE 00164000
SPACE 2 00165000
CONFTM TM VMCLEVEL,*-* EXECUTED TM FOR CLASS @V200930 00166000
SPACE 2 00167000
CONFFIND TM 9(R3),NOCLASS CAN ANY CLASS EXECUTE ?? @V200930 00168000
BO CONFCALL YES @V200930 00169000
IC R6,8(R3) GET ALLOWED CLASSES @V200930 00170000
EX R6,CONFTM TEST FOR CORRECT CLASSES @V200930 00171000
BZ CFC001 CLASS NO GOOD @VM03169 00172000
CONFCALL EQU * @V200930 00173000
SR R2,R2 CLEAR RETURN CODE @V200930 00174000
MVC VMCOMND,0(R3) SAVE LAST COMMAND ISSUED @V200930 00175000
CLC 0(3,R3),CPCHAR IS IT 'CP ' ?? @V200820 00176000
BE EXITNEG YES, SKIP AND GET NEXT FIELD @VM03169 00177000
L R1,12(,R3) LOAD ROUTINE ADDRESS @VM03169 00178000
B EXIT EXIT TO CALLER @VM03169 00179000
EXITNEG L R1,FFS INFORM DMKCFM THIS WAS 'CP' @VM03169 00180000
* PREFIX 00181000
B EXIT RETURN TO CALLER @VM03169 00182000
EXITNULL SLR R1,R1 TELL DMKCFM TO READ NEXT COMMAND @VM03169 00183000
ST R2,SAVER2 SAVE ERROR RETURN CODE @VM03169 00184000
EXIT ST R1,SAVER1 SAVE (ROUTINE ADDRESS OR CC) @VM03169 00185000
* FOR DMKCFM 00186000
EXIT NOW RETURN TO CALLLER @VM03169 00187000
DS 0F 00188000
EJECT 00189000
COMNBEG0 COMND LOGON,0,1,DMKLOGON,NCL=1 00190000
COMND LOGIN,0,1,DMKLOGON,NCL=1 00191000
COMND DIAL,0,1,DMKDIAL,NCL=1 00192000
COMNBEG1 COMND ATTACH,B,3,DMKVDAAT @V407466 00193000
COMND ATTN,G,4,DMKCFCRQ,TYPE=A @V200930 00194000
COMND ADSTOP,G,6,DMKCFDAD 00195000
COMND ACNT,A,4,DMKCPVAC 00196000
COMND AUTOLOG,(A+B),6,DMKALGON @V4075A0 00197100
COMND BEGIN,G,1,DMKCFCBE,TYPE=A 00198000
COMND BACKSPAC,D,2,DMKCSOBS 00199000
COMND CHANGE,D+G,2,DMKCSUCH @V200820 00200000
COMND CLOSE,G,1,DMKCSQCL @V60B9BA 00201000
COMND COUPLE,G,6,DMKDIBCP @VA13704 00202000
COMND DISPLAY,G,1,DMKCDBDI 00203000
COMND DCP,C+E,3,DMKCDBDC @V200820 00204000
COMND DEFINE,G,3,DMKDEFIN 00205000
COMND DETACH,B+G,3,DMKVDDDE @V407466 00206000
COMND DISCONN,0,4,DMKUSODS,NCL=1 00207000
COMND DISABLE,A+B,4,DMKCPVDS @V200820 00208000
COMND DMCP,C+E,4,DMKCDMDM @V4075A0 00209100
COMND DRAIN,D,2,DMKCSODR 00210000
COMND DUMP,G,2,DMKCDMDU @V4075A0 00211100
COMND ECHO,G,2,DMKMSGEC 00212000
COMND EXTERNAL,G,3,DMKCPBEX 00213000
COMND ENABLE,A+B,2,DMKCPVEN @V200820 00214000
COMND FLUSH,D,1,DMKCSOFL 00215000
COMND FORCE,A,5,DMKUSOFL 00216000
COMND HALT,A,4,DMKCPSH @VA03757 00217000
COMND HCP,A,3,DMKCPSCP HRC010DK 00217500
COMND HOLD,D,2,DMKCSQHL @V60B9BA 00218000
COMND IPL,G,1,DMKCFGIP 00219000
COMND LINK,G,4,DMKLNKIN 00220000
COMND LOADBUF,D,7,DMKCSBLD @V386298 00221000
COMND LOADVFCB,G,8,DMKCSBVL @V386298 00222000
COMND LOCATE,C+E,3,DMKCFDLO @V200820 00223000
COMND LOCK,C,4,DMKCPVLK HRC026DK 00224490
COMND LOGOFF,0,3,DMKUSOLG,NCL=1 00225000
COMND LOGOUT,0,3,DMKUSOLG,NCL=1 00226000
COMND MONITOR,A+E,3,DMKMCCCL @VM03169 00227000
COMND MSG,B+G,1,DMKMSGMS,NCL=1 @V200820 00228000
COMND MSGNOH,A+B,6,DMKMSGNH @V60C2BE 00228100
COMND MESSAGE,B+G,2,DMKMSGMS,NCL=1 @V200820 00229000
COMND NETWORK,A+B+F,3,DMKNETWK @V200820 00230000
COMND NOTREADY,G,4,DMKCPBNR 00231000
COMND ORDER,D+G,3,DMKCSVOR @V60B9BA 00232000
COMND PURGE,D+G,3,DMKCSVPU @V60B9BA 00233000
COMND QUERY,A+B+C+D+E+F+G+H,1,DMKCFCQU,TYPE=A @V200820 00234000
COMND READY,G,5,DMKCPBRY 00235000
COMND FREE,D,2,DMKCSQFR @V60B9BA 00236000
COMND REPEAT,D,3,DMKCSORP 00237000
COMND REQUEST,G,3,DMKCFCRQ,TYPE=A @V200930 00238000
COMND RESET,G,5,DMKCPBRS 00239000
COMND REWIND,G,3,DMKCPBRW 00240000
COMND SYSTEM,G,3,DMKCPBSR 00241000
COMND SAVESYS,C,7,DMKCFHSV HRC026DK 00242490
COMND INDICATE,E+G,3,DMKTHIEN @VM03169 00243000
COMND TRANSFER,D+G,4,DMKCSVTR @V60B9BA 00244000
COMND SET,A+B+F+G+H,3,DMKCFCSE,TYPE=A @V326538 00245000
COMND SHUTDOWN,A,8,DMKCPRSH @VA13648 00246000
COMND SLEEP,0,2,DMKCFCSL,NCL=1,TYPE=A 00247000
COMND SPACE,D,3,DMKCSOSP 00248000
COMND SPOOL,G,2,DMKCSPSP 00249000
COMND STORE,G,2,DMKCDSTO 00250000
COMND START,D,3,DMKCSOST 00251000
COMND STCP,C,4,DMKCDSCP 00252000
COMND TAG,G,2,DMKCSTAG @VM03169 00253000
COMND TERMINAL,G,4,DMKCFTRM 00254000
COMND TRACE,G,2,DMKTRACE 00255000
COMND PER,G,3,DMKPECMD PER001 00255500
COMND UNLOCK,C,6,DMKCPVUL HRC026DK 00256490
COMND VARY,B,4,DMKCPSRY @VA03757 00257000
COMND VMDUMP,G,3,DMKVMDEP @V67CAH7 00257500
COMND WNG,A+B,1,DMKMSGWN @V200820 00258000
COMND WARNING,A+B,1,DMKMSGWN @V200820 00259000
COMND SMSG,G,2,DMKMSGSM @V60C2B8 00259100
COMND *,0,1,0,NCL=1,TYPE=A @V200820 00260000
COMNDEND COMND CP,0,2,0,NCL=1,TYPE=A @V200820 00261000
COMNDCLC CLC 0(0,R1),0(R3) 00262000
SPACE 00263000
CPCHAR DC C'CP ' @V200820 00264000
SPACE 1 00265000
RETRYMSG DC X'9985A2A38199A3404095A4997C97957C' 00266000
* R E S T A R T R E S T A R T 00267000
EJECT 00268000
*. 00269000
* 00270000
* ENTRY NAME - 00271000
* 00272000
* DMKCFCRQ 00273000
* 00274000
* FUNCTION - 00275000
* 00276000
* TO SIMULATE AN ATTENTION INTERRUPT TO THE VIRTUAL MACHINE 00277000
* CONSOLE AS THOUGH THE REQUEST KEY HAD BEEN USED 00278000
* ON A REAL CPU CONSOLE. 00279000
* 00280000
* COMMAND LINE FORMAT - 00281000
* 00282000
* +--------------+ 00283000
* | REQUEST | 00284000
* +--------------+ 00285000
* 00286000
* CALLS TO OTHER ROUTINES - 00287000
* 00288000
* DMKCFMAT - TO SIMULATE THE ATTENTION 00289000
* 00290000
* OPERATION - 00291000
* 00292000
* 1. CALL DMKCFMAT TO POST THE ATTENTION INTERRUPT 00293000
* 2. RETURN +4 TO RUN THE VIRTUAL MACHINE 00294000
* 00295000
* RESPONSES - 00296000
* 00297000
* NONE 00298000
* 00299000
* ERROR MESSAGES - 00300000
* 00301000
* NONE 00302000
* 00303000
*. 00304000
EJECT 00305000
DMKCFCRQ RELOC @VM03169 00306000
SPACE 00307000
CALL DMKCFMAT SIMULATE ATTENTION INTERRUPT @V200930 00308000
L R1,SAVERETN GET RETURN ADDRESS @V200930 00309000
LA R1,4(R1) UP TO RUN MACHINE @V200930 00310000
ST R1,SAVERETN SET RETURN TO DMKCFM @V200930 00311000
EXIT RUN MACHINE @V200930 00312000
EJECT 00313000
*. 00314000
* 00315000
* ENTRY NAME - 00316000
* 00317000
* DMKCFCBE 00318000
* 00319000
* FUNCTION - 00320000
* 00321000
* TO ALLOW VIRTUAL MACHINE TO CONTINUE OR TO RESUME 00322000
* OPERATION AT A SPECIFIED LOCATION. 00323000
* 00324000
* 00325000
* COMMAND LINE FORMAT - 00326000
* 00327000
* +--------+------------+ 00328000
* | BEGIN | LOCATION | 00329000
* +--------+------------+ 00330000
* 00331000
* CALLS TO OTHER ROUTINES - 00332000
* 00333000
* DMKSCNFD - TO PICK UP V.M. ADDRESS (IF ANY) 00334000
* DMKCVTHB - TO CONVERT SAME TO BINARY 00335000
* DMKTRCPB - TO PUT BACK OLD USER INSTRUCTIONS (IF TRACING) 00336000
* DMKTRCIT - TO SET NEW "SVC B2" FOR TRACING INSTRUCTIONS 00337000
* 00338000
* OPERATION - 00339000
* 00340000
* 1. CALL DMKSCNFD TO LOCATE POSSIBLE ADDRESS. IF NONE FOUND, 00341000
* GO TO STEP 2A. 00342000
* 2. CALL DMKCVTHB TO CONVERT THE ADDRESS TO BINARY. 00343000
* IF BAD, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCFM004E. 00344000
* IF OK, STORE NEW ADDRESS INTO THE VIRTUAL PSW. 00345000
* 2A. SET UP TO RETURN TO DMKCFM+4 AND EXIT. 00346000
* 00347000
* RESPONSES - 00348000
* NONE - THE VIRTUAL MACHINE WILL COMMENCE EXECUTION. 00349000
* 00350000
* ERROR MESSAGES - 00351000
* DMKCFC004E INVALID HEXLOC - (HEXLOC) 00352000
* 00353000
*. 00354000
EJECT 00355000
DMKCFCBE RELOC @VM03169 00356000
SPACE 00357000
CALL DMKSCNFD SCAN FOR BEGIN ADDRESS 00358000
BNZ BEGEXIT RETURN IF NONE FOUND 00359000
LR R6,R1 SAVE ARGUMENT ADDRESS 00360000
LR R5,R0 SAVE ARGUMENT LENGTH 00361000
CL R0,F6 OVER SIX CHARACTERS ???? 00362000
BH CFC004 YES - SEND ERROR MESSAGE @VM03169 00363000
CALL DMKCVTHB CONVERT ADDRESS TO BINARY 00364000
BNZ CFC004 BRANCH ON ERROR @VM03169 00365000
AIF (NOT &TRACE(6)).TR2 00366000
TM VMTRCTL,VMTRBRIN TRACING INSTRUCTIONS ? 00367000
BZ BEGSTOR NOPE - STORE NEW PSW BITS. 00368000
CALL DMKTRCPB YES - PUT BACK OLD USER 00369000
* INSTRUCTIONS 00370000
CALL DMKTRCIT AND SET THE NEW ONE (R1 TELLS 00371000
* WHERE) 00372000
.TR2 ANOP 00373000
BEGSTOR STCM R1,7,VMPSW+5 STORE NEW ADDRESS BACK IN PSW 00374000
BEGEXIT L R1,SAVERETN LOAD RETURN ADDRESS 00375000
LA R1,4(,R1) INCREMENT BY 4 00376000
ST R1,SAVERETN STORE BACK IN SAVE AREA 00377000
EXIT 00378000
EJECT 00379000
*. 00380000
* ENTRY NAME - 00381000
* 00382000
* DMKCFCSL 00383000
* 00384000
* FUNCTION - 00385000
* 00386000
* TO ALLOW TERMINAL TO RECEIVE MESSAGES, BUT NOT 00387000
* RUN USERS VIRTUAL MACHINE. 00388000
* 00389000
* COMMAND LINE FORMAT - 00390000
* 00391000
* +---------+-----------------------------------+ 00392000
* | SLEEP | < NN < HRS | MIN | SEC >> | 00393000
* +---------+-----------------------------------+ 00394000
* 00395000
* OPERATION - 00396000
* 00397000
* 1. IF 'NN' NOT SPECIFIED, SET VMSLEEP AND EXIT. 00398000
* 2. VALIDATE NUMERIC OPERAND, SCAN FOR UNITS OPERAND. 00399000
* (DEFAULT UNIT IS MINUTES, ABBREVIATIONS ARE 'HR', 00400000
* 'MIN', AND 'SEC') 00401000
* CONVERT SPECIFIED NUMBER INTO TOD CLOCK UNITS. 00402000
* 3. CALL DMKFREE FOR STORAGE FOR A TRQBLOK. 00403000
* 4. IF VMDELAY ALREADY POINTS TO A TRQBLOK, USE THE 00404000
* EXISTING ONE (RESET VIA CALL DMKSCHRT IF QUEUED). 00405000
* 5. ADD THE SPECIFIED NUMBER OF SECONDS TO THE CURRENT 00406000
* T.O.D. CLOCK VALUE, SET THE RETURN TO 'SLPRETN', 00407000
* AND SET THE REQUEST VIA CALL DMKSCHST. EXIT 00408000
* 6. WHEN THE SPECIFIED INTERVAL HAS ELAPSED, FRET THE 00409000
* TRQBLOK AND RE-DISPATCH THE VIRTUAL MACHINE. 00410000
* 00411000
* RESPONSES - NONE 00412000
* 00413000
* ERROR MESSAGES - 00414000
* 00415000
* DMKCFC002E INVALID OPERAND - OPERAND 00416000
*. 00417000
EJECT 00418000
DMKCFCSL RELOC @VM03169 00419000
SPACE 00420000
CALL DMKSCNFD WAS AN INTERVAL SPECIFIED ? @V200820 00421000
BZ INTERVAL YES CONTINUE @VM03169 00422000
OI VMOSTAT,VMSLEEP SET MACHINE TO SLEEP @VM03169 00423000
B SLPEXIT AND RETURN @VM03169 00424000
INTERVAL LA R2,2 SET UP ERROR MSG CODE (IN CASE) @VM03169 00425000
CL R0,F2 CHECK FOR VALID PARM LENGTH @VM03169 00426000
BH CALLERM TOO LONG - ERROR @V200820 00427000
STM R0,R1,SAVEWRK2 SAVE PARM ADDR, LEN FOR LATER ERR@V200820 00428000
CALL DMKCVTDB ATTEMPT CONVERT TO BINARY @V200820 00429000
LR R3,R1 VALUE TO GR3 IF O.K. @V200820 00430000
LM R0,R1,SAVEWRK2 RECOVER PARM ADDR, ETC IF BAD @V200820 00431000
BNZ CALLERM NO GOOD - ERROR @V200820 00432000
CALL DMKSCNFD SCAN FOR UNITS OPERAND @VM03169 00433000
BNZ SLPMINS NONE SPECIFIED - USE MINUTES @VM03169 00434000
CL R0,F3 MAXIMUM LENGTH IS THREE BYTES @VM03169 00435000
BH CALLERM NO GOOD - DMKCFC002E @VM03169 00436000
BE SLPARMS EXACTLY THREE CHARS - CHECK THEM @VM03169 00437000
CLC 0(2,R1),=C'HRS ' ONLY ABBREVIATION IS 'HR' @VM03169 00438000
BNE CALLERM NOPE - INVALID OPERAND @VM03169 00439000
B SLPHOUR CONVERT FROM HOURS TO SECONDS @VM03169 00440000
SLPARMS EQU * DETERMINE TIME UNITS FOR DELAY @VM03169 00441000
CLC 0(3,R1),=C'SEC ' DELAY IN SECONDS ? @VM03169 00442000
BE SLPSECS YES - NO CONVERSION @VM03169 00443000
CLC 0(3,R1),=C'MIN ' DELAY IN MINUTES ? @VM03169 00444000
BE SLPMINS YES - MULTIPLY BY 60 @VM03169 00445000
CLC 0(3,R1),=C'HRS ' DELAY IN HOURS ? @VM03169 00446000
BNE CALLERM NO -- BAD OPERAND @VM03169 00447000
SLPHOUR EQU * CONVERT HOURS TO SECONDS @VM03169 00448000
SLR R2,R2 CLEAR HIGH-ORDER REGISTER @VM03169 00449000
M R2,F60 HOURS TIMES 60 = MINUTES @VM03169 00450000
SLPMINS EQU * CONVERT MINUTES TO SECONDS @VM03169 00451000
SLR R2,R2 CLEAR HIGH-ORDER REGISTER @VM03169 00452000
M R2,F60 MINUTES TIMES 60 = SECONDS @VM03169 00453000
SLPSECS EQU * CONVERT TO TOD CLOCK UNITS @VM03169 00454000
SLR R2,R2 CLEAR HIGH-ORDER REGISTER @VM03169 00455000
M R2,=F'1000000' CONVERT TO MICRO-SECONDS @VM03169 00456000
SLDA R2,12 ALIGN TO BIT 51 @VM03169 00457000
L R1,VMDELAY CHECK FOR AN EXISTING TRQBLOK @V200820 00458000
LTR R1,R1 ??? @V200820 00459000
BZ GETRQBK NOPE - GET ONE FROM FREE STORAGE @V200820 00460000
CALL DMKSCHRT RESET THE TIMER REQUEST @V200820 00461000
B SETRQBK NOW IT'S O.K. TO USE @V200820 00462000
GETRQBK EQU * @V200820 00463000
LA R0,TRQBSIZE SIZE OF TRQBLOK IN DBL-WDS @V200820 00464000
CALL DMKFREE ... @V200820 00465000
XC 0(TRQBSIZE*8,R1),0(R1) CLEAR IT @V200820 00466000
ST R1,VMDELAY SAVE THE ADDRESS HERE @V200820 00467000
USING TRQBLOK,R1 @V200820 00468000
SETRQBK EQU * @V200820 00469000
OI VMOSTAT,VMSLEEP SET MACHINE TO SLEEP @VM03169 00470000
STCK TRQBVAL SET CURRENT TIME OF DAY @V200820 00471000
BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 00471250
DOWNWEGO DS 0H @V408246 00471300
GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 00471500
CLOCKOK EQU * @VA04301 00471750
AL R3,TRQBVAL+4 ADD LOW ORDER WORD @VM03169 00472000
BC 12,NOCARRY SKIP IF NO CARRY @VM03169 00473000
AL R2,F1 ELSE ADD IN THE CARRY @VM03169 00474000
NOCARRY AL R2,TRQBVAL ADD IN HIGH ORDER WORD @VM03169 00475000
STM R2,R3,TRQBVAL STORE WAKE UP TIME 00476000
ST R11,TRQBUSER VMBLOK ADDRESS @V200820 00477000
L R4,=A(DMKCFMWU) RETURN AFTER INTERVAL @VM03169 00478000
ST R4,TRQBIRA ... @V200820 00479000
STCK TRQBTOD TIME-STAMP TRQ BLOCK @V408246 00479100
BC 3,DOWNWEGO ABEND CVT001 @V408246 00479300
CALL DMKSCHST SET THE REQUEST PENDING @V200820 00480000
MC 3,1 CLASS1=RESPONSE, CODE3=SL/TIMEOUT@VM03169 00481000
SLPEXIT EQU * @V200820 00482000
EXIT RETURN TO DMKCFC @V200820 00483000
SPACE 2 00484000
SPACE 3 00485000
* 00486000
* WHEN COME HERE R6= ARGUMENT ADDRESS, R5= ARGUMENT LENGTH 00487000
* 00488000
CFC004 LR R0,R5 ARGUMENT LENGTH @VM03169 00489000
LR R1,R6 ARGUMENT ADDRESS 00490000
LA R2,4 ERROR CODE 00491000
SPACE 00492000
CALLERM ICM R0,14,MODID+3 MODULE IDENTIFIER 00493000
CALL DMKERMSG SEND ERROR MESSAGE 00494000
* 00495000
* ERMSG WILL RETURN TO CFC MAIN CONTROL --- NOT HERE 00496000
* 00497000
EJECT 00497005
*. 00497010
* ENTRY NAME - 00497015
* 00497020
* DMKCFCSC 00497025
* 00497030
* FUNCTION - 00497035
* 00497040
* A NEW ENTRY POINT WILL BE ADDED TO DMKCFC (DMKCFCSC) 00497045
* WHICH WILL SCAN A STRING FOR A SPECIFIED CHARACTER. THIS 00497050
* ROUTINE IS BEING IMPLEMENTED TO DETERMINE WHETHER AN 00497055
* OPERAND ON A COMMAND LINE IS A RANGE OF DEVICE ADDRESSES. 00497060
* DMKCFCSC MAY BE INVOKED TO SCAN FOR ANY CHARACTER; THE 00497065
* 3850 SUPPORT WILL USE THE ROUTINE TO SCAN FOR A '-'. 00497070
* 00497075
* ENTRY CONDITIONS: 00497080
* 00497085
* R0 CONTAINS LENGTH OF STRING TO BE SCANNED 00497090
* R1 CONTAINS THE ADDRESS OF THE STRING TO BE SCANNED. 00497095
* R2 CONTAINS THE ADDRESS OF A FIELD CONTAINING THE 00497100
* CHARACTER WHICH WILL BE THE OBJECT OF THE SCAN. 00497105
* 00497110
* EXIT CONDITIONS: 00497115
* 00497120
* CC=0 - THE SPECIFIED CHARACTER WAS NOT FOUND IN THE STRING; 00497125
* ENTRY REGISTERS REMAIN UNCHANGED. 00497130
* 00497135
* CC=1 - THE SPECIFIED CHARACTER WAS FOUND IN THE STRING. 00497140
* R2 CONTAINS THE ADDRESS OF THE SPECIFIED CHARACTER 00497145
* IN THE STRING BEING SCANNED; R0 AND R1 REMAIN 00497150
* UNCHANGED. 00497155
* 00497160
* OPERATION - 00497165
* 00497170
* SCAN FOR THE SPECIFIED CHARACTER BY USING THE 'TRT' 00497175
* INSTRUCTION AND A 256 BYTE TABLE. 00497180
* 00497185
* RESPONSES - 00497190
* NONE 00497195
* 00497200
* MESSAGES - 00497205
* NONE 00497210
*. 00497215
DMKCFCSC RELOC @V407466 00497220
LA R4,DMKCFCTB SET TABLE ADDRESS @V407466 00497225
XC 0(L256,R4),0(R4) CLEAR TO ZERO @V407466 00497230
SLR R6,R6 CLEAR REGISTER @V407466 00497235
IC R6,0(R2) GET SCAN CHARACTER @V407466 00497240
LA R5,0(R4,R6) GET TRT TAB PTR + '-' CHAR @V407466 00497245
LTR R6,R6 WAS SCAN CHAR '00' @V407466 00497250
BNZ FUNC NO, KEEP GOING @V407466 00497255
LA R6,1(,R6) NON-ZERO BYTE IN TABLE @V407466 00497260
FUNC EX R6,SETFUNC PLACE FUNCTION @V407466 00497265
LR R6,R1 PTR TO FIRST BYTE OF DATA @V407466 00497270
LR R9,R0 @V407466 00497275
LA R7,0(R9,R6) PTR TO LAST CHAR + 1 @V407466 00497280
ABOVE LR R8,R7 GET LENGTH FOR @V407466 00497285
SR R8,R6 EXECUTE INST. @V407466 00497290
BCTR R8,0 DECREMENT FOR EXECUTE @V407466 00497295
EX R8,SEARCH SCAN FOR '-' @V407466 00497300
BC 0,EXIT2 @V407466 00497305
ST R1,SAVER2 ARGUMENT BYTE ADDRESS @V407466 00497310
ST R6,SAVER1 RESTORE ORIGINAL R1 @V407466 00497315
EXIT2 EXIT @V407466 00497320
SEARCH TRT 0(0,R6),0(R4) @V407466 00497325
SETFUNC MVI 0(R5),0 @V407466 00497330
L256 EQU 256 @V407466 00497335
DMKCFCTB DC 256X'00' @V407466 00497340
EJECT 00498000
*. 00499000
* ENTRY NAME - 00499500
* 00500000
* DMKCFCQU - PROCESS THE QUERY COMMAND 00500500
* DMKCFCSE - PROCESS THE SET COMMAND 00501000
* 00501500
* FUNCTION - 00502000
* 00502500
* THE FUNCTION OF THIS ROUTINE IS TO SCAN THRU THE QUERY AND 00503000
* SET LISTS FOR THE SPECIFIED ARGUMENT. THIS ROUTINE 00503500
* WILL SET UP AND CALL THE PROPER QUERY OR SET EXECUTOR 00504000
* TO HANDLE THE REQUEST. 00504500
* 00505000
* OPERATION - 00505500
* 00506000
* 1. CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF NO 00506500
* ARGUMENT IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE 00507000
* DMKCFC026E. 00507500
* 2. SCAN THE APPROPRIATE LIST FOR AN ARGUMENT. 00508000
* IF NOT FOUND AND THIS IS A QUERY REQUEST, SET UP FOR 00508500
* THE APPROPRIATE DEFAULT AND CALL THE APPROPRIATE 00509000
* EXECUTOR. 00509500
* 3. CHECK ARGUMENT FOR MINIMUM ABBREVIATION. 00510000
* 4. CHECK ARGUMENT FOR PERMITTED CLASSES. 00510500
* 5. SET THE R6 INDEX AND CALL THE MODULE TO 00511000
* HANDLE THE ARGUMENT. 00511500
* 00512000
* NOTE: THE QUERY AND SET LISTS ARE MADE UP OF 12 BYTE 00512500
* ENTRIES, EACH OF THE FOLLOWING FORM: 00513000
* 00513500
* +----------------------+------+------+------+------+ 00514000
* | SEARCH ARGUMENT |ABBREV|CLASS |MODULE|INDEX | 00514500
* +----------------------+------+------+------+------+ 00515000
* 00515500
* THE INDEX MUST MATCH THE BRANCH LISTS IN THE 00516000
* CALLED MODULES. 00516500
* 00517000
* RESPONSES - 00517500
* NONE 00518000
* 00518500
* MESSAGES - 00519000
* 00519500
* DMKCFC003E INVALID OPTION - OPTION 00520000
* DMKCFC026E OPERAND MISSING OR INVALID 00520500
* 00521000
*. 00521500
EJECT 00522000
DMKCFCQU RELOC @V326538 00522500
MVI SAVEWRK1,00 INDICATE QUERY FUNCTION @V326538 00523000
LA R3,QRYLIST START OF QUERY LIST @V326538 00523500
LA R5,QRYLAST END OF QUERY LIST @V326538 00524000
B SETQUCOM JOIN COMMON CODE @V326538 00524500
SPACE 00525000
DMKCFCSE RELOC @V326538 00525500
MVI SAVEWRK1,X'01' INDICATE SET FUNCTION @V326538 00526000
LA R3,SETLIST START OF SET LIST @V326538 00526500
LA R5,SETLAST END OF SET LIST @V326538 00527000
SPACE 00527500
SETQUCOM MVC SAVEWRK2(8),BLANKS BLANK MESSAGE AREA @V326538 00528000
MVC SAVEWRK4(8),SAVEWRK2 ... 00545000
CALL DMKSCNFD LOCATE TYPE OF QUERY 00546000
BNZ CFC026 MISSING ARGUMENT @VM03169 00547000
CL R0,F8 IF ARGUMENT OVER EIGHT CHARACTERS 00548000
BH CFC026 WE HAVE A FOR SURE ERROR @VM03169 00549000
LR R2,R0 LENGTH OF ARG. IN GPR 2. 00550000
BCTR R2,0 MAKE RIGHT LENGTH FOR COMPARE 00551000
* INST. 00552000
LA R4,12 INDEX @V200930 00555000
QRYLOOP EX R2,QRYCLC IS THIS OPTION REQUESTED ? 00556000
BE QRYABREV IF EQUAL, GO CHECK FOR PROPER 00557000
* ABREV. 00558000
VECTBUMP DS 0H @V200930 00559000
BXLE R3,R4,QRYLOOP TRY AGAIN IF NOT AT END 00560000
LR R6,R0 SAVE PARM LENGTH @VM03169 00561000
LR R7,R1 SAVE PARM POINTER @VM03169 00562000
CLC 0(2,R1),=C'PF' PF QUERY ?? @V200730 00563000
BNE QRYUSR NO, MIGHT BE USERID @V200730 00564000
CLI SAVEWRK1,X'00' IS THIS A QUERY REQUEST? @V326538 00564100
BE QUEPF YUP, BR. @V326538 00564200
LA R3,SETPF ADDRESS THE TABLE ENTRY @V326538 00564300
B QRYCALL AND GO TO THE SETPF ROUTINE @V326538 00564400
SPACE 00564500
QUEPF EQU * @V326538 00564600
CL R0,F4 LENGTH OF 4? @VM03169 00565000
BH QRYUSR GT 4 - ISN'T PFXX; MUST BE USERID@VM03169 00566000
LA R1,2(R1) ADDR OF NUMBER TO CONVERT @VM03169 00567000
BCTR R0,0 SIZE OF NUMBER TO CONVERT @VM03169 00568000
BCTR R0,0 ... @VM03169 00569000
CALL DMKCVTDB CONVERT THE XX IN PFXX @VM03169 00570000
BNZ QRYUSR IF DIDN'T CONVERT, MUST BE USERID@VM03169 00571000
LTR R1,R1 IS THE NUMBER POSITIVE? @VM03169 00572000
BNP QRYUSR NO, MUST BE USERID @VM03169 00573000
CH R1,=H'24' Is converted number GT 24? HRC043DK 00574100
BH QRYUSR YES, INVALID PFXX, MUST BE USERID@VM03169 00575000
LR R0,R6 RESTORE PARM LENGTH @VM03169 00576000
LR R1,R7 RESTORE PARM POINTER @VM03169 00577000
LA R3,QRYPF SET R3 TO QUERY FUNC @V200730 00578000
B QRYCALL CALL TO DO PF QUERY @V200730 00579000
QRYUSR DS 0H @V200730 00580000
LR R0,R6 RESTORE PARM LENGTH @VM03169 00581000
LR R1,R7 RESTORE PARM POINTER @VM03169 00582000
LA R3,QRYCLASB SET DEFUALT FOR CLASS B @V200930 00583000
CLI SAVEWRK1,X'00' IS THIS A QUERY REQUEST? @V326538 00583300
BNE CFC003 NOPE, GARBAGE IN, GARBAGE OUT @V326538 00583600
TM VMCLEVEL,VMCLASSB IS IT CLASS B ?? @V200930 00584000
BO QRYCALL YES, DO IT @V200930 00585000
LA R3,QRYCLASG SET FOR CLASS G DEFAULT @V200930 00586000
B QRYCALL DO IT @V200930 00587000
SPACE 00588000
QRYABREV SR R7,R7 CLEAR FOR WORK @V200930 00589000
IC R7,8(R3) GET ALLOWED ABBREVIATION @V200930 00590000
BCTR R7,0 MINUS ONE FOR 'EX' COMPARE 00591000
EX R7,QRYCLC MATCH ????? 00592000
BNE VECTBUMP NO GOOD, KEEP LOOKING @V200930 00593000
IC R7,9(R3) GET ALLOWED CLASS @V200930 00594000
EX R7,QRYTM TEST FOR ALLOWED CLASS @V200930 00595000
BZ VECTBUMP NOT ALLOWED, KEEP SCANNING @V200930 00596000
B QRYCALL OK, GO DO IT @V200930 00597000
EJECT 00598000
QRYTM TM VMCLEVEL,*-* EXECUTED FOR CLASS @V200930 00599000
QRYCLC CLC 0(0,R3),0(R1) 00600000
SPACE 00601000
QRYMODS DC A(DMKCQGEN) INDEX 0 MODULE @V326538 00602000
DC A(DMKCQPRV) INDEX 4 MODULE @V200930 00603000
DC A(DMKCQREY) INDEX 8 MODULE @V200930 00604000
DC A(DMKCQYEY) INDEX 12 MODULE 00604500
DC A(0) RESERVE FOR FUTURE USE @VA09413 00604610
DC A(DMKJRLQU) INDEX 20 MODULE @V60BBBB 00604700
DC A(DMKCQHQU) INDEX 24 MODULE @VA13360 00604800
DC A(HDKCQURY) INDEX 28 HRC QUERY MODULE HRC019DK 00604900
DC A(HDKCQALO) INDEX 32 HRC QUERY MODULE HRC030DK 00604950
SPACE 00605000
SETMODS DC A(DMKCFSET) INDEX 0 MODULE @V326538 00605200
DC A(DMKCFOEX) INDEX 4 MODULE @V326538 00605400
DC A(0) RESERVE FOR FUTURE USE @VA09413 00605610
DC A(DMKJRLSE) INDEX 12 MODULE @V60BBBB 00605800
SPACE 00606000
QRYCALL SR R7,R7 CLEAR INDEX REG @V200930 00607000
IC R7,10(R3) GET MODULE INDEX @V200930 00608000
SR R6,R6 CLEAR FOR INDEX @V200930 00610000
IC R6,11(R3) GET BRANCH INDEX @V200930 00611000
SR R2,R2 ZERO RETURN CODE REGISTER 00612000
CLI SAVEWRK1,X'00' IS THIS A QUERY REQUEST? @V326538 00612250
BNE LOADSET NOPE, PROCESS AS SET @V326538 00612500
L R15,QRYMODS(R7) LOAD FOR CALL @V326538 00612750
CALL (15) CALL APPROPRIATE ROUTINE @V326538 00613000
SPACE 00613250
* CALLED ROUTINE WILL GIVE UP SAVEAREA VIA SVC 16, THUS 00613500
* WILL NOT RETURN HERE WHEN FINISHED; INSTEAD WILL RETURN 00613750
* DIRECT TO CFM. 00614000
SPACE 00614250
LOADSET L R15,SETMODS(R7) LOAD FOR CALL @V326538 00614500
CALL (15) CALL APPROPRIATE ROUTINE @V326538 00614750
SPACE 00615000
* CALLED ROUTINE WILL GIVE UP SAVEAREA VIA SVC 16, THUS 00615250
* WILL NOT RETURN HERE WHEN FINISHED; INSTEAD WILL RETURN 00615500
* DIRECT TO CFM. 00615750
SPACE 4 00616000
CFC003 LA R2,3 INVALID OPTION - OPTN @V326538 00616250
B CALLERM GO SEND ERROR MESSAGE @V326538 00616500
SPACE 2 00616750
CFC026 LA R2,26 OPERAND MISSING OR INVALID @V326538 00617000
SLR R1,R1 ZROE PARM REG 00619000
B CALLERM GO SEND ERROR MESSAGE 00620000
EJECT 00621000
* C'COMMAND ',AL1(TRUNC CNT,CLASS,MOD,SUBFUNC INDEX) 00621500
QRYLIST DS 0F DECODING LIST FOR QUERY OPERANDS @V200820 00622000
DC C'SYSTEM ',AL1(3,B,4,4) MODULE 04 = DMKCQPRV @V200820 00623000
DC C'DASD ',AL1(2,B,4,8) @V200820 00624000
DC C'TAPES ',AL1(2,B,4,12) @V200820 00625000
DC C'LINES ',AL1(5,B,4,16) @V200820 00626000
DC C'UR ',AL1(2,B+D,4,20) @V200820 00627000
DC C'STORAGE ',AL1(4,B,4,24) @V200820 00628000
DC C'ALL ',AL1(3,B,4,28) @V200820 00629000
DC C'LINKS ',AL1(1,G,4,32) @V200820 00630000
DC C'GRAF ',AL1(2,B,4,36) @VM08761 00631000
DC C'TDSK ',AL1(2,B,4,40) @V200820 00632000
DC C'PROCESSR',AL1(4,A+B+C+E+G,4,44) @V5BC0AB 00632150
DC C'VIRTUAL ',AL1(1,G,0,16) MODULE 00 = DMKCQGEN @VA13360 00633000
DC C'DASD ',AL1(2,G,0,20) @V200820 00640000
DC C'TAPES ',AL1(2,G,0,24) @V200820 00641000
DC C'LINES ',AL1(5,G,0,28) @V200820 00642000
DC C'UR ',AL1(2,G,0,32) @V200820 00643000
DC C'STORAGE ',AL1(4,G,0,36) @V200820 00644000
DC C'ALL ',AL1(3,G,0,40) @V200820 00645000
DC C'GRAF ',AL1(2,G,0,44) @VM08761 00646000
DC C'CONSOLE ',AL1(3,G,0,48) @V200820 00647000
DC C'CHANNELS',AL1(4,G,0,52) @VM03169 00648000
DC C'FILES ',AL1(1,D+G,8,0) MODULE 08 = DMKCQREY @V200820 00649000
DC C'SET ',AL1(1,G,8,4) 00650000
DC C'DUMP ',AL1(4,B,8,8) 00650600
DC C'PAGING ',AL1(3,A+E,8,12) 00651200
DC C'HOLD ',AL1(1,D,8,16) 00651800
DC C'PRIORITY',AL1(5,A+C+E,8,20) 00652400
DC C'TERMINAL',AL1(4,G,8,24) 00653000
DC C'AFFINITY',AL1(3,A+E,8,28) AFFINITY @V4075A0 00653300
DC C'TIME ',AL1(1,G,12,0) MODULE 12 = DMKCQYEY 00653600
DC C'LOGMSG ',AL1(3,A+B+C+D+E+F+G,12,4) 00654200
DC C'NAMES ',AL1(1,A+B+C+D+E+F+G,12,8) 00654800
DC C'USERS ',AL1(1,A+B+C+D+E+F+G,12,12) 00655400
QRYPF DC C'PF ',AL1(2,G+H,12,16) 00656000
DC C'SASSIST ',AL1(3,A+E,12,20) 00656600
DC C'CPASSIST',AL1(3,A+E,12,24) 00657200
DC C'CPUID ',AL1(3,G,12,28) @V60BBBB 00658200
DC C'USERID ',AL1(5,G,12,32) HRC107DK 00658300
DC C'JOURNAL ',AL1(2,A,20,0) MODULE 20 = DMKJRLQU @VA13360 00659200
DC C'READER ',AL1(1,D+G,24,0) MOD 24 = DMKCQHQU @VA13360 00659600
DC C'RDR ',AL1(3,D+G,24,0) @VA13360 00660000
DC C'PRINTER ',AL1(1,D+G,24,4) @VA13360 00660400
DC C'PRT ',AL1(3,D+G,24,4) @VA13360 00660800
DC C'PUNCH ',AL1(2,D+G,24,8) @VA13360 00661200
DC C'PCH ',AL1(3,D+G,24,8) HRC019DK 00661650
DC C'PRIV ',AL1(4,G,28,0) MODULE 28 = HDKCQURY HRC019DK 00661700
DC C'MAXIMUM ',AL1(3,A+C+E,28,4) HRC019DK 00661750
DC C'CPLEVEL ',AL1(2,G,28,8) HRC019DK 00661800
DC C'ALLOC ',AL1(5,A+C+E,32,0) MOD 32 = HDKCQALO HRC030DK 00661820
QRYLAST EQU *-12 HRC019DK 00661850
SPACE 00662000
QRYCLASB DC C' ',AL1(0,0,4,0) DEFAULT FOR CLASS B @V200820 00663000
QRYCLASG DC C' ',AL1(0,0,0,0) DEFAULT FOR CLASS G @V200820 00664000
EJECT 00665000
SETLIST DS 0F DECODING LIST FOR SET OPERANDS @V326538 00665010
DC C'ASSIST ',AL1(2,G,0,00) MODULE 0 = DMKCFS @V326538 00665020
DC C'NOTRANS ',AL1(4,G,0,04) @V326538 00665030
DC C'TIMER ',AL1(5,G,0,08) @V326538 00665040
DC C'EMSG ',AL1(4,G,0,12) @V326538 00665050
DC C'IMSG ',AL1(4,G,0,16) @V326538 00665060
DC C'ACNT ',AL1(4,G,0,20) @V326538 00665070
DC C'PAGEX ',AL1(5,G,0,24) @V326538 00665080
DC C'LINEDIT ',AL1(5,G,0,28) @V326538 00665090
DC C'RUN ',AL1(3,G,0,32) @V326538 00665100
DC C'WNG ',AL1(3,G,0,36) @V326538 00665110
DC C'MSG ',AL1(3,G,0,40) @V326538 00665120
DC C'ECMODE ',AL1(2,G,0,44) @V326538 00665130
DC C'ISAM ',AL1(4,G,0,48) @V326538 00665140
DC C'AUTOPOLL',AL1(5,G,0,52) @V386198 00665200
SETPF DC C'PF ',AL1(2,G,0,56) @V386198 00665260
DC C'CPUID ',AL1(3,G,0,60) V407466 00665290
DC C'AFFINITY',AL1(3,A+G,0,64) @V4075A0 00665297
DC C'SMSG ',AL1(2,G,0,68) @V60C2B8 00665307
DC C'PRIV ',AL1(4,G,0,72) HRC018DK 00665313
DC C'PRIORITY',AL1(5,C,4,00) MODULE 4 = DMKCFO HRC026DK 00665360
DC C'FAVORED ',AL1(5,C,4,04) HRC026DK 00665400
DC C'RESERVE ',AL1(3,C,4,08) HRC026DK 00665440
DC C'SASSIST ',AL1(3,C,4,12) HRC026DK 00665480
DC C'CPASSIST',AL1(3,C,4,16) HRC026DK 00665520
DC C'RECORD ',AL1(3,F,4,20) @V386198 00665620
DC C'MODE ',AL1(4,F,4,24) @V386198 00665680
DC C'DUMP ',AL1(4,B,4,28) @V386198 00665740
DC C'LOGMSG ',AL1(3,B,4,32) @V60BBBB 00665780
DC C'MAX ',AL1(3,A,4,36) HRC018DK 00665800
DC C'STBYPASS',AL1(3,G,4,40) HRC068DK 00665810
SETLAST DC C'JOURNAL ',AL1(2,C,12,0) MODULE 12 = DMKJRLSE HRC026DK 00665830
EJECT 00665860
LTORG @V200820 00666000
EJECT 00667000
PSA 00668000
COPY CONBUF 00669000
COPY DEVTYPES 00670000
COPY EQU 00671000
COPY RBLOKS 00672000
COPY SAVE 00673000
COPY TIMER @V200820 00674000
COPY TREXT @VA01078 00675000
COPY VBLOKS 00676000
COPY VMBLOK 00677000
* COMMAND CLASS EQUATES 00678000
A EQU VMCLASSA 00679000
B EQU VMCLASSB 00680000
C EQU VMCLASSC 00681000
D EQU VMCLASSD 00682000
E EQU VMCLASSE 00683000
F EQU VMCLASSF 00684000
G EQU VMCLASSG 00685000
H EQU VMCLASSH 00686000
NOCLASS EQU X'01' 00687000
END 00688000