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