JRL TITLE 'DMKJRL (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE @V60BBBB 00002000
*. 00003000
* MODULE NAME - 00004000
* 00005000
* DMKJRL - SECURITY JOURNALING 00006000
* 00007000
* FUNCTION - 00008000
* 00009000
* TO PERFORM ALL FUNCTIONS NECESSARY TO JOURNAL THE 00010000
* INSTANCES OF INVALID LOGON AND LINK PASSWORDS, 00011000
* TO JOURNAL SUCCESSFULL LINKS TO PROTECTED MINI-DISKS, 00012000
* AND TO RESPOND TO SET/QUERY JOURNAL COMMANDS. 00013000
* 00014000
* ATTRIBUTES - 00015000
* 00016000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00017000
* 00018000
* ENTRY POINTS - 00019000
* 00020000
* DMKJRLQU - 'QUERY JOURNAL' 00021000
* DMKJRLSE - 'SET JOURNAL' 00022000
* DMKJRLLO - LOGON (BOTH SUCCESSFUL LOGONS AND THOSE 00023000
* WHICH FAIL BECAUSE OF INVALID PASSWORDS). 00024000
* DMKJRLSC - SUCCESSFUL LINK 00025000
* DMKJRLIL - LINK (ATTEMPTED BUT FAILED BECAUSE OF 00026000
* INVALID PASSWORD). 00027000
* 00028000
* ENTRY CONDITIONS - 00029000
* 00030000
* (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS) 00031000
* 00032000
* EXIT CONDITIONS - 00033000
* 00034000
* (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS) 00035000
* 00036000
* CALLS TO OTHER ROUTINES - 00037000
* DMKACOQU - GENERATE ACCOUNTING RECORD 00038000
* DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 00039000
* DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00040000
* DMKCVTDT - OBTAIN DATE-TIME 00041000
* DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00042000
* DMKFREE - OBTAIN FREE STORAGE 00043000
* DMKFRET - RETURN STORAGE 00044000
* DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00045000
* DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 00046000
* DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00047000
* DMKSCNRD - GET REAL DEVICE ADDRESS 00048000
* 00049000
* 00050000
* EXTERNAL REFERENCES - 00051000
* 00052000
* DMKSYSJR - THE JOURNALING AND PASSWORD SUPPRESSION 00053000
* CONTROL BLOCK (JPSCBLOK). 00054000
* 00055000
* TABLES / WORK AREAS - 00056000
* 00057000
* PWDIBLOK - THE PASSWORD INVALID BLOCK. 00058000
* 00059000
* REGISTER USAGE - 00060000
* (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS) 00061000
* 00062000
* NOTES - 00063000
* ALL ROUTINES WHICH CALL AN ENTRY POINT IN DMKJRL 00064000
* HOLD THE GLOBAL SYSTEM LOCK. THEREFORE THIS ROUTINE 00065000
* NEED NOT PERFORM ANY AP DICTATED HANDSTANDS. IT IS 00066000
* WRITTEN AS IT WOULD BE IF IT RAN ONLY ON A UP. 00067000
* 00068000
* OPERATION - 00069000
* (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS.) 00070000
* 00071000
* MESSAGES - 00072000
* 00073000
* RESPONSE TO 'QUERY JOURNAL' 00074000
* 00075000
* 'JOURNAL LOGON XXX LINK XXX' 00076000
* 00077000
* WHERE XXX IS REPLACED BY ON OR OFF, AS APPROPRIATE. 00078000
* 00079000
* ERROR MESSAGE (SENT TO USERID DEFINED IN SYSJRL MACRO IN 00080000
* DMKSYS AT SYSGEN TIME.) 00081000
* DMKJRL145I USERID:<USERID> AT <TERM-RADDR> WITH 00082000
* INVALID <TYPE> PASSWORD NO. <XX> (<PSWD>) HAS 00083000
* VIOLATED THE LIMIT OF <YY> 00084000
* 00085000
*. 00086000
EJECT 00087000
COPY OPTIONS @V60BBBB 00088000
COPY LOCAL @V60BBBB 00089000
SPACE 3 00090000
DMKJRL CSECT @V60BBBB 00091000
SPACE 1 00092000
MODID DC CL8'DMKJRL' PAGEABLE MODULE IDENTIFIER @V60BBBB 00093000
SPACE 1 00094000
* ENTRY DMKJRLQU 'QUERY JOURNAL' 00095000
* ENTRY DMKJRLSE 'SET JOURNAL' 00096000
* ENTRY DMKJRLLO LOGON (SUCCESSFUL OR FAILED 00097000
* BECAUSE OF INVALID PASSWORD). 00098000
* ENTRY DMKJRLSL SUCCESSFUL LINK 00099000
* ENTRY DMKJRLIL LINK ATTEMPT WITH INVALID 00100000
* PASSWORD. 00101000
SPACE 1 00102000
EXTRN DMKACOQU @V60BBBB 00103000
EXTRN DMKCVTBD,DMKCVTBH,DMKCVTDT @VMI0039 00104000
EXTRN DMKERMSG @V60BBBB 00105000
EXTRN DMKQCNWT @V60BBBB 00106000
EXTRN DMKSCNAU,DMKSCNFD,DMKSCNRD @V60BBBB 00107000
EXTRN DMKSYSJR @V60BBBB 00108000
SPACE 1 00109000
USING PSA,R0 FOR ALL ENTRIES @V60BBBB 00110000
USING VMBLOK,R11 " @V60BBBB 00111000
USING DMKJRL,R12 " @V60BBBB 00112000
USING SAVEAREA,R13 " @V60BBBB 00113000
* TITLE ' DMKJRLQU' 00114000
* 00115000
* ENTRY POINT NAME - 00116000
* 00117000
* DMKJRLQU - 'QUERY JOURNAL' 00118000
* 00119000
* FUNCTION - 00120000
* 00121000
* TO DISPLAY THE STATUS OF THE JOURNALING FUNCTION. 00122000
* 00123000
* ATTRIBUTES - 00124000
* 00125000
* - REENTRANT, PAGEABLE, CALLED VIA SVC 00126000
* - THIS COMMAND REQUIRES PRIVILEGE CLASS A 00127000
* 00128000
* ENTRY CONDITIONS - 00129000
* 00130000
* R0 - KEYWORD LENGTH (FROM DMKSCNFD) 00131000
* R1 - KEYWORD ADDRESS (FROM DMKSCNFD) 00132000
* R9 - ADDRESS OF COMMAND LINE BUFFER 00133000
* R11- ADDRESS OF VMBLOK 00134000
* R12- BASE ADDRESS OF MODULE 00135000
* R13- ADDRESS OF SAVEAREA 00136000
* 00137000
* EXIT CONDITIONS - 00138000
* 00139000
* IF THE QUERY JOURNAL COMMAND IS VALID, EXIT IS ALWAYS 00140000
* NORMAL. OTHERWISE EXIT IS VIA DMKERMSG. 00141000
* 00142000
* CALLS TO OTHER ROUTINES - 00143000
* 00144000
* DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00145000
* DMKQCNWT - SEND RESPONSE TO USER TERMINAL 00146000
* 00147000
* EXTERNAL REFERENCES - 00148000
* 00149000
* DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00150000
* CONTROL BLOCK (JPSCBLOK). 00151000
* 00152000
* TABLES / WORK AREAS - 00153000
* 00154000
* NONE 00155000
* 00156000
* REGISTER USAGE - 00157000
* 00158000
* GPR 0 = KEYWORD LENGTH (FROM DMKSCNFD) 00159000
* GPR 1 = KEYWORD ADDRESS (FROM DMKSCNFD) 00160000
* GPR 3 = ADDRESS OF JPSCBLOK 00161000
* GPR 12 = BASE REGISTER 00162000
* GPR 13 = ADDRESS OF STANDARD SAVE AREA 00163000
* GPR 14 = STANDARD RETURN REGISTER 00164000
* GPR 15 = STANDARD ENTRY POINT REGISTER 00165000
* 00166000
* GPRS 2, AND 4-11 ARE NOT USED. 00167000
* 00168000
* NOTES - 00169000
* THIS ROUTINE IS CALLED BY DMKCFCQU. SINCE THERE IS NO 00170000
* NEED TO RETURN TO DMKCFCQU, THE SAVEAREA POINTED TO 00171000
* BY REG 13 WILL BE RELEASED. THUS, WHEN THIS ROUTINE 00172000
* RETURNS IT WILL GO DIRECTLY BACK TO CFM TO SCAN FOR 00173000
* THE NEXT COMMAND. 00174000
* 00175000
* OPERATION - 00176000
* 1. IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON 00177000
* THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE 00178000
* JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE, 00179000
* AND RETURN. 00180000
* 00181000
* 2. OTHERWISE INITIALIZE WORK AREA WITH MESSAGE INDICATING 00182000
* BOTH LOGON AND LINK JOURNALING 'OFF'. UPDATE 'OFF' TO 00183000
* 'ON', IF REQUIRED, BASED ON STATUS REFLECTED IN 00184000
* JPSCBLOK. 00185000
* 00186000
* 3. DISPLAY THE RESPONSE. 00187000
* 00188000
* 4. RETURN TO DMKCFM. 00189000
* 00190000
* MESSAGES - 00191000
* 00192000
* RESPONSE TO 'QUERY JOURNAL' 00193000
* 00194000
* 'JOURNAL: LOGON- XXX, LINK- XXX' 00195000
* 00196000
* WHERE XXX IS REPLACED BY ON OR OFF, AS APPROPRIATE. 00197000
* 00198000
EJECT 00199000
*-------------------------------------------------------------* 00200000
* - RETURN PREVOIUS SAVE AREA. * 00201000
* - SET UP BASE REGISTER. * 00202000
* - SAVE SOME REGISTERS IN NEW SAVE AREA. * 00203000
*-------------------------------------------------------------* 00204000
SPACE 1 00205000
ENTRY DMKJRLQU @V60BBBB 00206000
DMKJRLQU DS 0H QUERY STATUS OF JOURNALING @V60BBBB 00207000
USING *,R12 ESTABLISH ADDRESSABILITY @V60BBBB 00208000
SVC 16 GIVE UP SAVEAREA @V60BBBB 00209000
SL R12,=A(DMKJRLQU-DMKJRL) GET BEGIN ADDRESS @V60BBBB 00210000
USING DMKJRL,R12 TELL ASSEMBLER @V60BBBB 00211000
STM R0,R1,SAVER0 SAVE R1 &R2 IN NEW SAVE AREA @V60BBBB 00212000
EJECT 00213000
*-------------------------------------------------------------* 00214000
* - IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON * 00215000
* THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE * 00216000
* JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE. * 00217000
*-------------------------------------------------------------* 00218000
SPACE 1 00219000
L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00220000
USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00221000
TM JRLSQOK,L'JRLSQOK SET/QUERY SUPPORTED? @V60BBBB 00222000
BO QU010 BR IF YES @V60BBBB 00223000
* THE LENGTH AND ADDRESS ARE STILL IN R0 & R1. 00224000
LA R2,3 INVALID OPTION - JOURNAL @V60BBBB 00225000
ICM R0,B'1110',=C'CFC' MAKE IT LOOK AS IT ALWAYS @V60BBBB 00226000
* HAS (BEFORE JOURNALING.) 00227000
CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00228000
* 00229000
* DMKERMSG WILL EXIT AND NOT RETURN HERE. 00230000
* 00231000
EJECT 00232000
*-------------------------------------------------------------* 00233000
* - INITIALIZE WORK AREA WITH MESSAGE INDICATING BOTH * 00234000
* LOGON AND LINK JOURNALING 'OFF'. UPDATE 'OFF' TO * 00235000
* 'ON', IF REQUIRED, BASED ON STATUS REFLECTED IN * 00236000
* JPSCBLOK. * 00237000
*-------------------------------------------------------------* 00238000
SPACE 1 00239000
QU010 MVC QJRESP(QJRL),=C'JOURNAL: LOGON- OFF, LINK- OFF' @V60BBBB 00240000
TM LOGONJRL,L'LOGONJRL LOGON JOURNALING? @V60BBBB 00241000
BZ QU020 BR IF NOT @V60BBBB 00242000
MVC QJLOS,=C'ON ' INDICATE 'ON' STATUS @V60BBBB 00243000
QU020 TM LINKJRL,L'LINKJRL+L'LINKJRLI LINK JOURNALING? @V60BBBB 00244000
BZ QU030 BR IF NOT @V60BBBB 00245000
MVC QJLIS,=C'ON ' INDICATE 'ON' STATUS @V60BBBB 00246000
EJECT 00247000
*-------------------------------------------------------------* 00248000
* - NOW DISPLAY THE RESPONSE. * 00249000
* - THEN RETURN TO DMKCFM. * 00250000
*-------------------------------------------------------------* 00251000
SPACE 1 00252000
QU030 LA R0,QJRL SET MESSAGE LENGTH @V60BBBB 00253000
LA R1,QJRESP SET MESSAGE ADDRESS @V60BBBB 00254000
CALL DMKQCNWT,PARM=NORET SEND THE RESPONSE @V60BBBB 00255000
EXIT RETURN RETURN TO CFM @V60BBBB 00256000
DROP R3 @V60BBBB 00257000
* TITLE ' DMKJRLSE' 00258000
* 00259000
* ENTRY POINT NAME - 00260000
* 00261000
* DMKJRLSE - 'SET JOURNAL' 00262000
* 00263000
* FUNCTION - 00264000
* 00265000
* TO SET THE JOURNAL-LOGON OR JOURNAL-LINK FUNCTIONS 00266000
* ON OR OFF. 00267000
* 00268000
* ATTRIBUTES - 00269000
* 00270000
* - REENTRANT, PAGEABLE, CALLED VIA SVC 00271000
* - THIS COMMAND REQUIRES PRIVILEGE CLASS A 00272000
* 00273000
* ENTRY CONDITIONS - 00274000
* 00275000
* R0 - KEYWORD LENGTH (FROM DMKSCNFD) 00276000
* R1 - KEYWORD ADDRESS (FROM DMKSCNFD) 00277000
* R9 - ADDRESS OF COMMAND LINE BUFFER 00278000
* R11- ADDRESS OF VMBLOK 00279000
* R12- BASE ADDRESS OF MODULE 00280000
* R13- ADDRESS OF SAVEAREA 00281000
* 00282000
* EXIT CONDITIONS - 00283000
* 00284000
* IF THE SET JOURNAL COMMAND IS VALID, EXIT IS ALWAYS 00285000
* NORMAL. OTHERWISE EXIT IS VIA DMKERMSG. 00286000
* 00287000
* CALLS TO OTHER ROUTINES - 00288000
* 00289000
* DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00290000
* DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00291000
* DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00292000
* 00293000
* EXTERNAL REFERENCES - 00294000
* 00295000
* DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00296000
* CONTROL BLOCK (JPSCBLOK). 00297000
* 00298000
* TABLES / WORK AREAS - 00299000
* 00300000
* NONE 00301000
* 00302000
* REGISTER USAGE - 00303000
* 00304000
* GPR 0 = KEYWORD LENGTH (FROM DMKSCNFD) 00305000
* GPR 1 = KEYWORD ADDRESS (FROM DMKSCNFD) 00306000
* GPR 3 = ADDRESS OF JPSCBLOK 00307000
* GPR 12 = BASE REGISTER 00308000
* GPR 13 = ADDRESS OF STANDARD SAVE AREA 00309000
* GPR 14 = STANDARD RETURN REGISTER 00310000
* GPR 15 = STANDARD ENTRY POINT REGISTER 00311000
* 00312000
* GPRS 2, 4, AND 5 ARE USED AS WORK REGISTERS. 00313000
* GPRS 6-11 ARE NOT USED. 00314000
* 00315000
* NOTES - 00316000
* THIS ROUTINE IS CALLED BY DMKCFCQU. SINCE THERE IS NO 00317000
* NEED TO RETURN TO DMKCFCQU, THE SAVEAREA POINTED TO 00318000
* BY REG 13 WILL BE RELEASED. THUS, WHEN THIS ROUTINE 00319000
* RETURNS IT WILL GO DIRECTLY BACK TO CFM TO SCAN FOR 00320000
* THE NEXT COMMAND. 00321000
* 00322000
* OPERATION - 00323000
* 1. IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON 00324000
* THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE 00325000
* JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE, 00326000
* AND RETURN. 00327000
* 2. SCAN FOR NEXT WORD IN COMMAND BUFFER. 00328000
* IF IT IS NOT 'LOGON' OR 'LINK', ISSUE ERROR MESSAGE 00329000
* AND EXIT. 00330000
* 3. SET INTERNAL SWITCH TO REMEMBER WHETHER IT'S 'LOGON' 00331000
* OR 'LINK'. 00332000
* SCAN FOR NEXT WORD IN COMMAND BUFFER. 00333000
* IF IT IS NOT 'ON' OR 'OFF' OR NULL, ISSUE ERROR 00334000
* MESSAGE, AND EXIT. 00335000
* 4. IF LOGON JOURNALING IS BEING TURNED OFF, TURN OFF 00336000
* LOGONJRL BIT IN THE JPSCBLOK AND FREE THE CHAIN OF 00337000
* PWDIBLOK'S, AND EXIT. 00338000
* 5. IF LINK JOURNALING IS BEING TURNED OFF, SIMPLY TURN 00339000
* OFF THE LINKJRL BITS IN THE JPSCBLOK AND EXIT. 00340000
* 6. IF LINK OR LOGON JOURNALING IS BEING TURNED ON, TURN 00341000
* ON THE APPROPRIATE JOURNALING BIT(S) IN JPSCBLOK, 00342000
* AND EXIT. 00343000
* 00344000
* MESSAGES - 00345000
* NONE. 00346000
EJECT 00347000
*-------------------------------------------------------------* 00348000
* - RETURN PREVOIUS SAVE AREA. * 00349000
* - SET UP BASE REGISTER. * 00350000
* - SAVE SOME REGISTERS IN NEW SAVE AREA. * 00351000
*-------------------------------------------------------------* 00352000
SPACE 1 00353000
ENTRY DMKJRLSE @V60BBBB 00354000
DMKJRLSE DS 0H SET STATUS OF JOURNALING @V60BBBB 00355000
USING *,R12 ESTABLISH ADDRESSABILITY @V60BBBB 00356000
SVC 16 GIVE UP SAVEAREA @V60BBBB 00357000
SL R12,=A(DMKJRLSE-DMKJRL) GET BEGIN ADDRESS @V60BBBB 00358000
USING DMKJRL,R12 TELL ASSEMBLER @V60BBBB 00359000
STM R0,R1,SAVER0 SAVE R1 &R2 IN NEW SAVE AREA @V60BBBB 00360000
EJECT 00361000
*-------------------------------------------------------------* 00362000
* - IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON * 00363000
* THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE * 00364000
* JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE. * 00365000
*-------------------------------------------------------------* 00366000
SPACE 1 00367000
L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00368000
USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00369000
TM JRLSQOK,L'JRLSQOK SET/QUERY SUPPORTED? @V60BBBB 00370000
BO SE010 BR IF YES @V60BBBB 00371000
* THE LENGTH AND ADDRESS ARE STILL IN R0 & R1. 00372000
LA R2,3 INVALID OPTION - JOURNAL @V60BBBB 00373000
ICM R0,B'1110',=C'CFC' MAKE IT LOOK AS IT ALWAYS @V60BBBB 00374000
* HAS (BEFORE JOURNALING). 00375000
CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00376000
* 00377000
* DMKERMSG WILL EXIT AND NOT RETURN HERE. 00378000
* 00379000
EJECT 00380000
*-------------------------------------------------------------* 00381000
* - SCAN FOR NEXT WORD IN COMMAND BUFFER. * 00382000
* - IF IT IS NOT 'LOGON' OR 'LINK', ISSUE ERROR MESSAGE, * 00383000
* AND EXIT. * 00384000
*-------------------------------------------------------------* 00385000
SPACE 1 00386000
SE010 CALL DMKSCNFD GET NEXT WORD IN COMMAND @V60BBBB 00387000
BZ SE020 BR IF SOMETHING'S THERE @V60BBBB 00388000
SLR R1,R1 INDICATE NO DATA PASSED @V60BBBB 00389000
ICM R0,B'1110',MODID+3 SET MODULE IDENTIFIER @V60BBBB 00390000
LA R2,26 'OPERAND MISSING' MESSAGE @V60BBBB 00391000
CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00392000
* 00393000
* DMKERMSG WILL EXIT AND NOT RETURN HERE. 00394000
* 00395000
SE020 MVI SETSW,X'00' INITIALIZE SWITCHES @V60BBBB 00396000
LA R4,=CL8'LOGON' SETUP FOR SUBROUTINE @V60BBBB 00397000
LA R5,2 SET MINIMUM TRUNC @V60BBBB 00398000
BAL R14,CKKEYW WAS IT 'LOGON' @V60BBBB 00399000
BZ SE030 BR IF IT WAS @V60BBBB 00400000
LA R4,=CL8'LINK' SET UP TO CHECK FOR 'LINK' @V60BBBB 00401000
* MINIMUM TRUNC OF 2 IS STILL IN R5. 00402000
BAL R14,CKKEYW WAS IT 'LINK' @V60BBBB 00403000
BZ SE040 BR IF IT WAS @V60BBBB 00404000
* SEND ERROR MESSAGE. 00405000
SLR R1,R1 INDICATE NO DATA PASSED @V60BBBB 00406000
ICM R0,B'1110',MODID+3 SET MODULE IDENTIFIER @V60BBBB 00407000
LA R2,26 'OPERAND INVALID' MESSAGE @V60BBBB 00408000
CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00409000
* 00410000
* DMKERMSG WILL EXIT AND NOT RETURN HERE. 00411000
* 00412000
EJECT 00413000
*-------------------------------------------------------------* 00414000
* - SET INTERNAL SWITCH TO REMEMBER WHETHER IT'S 'LOGON' * 00415000
* OR 'LINK'. * 00416000
* - SCAN FOR NEXT WORD IN COMMAND BUFFER. * 00417000
* - IF IT IS NOT 'ON' OR 'OFF' OR NULL, ISSUE ERROR * 00418000
* MESSAGE, AND EXIT. * 00419000
*-------------------------------------------------------------* 00420000
SPACE 1 00421000
SE030 OI SELOGON,L'SELOGON INDICATE SET LOGON @V60BBBB 00422000
B SE050 CONTINUE @V60BBBB 00423000
SE040 OI SELINK,L'SELINK INDICATE SET LINK @V60BBBB 00424000
SE050 CALL DMKSCNFD CHECK FOR NEXT KEYWORD @V60BBBB 00425000
BNZ SE100 BR IF NULL- TREAT AS 'ON' @V60BBBB 00426000
LA R4,=C'ON' SETUP TO CHECK FOR 'ON' @V60BBBB 00427000
LA R5,2 MINIMUM TRUNC @V60BBBB 00428000
BAL R14,CKKEYW GO CHECK IT @V60BBBB 00429000
BZ SE100 BR IF IS WAS 'ON' @V60BBBB 00430000
LA R4,=C'OFF' SETUP TO CHECK FOR 'OFF' @V60BBBB 00431000
LA R5,3 MINIMUM TRUNC @V60BBBB 00432000
BAL R14,CKKEYW GO CHECK IT @V60BBBB 00433000
BZ SE060 BR IF IT WAS 'OFF' @V60BBBB 00434000
* SEND ERROR MESSAGE. 00435000
SLR R1,R1 INDICATE NO DATA PASSED @V60BBBB 00436000
ICM R0,B'1110',MODID+3 SET MODULE IDENTIFIER @V60BBBB 00437000
LA R2,26 'OPERAND INVALID' MESSAGE @V60BBBB 00438000
CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00439000
* 00440000
* DMKERMSG WILL EXIT AND NOT RETURN HERE. 00441000
* 00442000
EJECT 00443000
*-------------------------------------------------------------* 00444000
* - IF LOGON JOURNALING IS BEING TURNED OFF, TURN OFF * 00445000
* LOGONJRL BIT IN THE JPSCBLOK AND FREE THE CHAIN OF * 00446000
* PWDIBLOK'S, AND EXIT. * 00447000
* - IF LINK JOURNALING IS BEING TURNED OFF, SIMPLY TURN * 00448000
* OFF THE LINKJRL BITS IN THE JPSCBLOK AND EXIT. * 00449000
*-------------------------------------------------------------* 00450000
SPACE 1 00451000
SE060 DS 0H @V60BBBB 00452000
TM SELOGON,L'SELOGON LOGON? @V60BBBB 00453000
BNO SE070 BR IF NOT @V60BBBB 00454000
NI LOGONJRL,X'FF'-L'LOGONJRL TURN OFF LOGON @V60BBBB 00455000
* JOURNALING. 00456000
* NOW FREE ANY PWDIBLOKS WHICH ARE ON THE CHAIN 00457000
L R1,JPSPCHN GET ADDRESS OF FIRST PWDIBLOK @V60BBBB 00458000
LTR R1,R1 ANYONE HOME? @V60BBBB 00459000
SE065 BZ SEEXIT BR IF NOT- NO BLOCKS LEFT @V60BBBB 00460000
USING PWDIBLOK,R1 ESTAB. ADDRESABILITY @V60BBBB 00461000
L R4,PWDCHAIN GET ADDRESS OF NEXT PWDIBLOK @V60BBBB 00462000
ST R4,JPSPCHN DECHAIN PWDIBLOK @V60BBBB 00463000
LA R0,PWDSIZE DOUBLEWORDS TO FRET @V60BBBB 00464000
CALL DMKFRET RETURN THE BLOCK @V60BBBB 00465000
LTR R1,R4 ANY MORE PWDIBLOK'S LEFT? @V60BBBB 00466000
B SE065 CONTINUE @V60BBBB 00467000
DROP R1 @V60BBBB 00468000
SE070 DS 0H @V60BBBB 00469000
NI LINKJRL,X'FF'-L'LINKJRL-L'LINKJRLI TURN OFF @V60BBBB 00470000
* LINK JOURNALING 00471000
B SEEXIT RETURN @V60BBBB 00472000
EJECT 00473000
*-------------------------------------------------------------* 00474000
* - 'ON' OR NULL WAS SPECIFIED. TURN ON APPROPRIATE * 00475000
* JOURNALING BIT IN JPSCBLOK, AND EXIT. * 00476000
*-------------------------------------------------------------* 00477000
SPACE 1 00478000
SE100 TM SELINK,L'SELINK SET LINK JOURNALING ON? @V60BBBB 00479000
BO SE110 BR IF YES @V60BBBB 00480000
OI LOGONJRL,L'LOGONJRL TURN ON LOGON JOURNALING @V60BBBB 00481000
B SEEXIT RETURN @V60BBBB 00482000
SE110 DS 0H @V60BBBB 00483000
OI LINKJRL,L'LINKJRL+L'LINKJRLI TURN ON LINK @V60BBBB 00484000
* JOURNALING 00485000
EJECT 00486000
*-------------------------------------------------------------* 00487000
* RETURN FROM SET JOURNAL PROCESSING. * 00488000
*-------------------------------------------------------------* 00489000
SPACE 1 00490000
SEEXIT EXIT RETURN RETURN TO DMKCFM @V60BBBB 00491000
DROP R3 @V60BBBB 00492000
EJECT 00493000
*-------------------------------------------------------------* 00494000
* - THIS SUBROUTINE CHECKS TO SEE IF THE KEYWORD JUST * 00495000
* FOUND BY DMKSCNFD MATCHES OR IS A VALID * 00496000
* TRUNCATION FOR THE 8 CHARACTER STRING WHOSE * 00497000
* ADDRESS IS IN REGISTER 4 AND WHOSE MINIMUM * 00498000
* TRUNCATION IS IN REGISTER 5. REGISTERS 0 AND * 00499000
* 1 ARE ASSUMED TO BE AS THEY WERE UPON RETURN * 00500000
* FROM DMKSCNFD. THE RETURN ADDRESS IS ASSUMED TO * 00501000
* BE IN REGISTER 14. A MATCH IS INDICATED BY CC=0. * 00502000
* THIS SUBROUTINE USES R15 AS A WORK REGISTER. ALL * 00503000
* OTHER REGISTERS ARE LEFT UNCHANGED. * 00504000
*-------------------------------------------------------------* 00505000
SPACE 1 00506000
CKKEYW DS 0H @V60BBBB 00507000
CR R0,R5 IS IT LONG ENOUGH? @V60BBBB 00508000
BLR R14 RETURN IF NOT (WITH CC NE 0) @V60BBBB 00509000
LR R15,R0 GET LENGTH TO R15 @V60BBBB 00510000
BCTR R15,0 DECREMENT FOR EXECUTE @V60BBBB 00511000
EX R15,CKCLC MATCH? @V60BBBB 00512000
BR R14 RETURN WITH CC INDICATING @V60BBBB 00513000
* MATCH IF 0, NO MATCH IF NON-0. 00514000
CKCLC CLC 0(0,R1),0(R4) EXECUTED INSTRUCTION @V60BBBB 00515000
* TITLE ' DMKJRLLO' 00516000
* 00517000
* ENTRY POINT NAME - 00518000
* 00519000
* DMKJRLLO - CALLED BY DMKLOG (LOGON) FOR EACH 00520000
* SUCCESSFUL LOGON AND FOR EACH LOGON 00521000
* WHICH FAILS BECAUSE OF AN INVALID 00522000
* PASSWORD. 00523000
* 00524000
* FUNCTION - 00525000
* 00526000
* JOURNAL INSTANCES OF THE USE OF INVALID LOGON 00527000
* PASSWORDS. 00528000
* 00529000
* ATTRIBUTES - 00530000
* 00531000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00532000
* 00533000
* ENTRY CONDITIONS - 00534000
* 00535000
* R2 - = 0 FOR SUCCESSFUL LOGON/AUTOLOG 00536000
* = ADDRESS OF INVALID PASSWORD OTHERWISE 00537000
* R4 - = 0 IF LOGON COMMAND 00538000
* = ADDRESS OF ISSUER OF AUTOLOG COMMAND OTHERWISE 00539000
* R5 - = ADDRESS OF USERID OF COMMAND ISSUER 00540000
* R11- = ADDRESS OF VMBLOK 00541000
* R12- = BASE ADDRESS OF MODULE 00542000
* R13- = ADDRESS OF SAVEAREA 00543000
* 00544000
* EXIT CONDITIONS - 00545000
* 00546000
* EXIT IS ALWAYS NORMAL. THERE ARE NO ERROR EXITS. 00547000
* 00548000
* CALLS TO OTHER ROUTINES - 00549000
* 00550000
* DMKACOQU - GENERATE ACCOUNTING RECORD 00551000
* DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 00552000
* DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00553000
* DMKCVTDT - OBTAIN DATE-TIME 00554000
* DMKFREE - OBTAIN FREE STORAGE 00555000
* DMKFRET - RETURN STORAGE 00556000
* DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00557000
* DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 00558000
* DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00559000
* DMKSCNRD - GET REAL DEVICE ADDRESS 00560000
* 00561000
* EXTERNAL REFERENCES - 00562000
* DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00563000
* CONTROL BLOCK (JPSCBLOK). 00564000
* 00565000
* TABLES / WORK AREAS - 00566000
* 00567000
* PWDIBLOK - PASSWORD-INVALID BLOCK 00568000
* 00569000
* REGISTER USAGE - 00570000
* 00571000
* GPR 2 = ADDRESS OF INVALID PASSWORD OR, IF 00572000
* LOGON/AUTOLOG WAS SUCCESSFUL, 0. 00573000
* GPR 3 = ADDRESS OF JPSCBLOK 00574000
* GPR 4 = ADDRESS OF COMMAND ISSUERS VMBLOK 00575000
* GPR 5 = ADDRESS OF USERID OF COMMAND ISSUER 00576000
* GPR 6 = ADDRESS OF PWDIBLOK 00577000
* GPR 7 = USED IN SCANNING PWDIBLOK'S TO POINT AT 00578000
* PREVIOUS LINK FIELD. 00579000
* GPR 8 = CONTAINS TERMINALS RDEVBLOK ADDRESS (OR 00580000
* 0 IF NO TERMINAL) IN INITIAL PROCESSING. 00581000
* IT IS A WORK REGISTER THEREAFTER. 00582000
* GPR 11 = ADDRESS OF CALLER'S VMBLOK 00583000
* GPR 12 = BASE REGISTER 00584000
* GPR 13 = ADDRESS OF STANDARD SAVE AREA 00585000
* GPR 14 = STANDARD RETURN REGISTER 00586000
* GPR 15 = STANDARD ENTRY POINT REGISTER 00587000
* 00588000
* GPRS 0-1, AND 9-10 ARE WORK REGISTERS 00589000
* 00590000
* NOTES - 00591000
* NONE. 00592000
* 00593000
* OPERATION - 00594000
* 00595000
* 1. SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. 00596000
* 2. SET FLAG IF THIS IS AN AUTOLOG INITIATED ENTRY. 00597000
* 3. GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC. 00598000
* 4. SCAN PWDIBLOK'S FOR A MATCH ON EITHER USERID OF 00599000
* COMMAND ISSUER OR TERMINAL ADDRESS. 00600000
* 5. IF THERE IS NO MATCH AND THE PASSWORD IS VALID, ALL 00601000
* IS WELL AND WE CAN EXIT. 00602000
* 6. IF THERE IS NO MATCH AND THE PASSWORD IS INVALID, 00603000
* OBTAIN STORAGE FOR A PWDIBLOK, INITIALIZE IT, AND 00604000
* PUT IT ON THE CHAIN ANCHORED IN THE JPSCBLOK. 00605000
* 7. IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD 00606000
* WAS VALID, DECHAIN THE PWDIBLOK, FREE THE STORAGE IT 00607000
* OCCUPIES, AND EXIT. 00608000
* 8. IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD 00609000
* WAS INVALID, INCREMENT THE INVALID PASSWORD COUNT IN 00610000
* THE PWDIBLOK, CALL LOGONCHK TO ISSUE ANY MESSAGE 00611000
* OR GENERATE ANY ACCOUNTING RECORD THAT MAY BE 00612000
* REQUIRED, AND EXIT. 00613000
* 9. RETURN FROM JOURNAL LOGON PROCESSING. 00614000
* 00615000
* MESSAGES - 00616000
* 00617000
* ERROR MESSAGE (SENT TO USERID DEFINED IN SYSJRL MACRO IN 00618000
* DMKSYS AT SYSGEN TIME.) 00619000
* DMKJRL145I USERID:<USERID> AT <TERM-RADDR> WITH 00620000
* INVALID LOGON PASSWORD NO. <XX> (<PSWD>) HAS 00621000
* VIOLATED THE LIMIT OF <YY> 00622000
* 00623000
EJECT 00624000
*-------------------------------------------------------------* 00625000
* - SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. * 00626000
* - SET FLAG IF THIS IS AN AUTOLOG INITIATED ENTRY. * 00627000
* - INITIALIZE ADDRESS OF VMBLOK OF COMMAND ISSUER IN R4.* 00628000
* - GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC. * 00629000
*-------------------------------------------------------------* 00630000
SPACE 1 00631000
DMKJRLLO RELOC ENTRY FROM LOGON PROCESS (DMKLOG)@V60BBBB 00632000
L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00633000
USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00634000
MVI LOFLAGS,L'AUTOLOG INITIALIZE FLAGS TO BE USED @V60BBBB 00635000
LTR R4,R4 AUTOLOG? @V60BBBB 00636000
BNZ LO010 BR IF YES @V60BBBB 00637000
NI LOFLAGS,X'FF'-L'AUTOLOG TURN OFF AUTOLOG FLAG @V60BBBB 00638000
LR R4,R11 SET R4 TO ISSUER OF LOGON @V60BBBB 00639000
LO010 MVC LCHTERMA,=C'NONE' INITIALIZE FIELD TO CONTAIN @V60BBBB 00640000
* TERMINAL ADDRESS TO 'NONE'. 00641000
* (THERE MAY BE NO TERMINAL E.G., 00642000
* WHEN A DISCONNECT'ED MACHINE 00643000
* ISSUES AN AUTOLOG.) 00644000
L R8,VMTERM-VMBLOK(,R4) GET ADDRESS OF RDEVBLOK @V60BBBB 00645000
LTR R8,R8 ONE THERE? @V60BBBB 00646000
BZ LO020 BR IF NOT @V60BBBB 00647000
* DMKSCNRD WANTS RDEVBLOK ADDRESS IN R8. 00648000
CALL DMKSCNRD GET REAL DEVICE ADDRESS @V60BBBB 00649000
CALL DMKCVTBH GET IT INTO EBCDIC @V60BBBB 00650000
ST R1,LCHTERMA SAVE IT FOR LATER @V60BBBB 00651000
EJECT 00652000
*-------------------------------------------------------------* 00653000
* - SCAN PWDIBLOK'S FOR A MATCH ON EITHER USERID OF * 00654000
* COMMAND ISSUER OR TERMINAL ADDRESS. * 00655000
* - IF THERE IS NO MATCH AND THE PASSWORD IS VALID, ALL * 00656000
* IS WELL AND WE CAN EXIT. * 00657000
* - IF THERE IS NO MATCH AND THE PASSWORD IS INVALID, * 00658000
* OBTAIN STORAGE FOR A PWDIBLOK, INITIALIZE IT, AND * 00659000
* PUT IT ON THE CHAIN ANCHORED IN THE JPSCBLOK. * 00660000
*-------------------------------------------------------------* 00661000
SPACE 1 00662000
LO020 L R6,JPSPCHN PRIME THE PUMP @V60BBBB 00663000
LA R7,JPSPCHN PRIME PREVIOUS-LINK-FIELD POINTER@V60BBBB 00664000
LO030 LTR R6,R6 ANY MORE BLOCKS TO SCAN? @V60BBBB 00665000
BZ LO100 BR IF NOT - NO MATCH @V60BBBB 00666000
USING PWDIBLOK,R6 ESTABLISH ADDRESSABILITY @V60BBBB 00667000
CLC PWDUSRID,0(R5) USERID MATCH? @V60BBBB 00668000
BE LO200 BR IF YES - WE HAVE A MATCH @V60BBBB 00669000
LTR R8,R8 WAS THERE A TERMINAL? @V60BBBB 00670000
BZ LO040 BR IF NOT @V60BBBB 00671000
CLC PWDTERMA,LCHTERMA SAME TERMINAL ADDRESS? @V60BBBB 00672000
BE LO200 BR IF YES - THIS, ALSO, WE @V60BBBB 00673000
* CONSIDER A MATCH. 00674000
LO040 LA R7,PWDCHAIN SAVE POINTER TO THIS LINK FIELD @V60BBBB 00675000
* IN CASE WE MUST DEQUEUE THE NEXT 00676000
* PWDIBLOK. 00677000
L R6,PWDCHAIN GET POINTER TO NEXT @V60BBBB 00678000
B LO030 CONTINUE SEARCH @V60BBBB 00679000
DROP R6 @V60BBBB 00680000
LO100 DS 0H COME HERE IF NO MATCH @V60BBBB 00681000
LTR R2,R2 WAS PASSWORD VALID? @V60BBBB 00682000
BZ LOEXIT BR IF YES - ALL'S WELL @V60BBBB 00683000
LA R0,PWDSIZE SIZE OF PWDIBLOK FOR DMKFREE @V60BBBB 00684000
CALL DMKFREE GET STORAGE FOR PWDIBLOK @V60BBBB 00685000
LR R6,R1 GET ADDRESS TO PERMANENT HOME @V60BBBB 00686000
USING PWDIBLOK,R6 ESTABLISH ADDRESSABILITY @V60BBBB 00687000
MVC PWDUSRID,0(R5) MOVE IN USERID @V60BBBB 00688000
MVC PWDTERMA,LCHTERMA MOVE IN TERMINAL ADDRESS @V60BBBB 00689000
LR R9,R2 SAVE R2 ACROSS DMKCVTDT @V60BBBB 00690000
LA R1,DATEWORK WHERE DATE SHOULD BE STORED @V60BBBB 00691000
* BY DMKCVTDT. 00692000
LA R2,TIMEWORK WHERE TIME SHOULD BE STORED @V60BBBB 00693000
* BY DMKCVTDT. 00694000
CALL DMKCVTDT GET DATE AND TIME. @V60BBBB 00695000
LR R2,R9 RESTORE R2 @V60BBBB 00696000
MVC PWDDATE(L'PWDDATE+L'PWDTIME),SLYMASK MOVE IN @V60BBBB 00697000
* MASK TO BE TRANSLATED TO REMOVE 00698000
* :'S FROM TIME AND /'S FROM DATE. 00699000
TR PWDDATE(L'PWDDATE+L'PWDTIME),DATEWORK GET @V60BBBB 00700000
* DATE & TIME IN MMDDYYHHMMSS FORMAT. 00701000
* 00702000
MVI PWDINVCT,X'01' INITIALIZE INVALID PASSWORD @V60BBBB 00703000
* COUNT TO 1. 00704000
OI PWDLOG,L'PWDLOG ASSUME THIS IS LOGON @V60BBBB 00705000
TM AUTOLOG,L'AUTOLOG WAS IT AUTOLOG? @V60BBBB 00706000
BZ LO120 BR IF NOT @V60BBBB 00707000
XI PWDLOG,L'PWDLOG+L'PWDALOG TURN LOGON BIT OFF @V60BBBB 00708000
* AND AUTOLOG BIT ON. 00709000
LO120 L R1,JPSPCHN PICK UP ANCHOR @V60BBBB 00710000
ST R1,PWDCHAIN PUT VALUE INTO NEW PWDIBLOK @V60BBBB 00711000
ST R6,JPSPCHN PUT NEW GUY INTO SERVICE. @V60BBBB 00712000
BAL R14,LOGONCHK GO DO ANYTHING ELSE WHICH @V60BBBB 00713000
* MAY BE REQUIRED FOR THIS LOGON 00714000
* ATTEMPT. 00715000
B LOEXIT ABANDON SHIP @V60BBBB 00716000
EJECT 00717000
*-------------------------------------------------------------* 00718000
* - IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD * 00719000
* WAS VALID, DECHAIN THE PWDIBLOK, FREE THE STORAGE IT * 00720000
* OCCUPIES, AND EXIT. * 00721000
* - IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD * 00722000
* WAS INVALID, INCREMENT THE INVALID PASSWORD COUNT IN * 00723000
* THE PWDIBLOK, CALL LOGONCHK TO ISSUE ANY MESSAGE * 00724000
* OR GENERATE ANY ACCOUNTING RECORD THAT MAY BE * 00725000
* REQUIRED, AND EXIT. * 00726000
*-------------------------------------------------------------* 00727000
SPACE 1 00728000
LO200 DS 0H COME HERE IF MATCH FOUND @V60BBBB 00729000
LTR R2,R2 PASSWORD VALID? @V60BBBB 00730000
BNZ LO300 BR IF NOT @V60BBBB 00731000
* R7 CONTAINS POINTER TO PREVIOUS LINK FIELD, SO 00732000
* TO DEQUEUE WE NEED ONLY: 00733000
L R1,PWDCHAIN GET POINTER TO NEXT FROM BLOCK @V60BBBB 00734000
* TO BE DEQUEUED AND... 00735000
ST R1,0(,R7) STORE IT IN PREVIOUS LINK FIELD @V60BBBB 00736000
LA R0,PWDSIZE SET AMOUNT OF STORAGE TO BE @V60BBBB 00737000
* FRET'ED. 00738000
LR R1,R6 POINT AT PWDIBLOK @V60BBBB 00739000
CALL DMKFRET RETURN THE PWDIBLOK @V60BBBB 00740000
B LOEXIT ABANDON SHIP @V60BBBB 00741000
LO300 DS 0H MATCH FOUND - PASSWORD INVALID @V60BBBB 00742000
IC R1,PWDINVCT GET THE CURRENT INCORRECT @V60BBBB 00743000
* PASSWORD COUNT. 00744000
LA R1,1(,R1) ADD 1 @V60BBBB 00745000
STC R1,PWDINVCT STORE IT BACK INTO PWDIBLOK @V60BBBB 00746000
BAL R14,LOGONCHK GO TAKE ANY FURTHER ACTION WHICH @V60BBBB 00747000
* MAY BE REQUIRED. 00748000
B LOEXIT CONTINUE @V60BBBB 00749000
EJECT 00750000
*-------------------------------------------------------------* 00751000
* RETURN FROM JOURNAL LOGON PROCESSING. * 00752000
*-------------------------------------------------------------* 00753000
SPACE 1 00754000
LOEXIT EXIT RETURN RETURN TO DMKCFM @V60BBBB 00755000
EJECT 00756000
*-------------------------------------------------------------* 00757000
* - THIS SUBROUTINE CHECKS TO SEE WHETHER THE MESSAGE * 00758000
* AND/OR THE ACCOUNTING RECORD THRESHOLDS HAVE BEEN * 00759000
* EQUALLED OR EXCEEDED. IF THEY HAVE, APPROPRIATE * 00760000
* ACTIONS ARE TAKEN. * 00761000
* - UPON ENTRY TO THIS SUBROUTINE, IT IS ASSUMED * 00762000
* THAT R2 POINTS AT THE INVALID PASSWORD, * 00763000
* R3 POINTS AT THE JPSCBLOK, R4 POINTS AT THE VMBLOK * 00764000
* OF THE COMMAND ISSUER, R5 POINTS AT THE COMMAND * 00765000
* ISSUER'S USERID, R6 POINTS AT THE PWDIBLOK, R11 * 00766000
* POINTS AT THE CALLERS VMBLOK, AND R14 CONTAINS THE * 00767000
* RETURN ADDRESS. * 00768000
*-------------------------------------------------------------* 00769000
SPACE 3 00770000
*-------------------------------------------------------------* 00771000
* - SKIP GENERATION OF ACCOUNTING RECORD IF NO RECORDS * 00772000
* ARE TO BE SENT OR IF ACCOUNTING RECORD THRESHOLD * 00773000
* HAS NOT BEEN EQUALLED OR EXCEEDED. * 00774000
* - OTHERWISE, GET STORAGE FOR AN ACNTBLOK. * 00775000
* - BUILD THE TYPE '04' RECORD IN THE OBTAINED STORAGE. * 00776000
* - QUEUE THE ACNTBLOK VIA A CALL TO DMKACOQU. * 00777000
*-------------------------------------------------------------* 00778000
SPACE 1 00779000
LOGONCHK DS 0H @V60BBBB 00780000
ST R14,LCHSR14 SAVE RETURN ADDRESS @V60BBBB 00781000
CLI JPSLOGAR,X'00' SHOULD ANY ACCOUNTING RECORDS @V60BBBB 00782000
* BE GENERATED? 00783000
BE LCH100 BR IF NOT @V60BBBB 00784000
CLC PWDINVCT,JPSLOGAR HAS THE ACCOUNTING RECORD @V60BBBB 00785000
* THRESHOLD BEEN MET OR EXCEEDED? 00786000
BL LCH100 BR IF NOT @V60BBBB 00787000
* BUILD TYPE '04' ACCOUNTING RECORD. 00788000
LA R0,ACNTSIZE SET SIZE OF ACNTBLOK @V60BBBB 00789000
CALL DMKFREE GET AN ACNTBLOK @V60BBBB 00790000
LR R10,R1 MOVE TO PERMANENT REG @V60BBBB 00791000
USING ACNTBLOK,R10 ESTABLISH ADDRESSABILITY @V60BBBB 00792000
MVC LAUSERID,0(R5) MOVE IN COMMAND ISSUER'S ID @V60BBBB 00793000
MVC LAACCT#,BLANKS CLEAR ACCOUNT NUMBER SLOT (AT @V60BBBB 00794000
* THIS POINT WE DON'T KNOW IT). 00795000
CLC PWDINVCT,JPSLOGAR IS THIS THE 1ST CARD TO BE @VA11133 00795100
* PUNCHED? 00795150
BE CARD1 YES ONTO CARD1 @VA11133 00795200
LR R9,R2 SAVE R2 ACROSS DMKCVTDT @VA11133 00795250
LA R1,DATEWORK CATCHES THE DATE FROM DMKCVTDT @VA11133 00795300
LA R2,TIMEWORK CATCHES THE TIME FROM DMKCVTDT @VA11133 00795350
CALL DMKCVTDT GET DATE AND TIME @VA11133 00795400
LR R2,R9 RESTORE R2 @VA11133 00795450
MVC LADATE(L'LADATE+L'LATIME),SLYMASK MOVE IN MASK @VA11133 00795500
* TO REMOVE : AND / 00795550
TR LADATE(L'LADATE+L'LATIME),DATEWORK GET DATE IN @VA11133 00795600
* MMDDYYHHMMSS FORMAT 00795650
B CARD2 @VA11133 00795700
CARD1 DS 0H @VA11133 00795750
MVC LADATE(L'LADATE+L'LATIME),PWDDATE MOVE IN DATE @V60BBBB 00796000
* AND TIME (MMDDYYHHMMSS). 00797000
CARD2 DS 0H @VA11133 00797050
MVC LATERMA,LCHTERMA MOVE IN TERMINAL ADDRESS @V60BBBB 00798000
MVC LAIPWD,0(R2) MOVE IN INVALID PASSWORD @V60BBBB 00799000
MVI LAAUSID,C' ' CLEAR UNUSED PORTIONS @V60BBBB 00800000
MVC LAAUSID+1(LAEND-LAAUSID-1),LAAUSID ** @V60BBBB 00801000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00802000
IC R1,PWDINVCT PICK UP CURRENT COUNT @V60BBBB 00803000
CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 00804000
STCM R1,B'0011',LAIPWNO PUT IT INTO ACCOUNTING REC. @V60BBBB 00805000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00806000
IC R1,JPSLOGAR PICK UP CURRENT LIMIT @V60BBBB 00807000
CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 00808000
STCM R1,B'0011',LAIPWLM PUT IT INTO ACCOUNTING REC. @V60BBBB 00809000
TM AUTOLOG,L'AUTOLOG AUTOLOG COMMAND? @V60BBBB 00810000
BZ LCH020 BR IF NOT @V60BBBB 00811000
MVC LAAUSID,VMUSER-VMBLOK(R4) MOVE IN USERID OF @V60BBBB 00812000
* ISSUER OF AUTOLOG. 00813000
LCH020 MVC LATYPE,=C'04' SET TO TYPE '04' ACCOUNTING @V60BBBB 00814000
* RECORD 00815000
LR R8,R4 SAVE R4 ACROSS CALL TO DMKACOQU @V60BBBB 00816000
LR R4,R10 ACOQU WANTS BUFFER ADDRESS IN R4 @V60BBBB 00817000
CALL DMKACOQU QUEUE THE ACCOUNT CARD BUFFER @V60BBBB 00818000
* THE BUFFER WILL BE FRET'ED BY THE ACCOUNTING 00819000
* ROUTINES. WE CAN JUST RELAX AND GO ON DOING OUR 00820000
* OWN THING. 00821000
DROP R10 @V60BBBB 00822000
LR R4,R8 RESTORE R4 @V60BBBB 00823000
EJECT 00824000
*-------------------------------------------------------------* 00825000
* - SKIP GENERATION OF MESSAGE IF NO MESSAGES ARE TO BE * 00826000
* SENT OR IF MESSAGE THRESHOLD HAS NOT BEEN EQUALLED * 00827000
* OR EXCEEDED. * 00828000
* - OTHERWISE, GET STORAGE FOR A DMKJRL145I MESSAGE. * 00829000
* - BUILD THE MESSAGE IN THE OBTAINED STORAGE. * 00830000
* - SEND THE MESSAGE VIA A CALL TO DMKQCNWT. * 00831000
*-------------------------------------------------------------* 00832000
SPACE 1 00833000
LCH100 DS 0H @V60BBBB 00834000
CLI JPSLOGMS,X'00' SHOULD ANY MESSAGES BE SENT? @V60BBBB 00835000
BE LCHRETRN BR IF NOT @V60BBBB 00836000
CLC PWDINVCT,JPSLOGMS HAS THRESHOLD BEEN MET OR @V60BBBB 00837000
* EXCEEDED? 00838000
BL LCHRETRN BR IF NOT @V60BBBB 00839000
LA R1,JPSLOGU POINT TO USERID TO WHOM MESSAGE @V60BBBB 00840000
* SHOULD BE SENT. 00841000
LA R0,8 SET USERID LENGTH @V60BBBB 00842000
CALL DMKSCNAU GET THE VMBLOK ADDRESS @V60BBBB 00843000
BNZ LCH110 BR IF USERID NOT ABLE TO @V60BBBB 00844000
* RECEIVE MESSAGE. 00845000
TM VMOSTAT-VMBLOK(R1),VMDISC+VMKILL USER DYING @V60BBBB 00846000
* OR DISCONNECTED? 00847000
BNZ LCH110 BR IF YES- CAN'T SEND TO HIM(HER)@V60BBBB 00848000
CLC VMTERM-VMBLOK(,R1),F0 ANY TERMINAL? @V60BBBB 00849000
BNE LCH200 ALL'S WELL- LET 'ER RIP @V60BBBB 00850000
LCH110 L R1,ASYSOP GET OPERATOR'S VMBLOK @V60BBBB 00851000
CLC VMTERM-VMBLOK(,R1),F0 OPERATOR THERE? @V60BBBB 00852000
BE LCHRETRN BR IF NOT- WE CAN DO NO MORE @V60BBBB 00853000
LCH200 LR R9,R1 SAVE ADDRESS OF VMBLOK OF USER @V60BBBB 00854000
* TO RECEIVE MESSAGE. 00855000
LA R0,LCHMDBLW AMOUNT OF STORAGE FOR DMKJRL145I @V60BBBB 00856000
* MESSAGE. 00857000
CALL DMKFREE GET THE STORAGE @V60BBBB 00858000
LR R10,R1 GET ADDRESS TO NEW HOME @V60BBBB 00859000
MVC 0(LCHMSGLN,R10),LCHMSG MOVE IN MESSAGE SKELETON @V60BBBB 00860000
MVC LCHMUSER-LCHMSG(,R10),0(R5) MOVE IN ID @V60BBBB 00861000
MVC LCHMTRMA-LCHMSG(,R10),LCHTERMA MOVE IN TERMINAL @V60BBBB 00862000
* ADDRESS. 00863000
MVC LCHTYPE-LCHMSG(,R10),=C'LOGON' MOVE IN TYPE @V60BBBB 00864000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00865000
IC R1,PWDINVCT PICK UP CURRENT COUNT @V60BBBB 00866000
CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 00867000
STCM R1,B'0111',LCHIVPNO-LCHMSG(R10) PUT IT INTO @VMI0039 00868000
* MESSAGE. 00869000
MVC LCHMIVP-LCHMSG(,R10),0(R2) MOVE IN INVALID @V60BBBB 00870000
* PASSWORD. 00871000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00872000
IC R1,JPSLOGMS PICK UP CURRENT LIMIT @V60BBBB 00873000
CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 00874000
STCM R1,B'0111',LCHIVPLM-LCHMSG(R10) PUT IT INTO @VMI0039 00875000
* MESSAGE. 00876000
TM AUTOLOG,L'AUTOLOG WAS THIS MESSAGE THE RESULT @V60BBBB 00877000
* OF AN AUTOLOG? 00878000
BZ LCH300 BR IF NOT - MESSAGE IS COMPLETE @V60BBBB 00879000
MVC LCHALOG-LCHMSG(,R10),ALSUFF MOVE IN AUTOLOG @V60BBBB 00880000
* SUFFIX. 00881000
MVC LCHALOG-LCHMSG+(ALSNAME-ALSUFF)(L'ALSNAME,R10),VMUSER-VM+00882000
BLOK(R4) MOVE IN USERID OF ISSUER OF @V60BBBB 00883000
* AUTOLOG COMMAND. 00884000
LCH300 LR R1,R9 SETUP TO SWTCHVM @V60BBBB 00885000
LR R9,R11 SAVE OUR VMBLOK ADDRESS @V60BBBB 00886000
* SWITCH TO VMBLOK OF MESSAGE 00887000
SWTCHVM DESTINATION. @V60BBBB 00888000
LR R1,R10 PUT MESSAGE ADDRESS IN R1 FOR @V60BBBB 00889000
* DMKQCNWT. 00890000
LA R0,LCHMSGLN SET NUMBER OF BYTES IN MESSAGE @V60BBBB 00891000
STM R2,R3,LCHS23 SAVE REGS USED BY DMKQCNWT @V60BBBB 00892000
LA R3,LCHMDBLW NUMBER OF DBLWDS TO BE FRET'ED @V60BBBB 00893000
CALL DMKQCNWT,PARM=NORET+DFRET+ALARM WRITE THE MSG. @V60BBBB 00894000
LR R1,R9 SETUP TO SWITCH BACK TO CALLER'S @V60BBBB 00895000
* VMBLOK 00896000
SWTCHVM RETURN TO CALLER'S VMBLOK @V60BBBB 00897000
LM R2,R3,LCHS23 RESTORE REGISTERS 2 & 3 @V60BBBB 00898000
SPACE 3 00899000
*-------------------------------------------------------------* 00900000
* RETURN TO CALLER. * 00901000
*-------------------------------------------------------------* 00902000
SPACE 1 00903000
LCHRETRN L R14,LCHSR14 RESTORE RETURN ADDRESS @V60BBBB 00904000
BR R14 RETURN TO CALLER @V60BBBB 00905000
EJECT 00906000
ALSUFF DC C', A=' SUFFIX FOR FOLLOWING MESSAGE TO @V60BBBB 00907000
ALSNAME DS CL8 IDENTIFY ISSUER OF AUTOLOG. @V60BBBB 00908000
LALSUFF EQU *-ALSUFF @V60BBBB 00909000
*-------------------------------------------------------------* 00910000
* SKELETON FOR DMKJRL145I MESSAGE. * 00911000
*-------------------------------------------------------------* 00912000
SPACE 1 00913000
LCHMSG DS 0D @V60BBBB 00914000
DC C'DMKJRL145I USERID: ' @V60BBBB 00915000
LCHMUSER DS CL8 @V60BBBB 00916000
DC C' AT ' @V60BBBB 00917000
LCHMTRMA DS CL4 @V60BBBB 00918000
DC C' WITH INVALID ' @V60BBBB 00919000
LCHTYPE DC CL5' ' @V60BBBB 00920000
DC C' PASSWORD NO. ' @V60BBBB 00921000
LCHIVPNO DS CL3 @VMI0039 00922000
DC C' (' @V60BBBB 00923000
LCHMIVP DC CL8' ' @V60BBBB 00924000
DC C') HAS VIOLATED THE LIMIT OF ' @V60BBBB 00925000
LCHIVPLM DS CL3 @VMI0039 00926000
LCHALOG DC CL(LALSUFF)' ' @V60BBBB 00927000
LCHMSGLN EQU *-LCHMSG @V60BBBB 00928000
DS 0D @V60BBBB 00929000
LCHMDBLW EQU (*-LCHMSG)/8 NUMBER OF DOUBLEWORDS @V60BBBB 00930000
* TITLE ' DMKJRLSL' 00931000
* 00932000
* ENTRY POINT NAME - 00933000
* 00934000
* DMKJRLSL - CALLED BY DMKLNK (LINK) FOR EACH 00935000
* SUCCESSFUL LINK TO A PROTECTED MINI-DISK 00936000
* NOT OWNED BY THE LINK'OR. 00937000
* (A PROTECTED MINI-DISK IS ONE WHOSE 00938000
* PASSWORD, FOR THE TYPE LINK BEING 00939000
* ATTEMPTED, IS NOT 'ALL'.) 00940000
* 00941000
* FUNCTION - 00942000
* 00943000
* TO JOURNAL THE SUCCESSFUL LINK'ING TO A PROTECTED 00944000
* (RELEVANT PASSWORD NOT 'ALL') MINI-DISK. 00945000
* 00946000
* ATTRIBUTES - 00947000
* 00948000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00949000
* 00950000
* ENTRY CONDITIONS - 00951000
* 00952000
* R1 - = ADDRESS IF USERID OF LINKEE 00953000
* R2 - = ADDRESS OF MINI-DISK ADDRESS OF LINKEE 00954000
* R11- ADDRESS OF VMBLOK OF CALLER 00955000
* R12- BASE ADDRESS OF MODULE 00956000
* R13- ADDRESS OF SAVEAREA 00957000
* 00958000
* EXIT CONDITIONS - 00959000
* 00960000
* ALWAYS NORMAL. THERE ARE NO ERROR EXITS OR RETURNS. 00961000
* 00962000
* CALLS TO OTHER ROUTINES - 00963000
* 00964000
* DMKACOQU - GENERATE ACCOUNTING RECORD 00965000
* DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00966000
* DMKCVTDT - OBTAIN DATE-TIME 00967000
* DMKFREE - OBTAIN FREE STORAGE 00968000
* DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00969000
* DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 00970000
* DMKSCNRD - GET REAL DEVICE ADDRESS 00971000
* 00972000
* EXTERNAL REFERENCES - 00973000
* DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00974000
* CONTROL BLOCK (JPSCBLOK). 00975000
* 00976000
* TABLES / WORK AREAS - 00977000
* 00978000
* NONE 00979000
* 00980000
* REGISTER USAGE - 00981000
* 00982000
* GPR 2 = ADDRESS OF MINI-DISK ADDRESS OF LINKEE 00983000
* GPR 4 = ADDRESS OF ACNTBLOK 00984000
* GPR 5 = ADDRESS OF USERID OF LINKEE 00985000
* GPR 8 = CONTAINS TERMINAL'S RDEVBLOK ADDRESS (OR 00986000
* 0 IF NO TERMINAL) 00987000
* GPR 11 = ADDRESS OF CALLER'S VMBLOK 00988000
* GPR 12 = BASE REGISTER 00989000
* GPR 13 = ADDRESS OF STANDARD SAVE AREA 00990000
* GPR 14 = STANDARD RETURN REGISTER 00991000
* GPR 15 = STANDARD ENTRY POINT REGISTER 00992000
* 00993000
* GPRS 0-1, 3, 6, AND 9-10 ARE WORK REGISTERS 00994000
* 00995000
* NOTES - 00996000
* NONE. 00997000
* 00998000
* OPERATION - 00999000
* 01000000
* 1. SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. 01001000
* 2. GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND 01002000
* SAVE IT FOR LATER USE. 01003000
* 3. GET DATE AND TIME INTO WORKAREA VIA CALL TO DMKCVDT. 01004000
* 4. GET STORAGE FOR AN ACNTBLOK. 01005000
* 5. FILL IN ACNTBLOK WITH INFORMATION CONSTITUTING A 01006000
* TYPE '05' ACCOUNTING RECORD: USERID, ACCOUNT NUMBER, 01007000
* DATE, TIME, TERMINAL ADDRESS, LINKEE'S USERID, AND 01008000
* LINKEE'S MINI-DISK ADDRESS. 01009000
* 6. QUEUE THE ACCOUNTING RECORD FOR PROCESSING VIA A 01010000
* CALL TO DMKACOQU. 01011000
* 7. RETURN FROM SUCCESSFUL LINK PROCESSING. 01012000
* 01013000
* MESSAGES - 01014000
* 01015000
* NONE. 01016000
* 01017000
EJECT 01018000
*-------------------------------------------------------------* 01019000
* - SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. * 01020000
* - GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND * 01021000
* SAVE IT FOR LATER USE. * 01022000
*-------------------------------------------------------------* 01023000
SPACE 1 01024000
DMKJRLSL RELOC SUCCESSFUL LINK @V60BBBB 01025000
LR R5,R1 SAVE POINTER TO LINKEE'S USERID @V60BBBB 01026000
MVC LCHTRMA,=C'NONE' INITIALIZE FIELD TO CONTAIN @V60BBBB 01027000
* TERMINAL ADDRESS TO 'NONE'. 01028000
* (THERE MAY BE NO TERMINAL E.G., 01029000
* WHEN A DISCONNECT'ED MACHINE 01030000
* ISSUES A LINK). 01031000
L R8,VMTERM GET ADDRESS OF RDEVBLOK @V60BBBB 01032000
LTR R8,R8 ONE THERE? @V60BBBB 01033000
BZ SL010 BR IF NOT @V60BBBB 01034000
* DMKSCNRD WANTS RDEVBLOK ADDRESS IN R8. 01035000
CALL DMKSCNRD GET REAL DEVICE ADDRESS @V60BBBB 01036000
CALL DMKCVTBH GET IT INTO EBCDIC @V60BBBB 01037000
ST R1,LCHTRMA SAVE IT FOR LATER @V60BBBB 01038000
EJECT 01039000
*-------------------------------------------------------------* 01040000
* - GET DATE AND TIME INTO WORKAREA VIA CALL TO DMKCVDT. * 01041000
* - GET STORAGE FOR AN ACNTBLOK. * 01042000
* - FILL IN ACNTBLOK WITH INFORMATION CONSTITUTING A * 01043000
* TYPE '05' ACCOUNTING RECORD: USERID, ACCOUNT NUMBER, * 01044000
* DATE, TIME, TERMINAL ADDRESS, LINKEE'S USERID, AND * 01045000
* LINKEE'S MINI-DISK ADDRESS. * 01046000
*-------------------------------------------------------------* 01047000
SPACE 1 01048000
SL010 LR R3,R2 SAVE R2 ACROSS DMKCVTDT @V60BBBB 01049000
LA R1,DATEWRK WHERE DATE SHOULD BE STORED @V60BBBB 01050000
* BY DMKCVTDT. 01051000
LA R2,TIMEWRK WHERE TIME SHOULD BE STORED @V60BBBB 01052000
* BY DMKCVTDT. 01053000
CALL DMKCVTDT GET DATE AND TIME. @V60BBBB 01054000
LR R2,R3 RESTORE R2 @V60BBBB 01055000
* BUILD TYPE '05' ACCOUNTING RECORD. 01056000
LA R0,ACNTSIZE SET SIZE OF ACNTBLOK @V60BBBB 01057000
CALL DMKFREE GET AN ACNTBLOK @V60BBBB 01058000
LR R4,R1 GET ADDRESS TO PERMANENT REGISTER@V60BBBB 01059000
USING ACNTBLOK,R4 ESTABLISH ADDRESSABILITY @V60BBBB 01060000
MVC LBUSERID,VMUSER MOVE IN COMMAND ISSUER'S ID @V60BBBB 01061000
MVC LBACCT#,VMACNT MOVE IN ACCOUNT NUMBER @V60BBBB 01062000
MVC LBDATE(L'LBDATE+L'LBTIME),SLYMASK MOVE IN @V60BBBB 01063000
* MASK TO BE TRANSLATED TO REMOVE 01064000
* :'S FROM TIME AND /'S FROM DATE. 01065000
TR LBDATE(L'LBDATE+L'LBTIME),DATEWRK GET DATE & @V60BBBB 01066000
* TIME IN MMDDYYHHMMSS FORMAT. 01067000
* 01068000
MVC LBTERMA,LCHTRMA MOVE IN TERMINAL ADDRESS @V60BBBB 01069000
MVI LBNUSED,C' ' CLEAR UNUSED PORTIONS @V60BBBB 01070000
MVC LBNUSED+1(LBEND-LBNUSED-1),LBNUSED ** @V60BBBB 01071000
MVC LBLUSID,0(R5) MOVE IN LINKEE'S USERID @V60BBBB 01072000
L R1,0(,R2) GET MINI-DISK ADDRESS @V60BBBB 01073000
CALL DMKCVTBH MAKE IT EBCDIC HEX @V60BBBB 01074000
STCM R1,B'0111',LBLADDR STORE IT INTO ACCT. RECORD @V60BBBB 01075000
MVC LBTYPE,=C'05' SET TO TYPE '05' ACCOUNTING @V60BBBB 01076000
* RECORD 01077000
EJECT 01078000
*-------------------------------------------------------------* 01079000
* - QUEUE THE ACCOUNTING RECORD FOR PROCESSING VIA A * 01080000
* CALL TO DMKACOQU. * 01081000
* - RETURN FROM SUCCESSFUL LINK PROCESSING. * 01082000
*-------------------------------------------------------------* 01083000
SPACE 1 01084000
* DMKACOQU WANTS BUFFER ADDRESS IN R4 (WHERE IT IS). 01085000
CALL DMKACOQU QUEUE THE ACCOUNT CARD BUFFER @V60BBBB 01086000
* THE BUFFER WILL BE FRET'ED BY THE ACCOUNTING 01087000
* ROUTINES. WE CAN JUST RELAX AND GO ON DOING OUR 01088000
* OWN THING. 01089000
DROP R4 @V60BBBB 01090000
EXIT RETURN RETURN TO DMKCFM @V60BBBB 01091000
* TITLE ' DMKJRLIL' 01092000
* 01093000
* ENTRY POINT NAME - 01094000
* 01095000
* DMKJRLIL - CALLED BY DMKLNK (LINK) FOR EACH INSTANCE 01096000
* OF A LINK COMMAND BEING ISSUED WITH AN 01097000
* INVALID PASSWORD. 01098000
* 01099000
* FUNCTION - 01100000
* 01101000
* TO JOURNAL INSTANCES OF THE SPECIFICATION OF THE 01102000
* LINK COMMAND WITH AN INVALID PASSWORD. 01103000
* 01104000
* ATTRIBUTES - 01105000
* 01106000
* REENTRANT, PAGEABLE, CALLED VIA SVC 01107000
* 01108000
* ENTRY CONDITIONS - 01109000
* 01110000
* R1 - = ADDRESS OF LINKEE'S USERID 01111000
* R2 = ADDRESS OF LINKEE'S MINI-DISK ADDRESS 01112000
* R6 = ADDRESS OF INVALID PASSWORD 01113000
* R11- ADDRESS OF VMBLOK OF CALLER 01114000
* R12- BASE ADDRESS OF MODULE 01115000
* R13- ADDRESS OF SAVEAREA 01116000
* 01117000
* EXIT CONDITIONS - 01118000
* 01119000
* ALWAYS NORMAL. THERE ARE NO ERROR EXITS OR RETURNS. 01120000
* 01121000
* CALLS TO OTHER ROUTINES - 01122000
* 01123000
* DMKACOQU - GENERATE ACCOUNTING RECORD 01124000
* DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 01125000
* DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 01126000
* DMKCVTDT - OBTAIN DATE-TIME 01127000
* DMKFREE - OBTAIN FREE STORAGE 01128000
* DMKFRET - RETURN STORAGE 01129000
* DMKQCNWT - SEND MESSAGE TO USER TERMINAL 01130000
* DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 01131000
* DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 01132000
* DMKSCNRD - GET REAL DEVICE ADDRESS 01133000
* 01134000
* EXTERNAL REFERENCES - 01135000
* DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 01136000
* CONTROL BLOCK (JPSCBLOK). 01137000
* 01138000
* TABLES / WORK AREAS - 01139000
* 01140000
* NONE 01141000
* 01142000
* REGISTER USAGE - 01143000
* 01144000
* GPR 2 = ADDRESS OF LINKEE'S MINI-DISK ADDRESS. 01145000
* GPR 3 = ADDRESS OF JPSCBLOK 01146000
* GPR 4 = ADDRESS OF ACNTBLOK 01147000
* GPR 5 = ADDRESS OF USERID OF LINKEE 01148000
* GPR 6 = ADDRESS OF INVALID PASSWORD 01149000
* GPR 8 = CONTAINS TERMINAL'S RDEVBLOK ADDRESS (OR 01150000
* 0 IF NO TERMINAL) IN INITIAL PROCESSING. 01151000
* IT IS A WORK REGISTER THEREAFTER. 01152000
* GPR 11 = ADDRESS OF CALLER'S VMBLOK 01153000
* GPR 12 = BASE REGISTER 01154000
* GPR 13 = ADDRESS OF STANDARD SAVE AREA 01155000
* GPR 14 = STANDARD RETURN REGISTER 01156000
* GPR 15 = STANDARD ENTRY POINT REGISTER 01157000
* 01158000
* GPRS 0-1, 7, AND 9-10 ARE WORK REGISTERS 01159000
* 01160000
* NOTES - 01161000
* NONE. 01162000
* 01163000
* OPERATION - 01164000
* 01165000
* 1. SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. 01166000
* 2. GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND SAVE 01167000
* IT FOR LATER USE. 01168000
* 3. GET THE DATE AND TIME INTO THE WORKAREA VIA A CALL TO 01169000
* DMKCVTDT. 01170000
* 4. IF ACCOUNTING RECORDS ARE NOT TO BE GENERATED OR IF 01171000
* THE THRESHOLD IN 'JPSLNKAR' HAS NOT BEEN EQUALLED OR 01172000
* EXCEEDED, SKIP THE GENERATION OF AN ACCOUNTING 01173000
* RECORD (GO TO STEP 8). 01174000
* 5. OTHERWISE, GET STORAGE FOR AN ACNTBLOK IN WHICH TO 01175000
* BUILD A TYPE '06' ACCOUNTING RECORD. 01176000
* 6. FILL IN THE RECORD WITH USERID, ACCOUNT NUMBER, DATE, 01177000
* TIME, TERMINAL ADDRESS, INVALID PASSWORD, LINKEE'S 01178000
* USERID, LINKEE'S MINI-DISK ADDRESS, THE CURRENT 01179000
* INVALID PASSWORD COUNT, AND THE CURRENT INVALID 01180000
* PASSWORD LIMIT. 01181000
* 7. PASS THE ACCOUNTING RECORD TO THE ACCOUNTING ROUTINES 01182000
* VIA A CALL TO DMKACOQU. 01183000
* 8. IF NO MESSAGES ARE TO BE SENT OR IF THE MESSAGE 01184000
* THRESHOLD, JPSLNKMS, HAS NOT BEEN MET OR EXCEEDED, 01185000
* RETURN TO CALLER. 01186000
* 9. OTHERWISE, GET THE VMBLOK ADDRESS OF THE PERSON WHO 01187000
* IS TO RECEIVE THE EXCESSION MESSAGE. 01188000
* 10. IF THIS USERID CANNOT RECEIVE THE MESSAGE, GET THE 01189000
* VMBLOK ADDRESS FOR THE OPERATOR. 01190000
* 11. IF THE OPERATOR CANNOT RECEIVE THE MESSAGE, RETURN 01191000
* WITHOUT SENDING A MESSAGE. 01192000
* 12. SAVE THE VMBLOK ADDRESS OF USER TO RECEIVE MESSAGE. 01193000
* 13. GET STORAGE FOR THE MESSAGE. 01194000
* 14. MOVE IN THE MESSAGE SKELETON AND FILL IT IN WITH 01195000
* USERID, TERMINAL ADDRESS, THE WORD 'LINK', THE 01196000
* INVALID PASSWORD, THE CURRENT INVALID PASSWORD 01197000
* COUNT, AND THE CURRENT INVALID PASSWORD LIMIT. 01198000
* 15. SWITCH TO THE VMBLOK OF THE RECEIVER OF THE MESSAGE, 01199000
* AND SEND IT VIA A CALL TO DMKQCNWT. 01200000
* 16. SWITCH BACK TO THE VMBLOK OF THE CALLER. 01201000
* RETURN FROM JOURNAL INVALID LINK-PASSWORD PROCESSING. 01202000
* 01203000
* MESSAGES - 01204000
* 01205000
* ERROR MESSAGE (SENT TO USERID DEFINED IN SYSJRL MACRO IN 01206000
* DMKSYS AT SYSGEN TIME.) 01207000
* DMKJRL145I USERID:<USERID> AT <TERM-RADDR> WITH 01208000
* INVALID LINK PASSWORD NO. <XX> (<PSWD>) HAS 01209000
* VIOLATED THE LIMIT OF <YY> 01210000
* 01211000
EJECT 01212000
*-------------------------------------------------------------* 01213000
* - SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. * 01214000
* - GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND SAVE * 01215000
* IT FOR LATER USE. * 01216000
*-------------------------------------------------------------* 01217000
SPACE 1 01218000
DMKJRLIL RELOC LINK WITH INVALID PASSWORD @V60BBBB 01219000
LR R5,R1 SAVE LINKEE'S USERID ADDRESS @V60BBBB 01220000
L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 01221000
USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 01222000
MVC LCHTRMAA,=C'NONE' INTIALIZE FILE TO CONTAIN @VA13020 01223100
* TERMINAL ADDRESS TO 'NONE'. 01224000
* (THERE MAY BE NO TERMINAL E.G., 01225000
* WHEN A DISCONNECT'ED MACHINE 01226000
* ISSUES A LINK.) 01227000
L R8,VMTERM GET ADDRESS OF RDEVBLOK @V60BBBB 01228000
LTR R8,R8 ONE THERE? @V60BBBB 01229000
BZ IL010 BR IF NOT @V60BBBB 01230000
* DMKSCNRD WANTS RDEVBLOK ADDRESS IN R8. 01231000
CALL DMKSCNRD GET REAL DEVICE ADDRESS @V60BBBB 01232000
CALL DMKCVTBH GET IT INTO EBCDIC @V60BBBB 01233000
ST R1,LCHTRMAA SAVE IT FOR LATER @V60BBBB 01234000
EJECT 01235000
*-------------------------------------------------------------* 01236000
* - GET THE DATE AND TIME INTO THE WORKAREA VIA A CALL TO* 01237000
* DMKCVTDT. * 01238000
* - IF ACCOUNTING RECORDS ARE NOT TO BE GENERATED OR IF * 01239000
* THE THRESHOLD IN 'JPSLNKAR' HAS NOT BEEN EQUALLED OR * 01240000
* EXCEEDED, SKIP THE GENERATION OF AN ACCOUNTING * 01241000
* RECORD. * 01242000
* - OTHERWISE, GET STORAGE FOR AN ACNTBLOK IN WHICH TO * 01243000
* BUILD A TYPE '06' ACCOUNTING RECORD. * 01244000
* - FILL IN THE RECORD WITH USERID, ACCOUNT NUMBER, DATE,* 01245000
* TIME, TERMINAL ADDRESS, INVALID PASSWORD, LINKEE'S * 01246000
* USERID, LINKEE'S MINI-DISK ADDRESS, THE CURRENT * 01247000
* INVALID PASSWORD COUNT, AND THE CURRENT INVALID * 01248000
* PASSWORD LIMIT. * 01249000
* - PASS THE ACCOUNTING RECORD TO THE ACCOUNTING ROUTINES* 01250000
* VIA A CALL TO DMKACOQU. * 01251000
*-------------------------------------------------------------* 01252000
SPACE 1 01253000
IL010 LR R9,R2 SAVE R2 ACROSS DMKCNVDT @V60BBBB 01254000
LA R1,DATEWRKA WHERE DATE SHOULD BE STORED @V60BBBB 01255000
* BY DMKCVTDT. 01256000
LA R2,TIMEWRKA WHERE TIME SHOULD BE STORED @V60BBBB 01257000
* BY DMKCVTDT. 01258000
CALL DMKCVTDT GET DATE AND TIME. @V60BBBB 01259000
LR R2,R9 RESTORE R2 @V60BBBB 01260000
CLI JPSLNKAR,X'00' SHOULD ANY ACCOUNTING RECORDS @V60BBBB 01261000
* BE GENERATED? 01262000
BE IL100 BR IF NOT @V60BBBB 01263000
CLC VMPSWDCT,JPSLNKAR HAS THE ACCOUNTING RECORD @V60BBBB 01264000
* THRESHOLD BEEN EQUALLED OR 01265000
* EXCEEDED? 01266000
BL IL100 BR IF NOT @V60BBBB 01267000
* BUILD TYPE '06' ACCOUNTING RECORD. 01268000
LA R0,ACNTSIZE SET SIZE OF ACNTBLOK @V60BBBB 01269000
CALL DMKFREE GET AN ACNTBLOK @V60BBBB 01270000
LR R4,R1 GET ADDRESS TO PERMANENT HOME @V60BBBB 01271000
USING ACNTBLOK,R4 ESTABLISH ADDRESSABILITY @V60BBBB 01272000
MVC LCUSERID,VMUSER MOVE IN LINKOR'S USERID @V60BBBB 01273000
MVC LCACCT#,VMACNT MOVE IN ACCOUNT NUMBER @V60BBBB 01274000
MVC LCDATE(L'LCDATE+L'LCTIME),SLYMASK MOVE IN MASK @V60BBBB 01275000
* TO BE TRANSLATED TO REMOVE :'S 01276000
* FROM TIME AND /'S FROM DATE. 01277000
TR LCDATE(L'LCDATE+L'LCTIME),DATEWRKA GET DATE & @V60BBBB 01278000
* TIME IN MMDDYYHHMMSS FORMAT. 01279000
* 01280000
MVC LCTERMA,LCHTRMAA MOVE IN TERMINAL ADDRESS @V60BBBB 01281000
MVC LCIPWD,0(R6) MOVE IN INVALID PASSWORD @V60BBBB 01282000
MVC LCLUSID,0(R5) MOVE IN LINKEE'S USERID @V60BBBB 01283000
L R1,0(,R2) GET MINI-DISK ADDRESS @V60BBBB 01284000
CALL DMKCVTBH MAKE IT EBCDIC HEX @V60BBBB 01285000
STCM R1,B'0111',LCLADDR STORE IT INTO ACCT. RECORD @V60BBBB 01286000
MVI LCNUSED,C' ' CLEAR UNUSED PORTION @V60BBBB 01287000
MVC LCNUSED+1(LCEND-LCNUSED-1),LCNUSED ** @V60BBBB 01288000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01289000
IC R1,VMPSWDCT PICK UP CURRENT COUNT @V60BBBB 01290000
CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 01291000
STCM R1,B'0011',LCIPWNO PUT IT INTO ACCOUNTING REC. @V60BBBB 01292000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01293000
IC R1,JPSLNKAR PICK UP CURRENT LIMIT @V60BBBB 01294000
CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 01295000
STCM R1,B'0011',LCIPWLM PUT IT INTO ACCOUNTING REC. @V60BBBB 01296000
MVC LCTYPE,=C'06' SET TO TYPE '06' ACCOUNTING @V60BBBB 01297000
* RECORD 01298000
* DMKACOQU WANTS BUFFER ADDRESS IN R4 (WHERE IT IS). 01299000
CALL DMKACOQU QUEUE THE ACCOUNT CARD BUFFER @V60BBBB 01300000
* THE BUFFER WILL BE FRET'ED BY THE ACCOUNTING 01301000
* ROUTINES. 01302000
DROP R4 @V60BBBB 01303000
EJECT 01304000
*-------------------------------------------------------------* 01305000
* - IF NO MESSAGES ARE TO BE SENT OR IF THE MESSAGE * 01306000
* THRESHOLD, JPSLNKMS, HAS NOT BEEN MET OR EXCEEDED, * 01307000
* RETURN TO CALLER. * 01308000
* - OTHERWISE, GET THE VMBLOK ADDRESS OF THE PERSON WHO * 01309000
* IS TO RECEIVE THE EXCESSION MESSAGE. * 01310000
* - IF THIS USERID CANNOT RECEIVE THE MESSAGE, GET THE * 01311000
* VMBLOK ADDRESS FOR THE OPERATOR. * 01312000
* - IF THE OPERATOR CANNOT RECEIVE THE MESSAGE, RETURN * 01313000
* WITHOUT SENDING A MESSAGE. * 01314000
*-------------------------------------------------------------* 01315000
SPACE 1 01316000
IL100 DS 0H @V60BBBB 01317000
CLI JPSLNKMS,X'00' SHOULD ANY MESSAGES BE SENT? @V60BBBB 01318000
BE ILEXIT BR IF NOT @V60BBBB 01319000
CLC VMPSWDCT,JPSLNKMS HAS THRESHOLD BEEN MET OR @V60BBBB 01320000
* EXCEEDED? 01321000
BL ILEXIT BR IF NOT @V60BBBB 01322000
LA R1,JPSLNKU POINT TO USERID TO WHOM MESSAGE @V60BBBB 01323000
* SHOULD BE SENT. 01324000
LA R0,8 SET USERID LENGTH @V60BBBB 01325000
CALL DMKSCNAU GET THE VMBLOK ADDRESS @V60BBBB 01326000
BNZ IL110 BR IF USERID NOT ABLE TO @V60BBBB 01327000
* RECEIVE MESSAGE. 01328000
TM VMOSTAT-VMBLOK(R1),VMDISC+VMKILL USER DYING @V60BBBB 01329000
* OR DISCONNECTED? 01330000
BNZ IL110 BR IF YES- CAN'T SEND TO HIM(HER)@V60BBBB 01331000
CLC VMTERM-VMBLOK(,R1),F0 ANY TERMINAL? @V60BBBB 01332000
BNE IL200 ALL'S WELL- LET 'ER RIP @V60BBBB 01333000
IL110 L R1,ASYSOP GET OPERATOR'S VMBLOK @V60BBBB 01334000
CLC VMTERM-VMBLOK(,R1),F0 OPERATOR THERE? @V60BBBB 01335000
BE ILEXIT BR IF NOT- WE CAN DO NO MORE @V60BBBB 01336000
EJECT 01337000
*-------------------------------------------------------------* 01338000
* - SAVE THE VMBLOK ADDRESS OF USER TO RECEIVE MESSAGE. * 01339000
* - GET STORAGE FOR THE MESSAGE. * 01340000
* - MOVE IN THE MESSAGE SKELETON AND FILL IT IN WITH * 01341000
* USERID, TERMINAL ADDRESS, THE WORD 'LINK', THE * 01342000
* INVALID PASSWORD, THE CURRENT INVALID PASSWORD * 01343000
* COUNT, AND THE CURRENT INVALID PASSWORD LIMIT. * 01344000
* - SWITCH TO THE VMBLOK OF THE RECEIVER OF THE MESSAGE, * 01345000
* AND SEND IT VIA A CALL TO DMKQCNWT. * 01346000
* - SWITCH BACK TO THE VMBLOK OF THE CALLER. * 01347000
*-------------------------------------------------------------* 01348000
SPACE 1 01349000
IL200 LR R9,R1 SAVE ADDRESS OF VMBLOK OF USER @V60BBBB 01350000
* TO RECEIVE MESSAGE. 01351000
LA R0,LCHMDBLW AMOUNT OF STORAGE FOR DMKJRL145I @V60BBBB 01352000
* MESSAGE. 01353000
CALL DMKFREE GET THE STORAGE @V60BBBB 01354000
LR R10,R1 GET ADDRESS TO HOME REGISTER @V60BBBB 01355000
MVC 0(LCHMSGLN,R10),LCHMSG MOVE IN MESSAGE SKELETON @V60BBBB 01356000
MVC LCHMUSER-LCHMSG(,R10),VMUSER MOVE IN ID @V60BBBB 01357000
MVC LCHMTRMA-LCHMSG(,R10),LCHTRMAA MOVE IN TERMINAL @V60BBBB 01358000
* ADDRESS. 01359000
MVC LCHTYPE-LCHMSG(4,R10),=C'LINK' MOVE IN TYPE @V60BBBB 01360000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01361000
IC R1,VMPSWDCT PICK UP CURRENT COUNT @V60BBBB 01362000
CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 01363000
STCM R1,B'0111',LCHIVPNO-LCHMSG(R10) PUT IT INTO @VMI0039 01364000
* MESSAGE. 01365000
MVC LCHMIVP-LCHMSG(,R10),0(R6) MOVE IN INVALID @V60BBBB 01366000
* PASSWORD. 01367000
SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01368000
IC R1,JPSLNKMS PICK UP CURRENT LIMIT @V60BBBB 01369000
CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 01370000
STCM R1,B'0111',LCHIVPLM-LCHMSG(R10) PUT IT INTO @VMI0039 01371000
* MESSAGE. 01372000
LR R1,R9 SETUP TO SWTCHVM @V60BBBB 01373000
LR R9,R11 SAVE OUR VMBLOK ADDRESS @V60BBBB 01374000
SWTCHVM SWITCH TO VMBLOK OF MESSAGE @V60BBBB 01375000
* DESTINATION. 01376000
LR R1,R10 SET MESSAGE ADDRESS FOR DMKQCNWT @V60BBBB 01377000
LA R0,LCHMSGLN SET NUMBER OF BYTES IN MESSAGE @V60BBBB 01378000
LA R3,LCHMDBLW NUMBER OF DBLWDS TO BE FRET'ED @V60BBBB 01379000
CALL DMKQCNWT,PARM=NORET+DFRET+ALARM WRITE THE MSG. @V60BBBB 01380000
LR R1,R9 SETUP TO SWITCH BACK TO CALLER'S @V60BBBB 01381000
* VMBLOK 01382000
SWTCHVM RETURN TO CALLER'S VMBLOK @V60BBBB 01383000
EJECT 01384000
*-------------------------------------------------------------* 01385000
* RETURN FROM JOURNAL INVALID LINK-PASSWORD PROCESSING.* 01386000
*-------------------------------------------------------------* 01387000
SPACE 1 01388000
ILEXIT EXIT RETURN RETURN TO DMKCFM @V60BBBB 01389000
* TITLE ' CONSTANTS' 01390000
*-------------------------------------------------------------* 01391000
* CONSTANTS * 01392000
*-------------------------------------------------------------* 01393000
SPACE 1 01394000
SLYMASK DC AL1(0,1,3,4,6,7,8,9,11,12,14,15) MASK USED TO @V60BBBB 01395000
* TRANSLATE '/' AND ":" FROM DATE 01396000
* AND TIME. 01397000
* TITLE ' PSA DSECT' 01398000
PSA @V60BBBB 01399000
* TITLE ' JPSCBLOK DSECT' 01400000
JPSCBLOK , @V60BBBB 01401000
* TITLE ' ACNTBLOK DSECT' 01402000
COPY ACCOUNT @V60BBBB 01403000
*-------------------------------------------------------------* 01404000
* DEFINE AREA IN WHICH TYPE '04' ACCOUNTING RECORD * 01405000
* WILL BE BUILT. * 01406000
*-------------------------------------------------------------* 01407000
SPACE 1 01408000
ACNTBLOK DSECT @V60BBBB 01409000
ORG ACNTDATA @V60BBBB 01410000
LAUSERID DS CL8 USERID OF COMMAND ISSUER @V60BBBB 01411000
LAACCT# DS CL8 NOT USED (ACCOUNT NUMBER NOT @V60BBBB 01412000
* KNOWN AT TIME OF GENERATION 01413000
* OF THIS RECORD.) 01414000
LADATE DS CL6 DATE @V60BBBB 01415000
LATIME DS CL6 TIME @V60BBBB 01416000
LATERMA DS CL4 TERMINAL ADDRESS @V60BBBB 01417000
LAIPWD DS CL8 INVALID PASSWORD @V60BBBB 01418000
LAAUSID DS CL8 USERID FROM AUTOLOG COMMAND @V60BBBB 01419000
LANUSED DS CL3 NOT USED @V60BBBB 01420000
LAIPWNO DS CL2 INVALID PASSWORD COUNT @V60BBBB 01421000
LAIPWLM DS CL2 INVALID PASSWORD LIMIT @V60BBBB 01422000
DS CL23 NOT USED @V60BBBB 01423000
LATYPE DS CL2 C'04' @V60BBBB 01424000
LAEND EQU * @V60BBBB 01425000
ORG , @V60BBBB 01426000
*-------------------------------------------------------------* 01427000
* DEFINE AREA IN WHICH TYPE '05' ACCOUNTING RECORD * 01428000
* WILL BE BUILT. * 01429000
*-------------------------------------------------------------* 01430000
SPACE 1 01431000
ACNTBLOK DSECT @V60BBBB 01432000
ORG ACNTDATA @V60BBBB 01433000
LBUSERID DS CL8 USERID OF COMMAND ISSUER @V60BBBB 01434000
LBACCT# DS CL8 ACCOUNT NUMBER @V60BBBB 01435000
LBDATE DS CL6 DATE @V60BBBB 01436000
LBTIME DS CL6 TIME @V60BBBB 01437000
LBTERMA DS CL4 TERMINAL ADDRESS @V60BBBB 01438000
LBNUSED DS CL8 NOT USED @V60BBBB 01439000
LBLUSID DS CL8 USERID OF LINKEE @V60BBBB 01440000
LBLADDR DS CL3 MINI-DISK ADDRESS @V60BBBB 01441000
DS CL27 NOT USED @V60BBBB 01442000
LBTYPE DS CL2 C'05' @V60BBBB 01443000
LBEND EQU * @V60BBBB 01444000
ORG , @V60BBBB 01445000
*-------------------------------------------------------------* 01446000
* DEFINE AREA IN WHICH TYPE '06' ACCOUNTING RECORD * 01447000
* WILL BE BUILT. * 01448000
*-------------------------------------------------------------* 01449000
SPACE 1 01450000
ACNTBLOK DSECT @V60BBBB 01451000
ORG ACNTDATA @V60BBBB 01452000
LCUSERID DS CL8 USERID OF COMMAND ISSUER @V60BBBB 01453000
LCACCT# DS CL8 ACCOUNT NUMBER @V60BBBB 01454000
LCDATE DS CL6 DATE @V60BBBB 01455000
LCTIME DS CL6 TIME @V60BBBB 01456000
LCTERMA DS CL4 TERMINAL ADDRESS @V60BBBB 01457000
LCIPWD DS CL8 INVALID PASSWORD @V60BBBB 01458000
LCLUSID DS CL8 USERID OF LINKEE @V60BBBB 01459000
LCLADDR DS CL3 MINI-DISK ADDRESS @V60BBBB 01460000
LCIPWNO DS CL2 INVALID PASSWORD COUNT @V60BBBB 01461000
LCIPWLM DS CL2 INVALID PASSWORD LIMIT @V60BBBB 01462000
LCNUSED DS CL23 NOT USED @V60BBBB 01463000
LCTYPE DS CL2 C'06' @V60BBBB 01464000
LCEND EQU * @V60BBBB 01465000
ORG , @V60BBBB 01466000
* TITLE ' SAVE COPY' 01467000
COPY SAVE @V60BBBB 01468000
* TITLE ' LOCAL WORKAREAS' 01469000
*-------------------------------------------------------------* 01470000
* DEFINE AREA IN WHICH 'QUERY JOURNAL' RESPONSE * 01471000
* WILL BE BUILT. * 01472000
*-------------------------------------------------------------* 01473000
SPACE 1 01474000
SAVEAREA DSECT @V60BBBB 01475000
ORG SAVEWRK2 @V60BBBB 01476000
QJRESP DC C'JOURNAL: LOGON- ' @V60BBBB 01477000
QJLOS DS CL3 @V60BBBB 01478000
DC C', LINK- ' @V60BBBB 01479000
QJLIS DS CL3 @V60BBBB 01480000
QJRL EQU *-QJRESP @V60BBBB 01481000
SPACE 3 01482000
*-------------------------------------------------------------* 01483000
* DEFINE SWITCHES USED BY DMKJRLSE. * 01484000
*-------------------------------------------------------------* 01485000
SPACE 1 01486000
ORG SAVEWRK1 @V60BBBB 01487000
SELOGON DS 0CL(X'80') SET LOGON @V60BBBB 01488000
SELINK DS 0CL(X'40') SET LINK @V60BBBB 01489000
SETSW DS X SWITCHES USED BY SET @V60BBBB 01490000
ORG , @V60BBBB 01491000
SPACE 3 01492000
*-------------------------------------------------------------* 01493000
* DEFINE SWITCHES AND WORKAREAS USED BY DMKRJLLO. * 01494000
*-------------------------------------------------------------* 01495000
SPACE 1 01496000
ORG SAVEWRK1 @V60BBBB 01497000
AUTOLOG DS 0CL(X'80') ON INDICTES INVOCATION IS THE @V60BBBB 01498000
* RESULT OF AUTOLOG COMMAND. 01499000
LOFLAGS DS X FLAGS USED BY DMKJRLLO @V60BBBB 01500000
ORG SAVEWRK2 @V60BBBB 01501000
DATEWORK DS D DMKCVTDT RETURNS DATE HERE @V60BBBB 01502000
TIMEWORK DS D DMKCVTDT RETURNS TIME HERE @V60BBBB 01503000
LCHS23 DS 2F LOGONCHK SAVES REGS 2 & 3 HERE @V60BBBB 01504000
LCHTERMA DS F TERMINAL ADDRESS SAVED HERE @V60BBBB 01505000
LCHSR14 DS F LOGONCHK SAVES R14 HERE @V60BBBB 01506000
ORG , @V60BBBB 01507000
SPACE 3 01508000
*-------------------------------------------------------------* 01509000
* DEFINE WORKAREA USED BY DMKJRLSL. * 01510000
*-------------------------------------------------------------* 01511000
SPACE 1 01512000
ORG SAVEWRK2 @V60BBBB 01513000
DATEWRK DS D DMKCVTDT RETURNS DATE HERE @V60BBBB 01514000
TIMEWRK DS D DMKCVTDT RETURNS TIME HERE @V60BBBB 01515000
LCHTRMA DS F TERMINAL ADDRESS IN EBCDIC @V60BBBB 01516000
ORG , @V60BBBB 01517000
SPACE 3 01518000
*-------------------------------------------------------------* 01519000
* DEFINE WORKAREA USED BY DMKJRLIL. * 01520000
*-------------------------------------------------------------* 01521000
SPACE 1 01522000
ORG SAVEWRK2 @V60BBBB 01523000
DATEWRKA DS D DMKCVTDT RETURNS DATE HERE @V60BBBB 01524000
TIMEWRKA DS D DMKCVTDT RETURNS TIME HERE @V60BBBB 01525000
LCHTRMAA DS F TERMINAL ADDRESS IN EBCDIC @V60BBBB 01526000
ORG , @V60BBBB 01527000
* TITLE ' EQU''S' 01528000
COPY EQU @V60BBBB 01529000
* TITLE ' PWDIBLOK DSECT' 01530000
COPY PWDIBLOK @V60BBBB 01531000
* TITLE ' VMBLOK DSECT' 01532000
COPY VMBLOK @V60BBBB 01533000
END DMKJRL @V60BBBB 01534000