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: AT WITH 00082000 * INVALID PASSWORD NO. () HAS 00083000 * VIOLATED THE LIMIT OF 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: AT WITH 00620000 * INVALID LOGON PASSWORD NO. () HAS 00621000 * VIOLATED THE LIMIT OF 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: AT WITH 01208000 * INVALID LINK PASSWORD NO. () HAS 01209000 * VIOLATED THE LIMIT OF 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