Table of Contents

DMKJRL Source

References

Source Listing

DMKJRL.ASSEMBLE.txt
  1. JRL TITLE 'DMKJRL (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SOURCE @V60BBBB 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKJRL - SECURITY JOURNALING 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO PERFORM ALL FUNCTIONS NECESSARY TO JOURNAL THE 00010000
  11. * INSTANCES OF INVALID LOGON AND LINK PASSWORDS, 00011000
  12. * TO JOURNAL SUCCESSFULL LINKS TO PROTECTED MINI-DISKS, 00012000
  13. * AND TO RESPOND TO SET/QUERY JOURNAL COMMANDS. 00013000
  14. * 00014000
  15. * ATTRIBUTES - 00015000
  16. * 00016000
  17. * REENTRANT, PAGEABLE, CALLED VIA SVC 00017000
  18. * 00018000
  19. * ENTRY POINTS - 00019000
  20. * 00020000
  21. * DMKJRLQU - 'QUERY JOURNAL' 00021000
  22. * DMKJRLSE - 'SET JOURNAL' 00022000
  23. * DMKJRLLO - LOGON (BOTH SUCCESSFUL LOGONS AND THOSE 00023000
  24. * WHICH FAIL BECAUSE OF INVALID PASSWORDS). 00024000
  25. * DMKJRLSC - SUCCESSFUL LINK 00025000
  26. * DMKJRLIL - LINK (ATTEMPTED BUT FAILED BECAUSE OF 00026000
  27. * INVALID PASSWORD). 00027000
  28. * 00028000
  29. * ENTRY CONDITIONS - 00029000
  30. * 00030000
  31. * (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS) 00031000
  32. * 00032000
  33. * EXIT CONDITIONS - 00033000
  34. * 00034000
  35. * (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS) 00035000
  36. * 00036000
  37. * CALLS TO OTHER ROUTINES - 00037000
  38. * DMKACOQU - GENERATE ACCOUNTING RECORD 00038000
  39. * DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 00039000
  40. * DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00040000
  41. * DMKCVTDT - OBTAIN DATE-TIME 00041000
  42. * DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00042000
  43. * DMKFREE - OBTAIN FREE STORAGE 00043000
  44. * DMKFRET - RETURN STORAGE 00044000
  45. * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00045000
  46. * DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 00046000
  47. * DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00047000
  48. * DMKSCNRD - GET REAL DEVICE ADDRESS 00048000
  49. * 00049000
  50. * 00050000
  51. * EXTERNAL REFERENCES - 00051000
  52. * 00052000
  53. * DMKSYSJR - THE JOURNALING AND PASSWORD SUPPRESSION 00053000
  54. * CONTROL BLOCK (JPSCBLOK). 00054000
  55. * 00055000
  56. * TABLES / WORK AREAS - 00056000
  57. * 00057000
  58. * PWDIBLOK - THE PASSWORD INVALID BLOCK. 00058000
  59. * 00059000
  60. * REGISTER USAGE - 00060000
  61. * (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS) 00061000
  62. * 00062000
  63. * NOTES - 00063000
  64. * ALL ROUTINES WHICH CALL AN ENTRY POINT IN DMKJRL 00064000
  65. * HOLD THE GLOBAL SYSTEM LOCK. THEREFORE THIS ROUTINE 00065000
  66. * NEED NOT PERFORM ANY AP DICTATED HANDSTANDS. IT IS 00066000
  67. * WRITTEN AS IT WOULD BE IF IT RAN ONLY ON A UP. 00067000
  68. * 00068000
  69. * OPERATION - 00069000
  70. * (REFER TO INDIVIDUAL ENTRY POINTS FOR DETAILS.) 00070000
  71. * 00071000
  72. * MESSAGES - 00072000
  73. * 00073000
  74. * RESPONSE TO 'QUERY JOURNAL' 00074000
  75. * 00075000
  76. * 'JOURNAL LOGON XXX LINK XXX' 00076000
  77. * 00077000
  78. * WHERE XXX IS REPLACED BY ON OR OFF, AS APPROPRIATE. 00078000
  79. * 00079000
  80. * ERROR MESSAGE (SENT TO USERID DEFINED IN SYSJRL MACRO IN 00080000
  81. * DMKSYS AT SYSGEN TIME.) 00081000
  82. * DMKJRL145I USERID:<USERID> AT <TERM-RADDR> WITH 00082000
  83. * INVALID <TYPE> PASSWORD NO. <XX> (<PSWD>) HAS 00083000
  84. * VIOLATED THE LIMIT OF <YY> 00084000
  85. * 00085000
  86. *. 00086000
  87. EJECT 00087000
  88. COPY OPTIONS @V60BBBB 00088000
  89. COPY LOCAL @V60BBBB 00089000
  90. SPACE 3 00090000
  91. DMKJRL CSECT @V60BBBB 00091000
  92. SPACE 1 00092000
  93. MODID DC CL8'DMKJRL' PAGEABLE MODULE IDENTIFIER @V60BBBB 00093000
  94. SPACE 1 00094000
  95. * ENTRY DMKJRLQU 'QUERY JOURNAL' 00095000
  96. * ENTRY DMKJRLSE 'SET JOURNAL' 00096000
  97. * ENTRY DMKJRLLO LOGON (SUCCESSFUL OR FAILED 00097000
  98. * BECAUSE OF INVALID PASSWORD). 00098000
  99. * ENTRY DMKJRLSL SUCCESSFUL LINK 00099000
  100. * ENTRY DMKJRLIL LINK ATTEMPT WITH INVALID 00100000
  101. * PASSWORD. 00101000
  102. SPACE 1 00102000
  103. EXTRN DMKACOQU @V60BBBB 00103000
  104. EXTRN DMKCVTBD,DMKCVTBH,DMKCVTDT @VMI0039 00104000
  105. EXTRN DMKERMSG @V60BBBB 00105000
  106. EXTRN DMKQCNWT @V60BBBB 00106000
  107. EXTRN DMKSCNAU,DMKSCNFD,DMKSCNRD @V60BBBB 00107000
  108. EXTRN DMKSYSJR @V60BBBB 00108000
  109. SPACE 1 00109000
  110. USING PSA,R0 FOR ALL ENTRIES @V60BBBB 00110000
  111. USING VMBLOK,R11 " @V60BBBB 00111000
  112. USING DMKJRL,R12 " @V60BBBB 00112000
  113. USING SAVEAREA,R13 " @V60BBBB 00113000
  114. * TITLE ' DMKJRLQU' 00114000
  115. * 00115000
  116. * ENTRY POINT NAME - 00116000
  117. * 00117000
  118. * DMKJRLQU - 'QUERY JOURNAL' 00118000
  119. * 00119000
  120. * FUNCTION - 00120000
  121. * 00121000
  122. * TO DISPLAY THE STATUS OF THE JOURNALING FUNCTION. 00122000
  123. * 00123000
  124. * ATTRIBUTES - 00124000
  125. * 00125000
  126. * - REENTRANT, PAGEABLE, CALLED VIA SVC 00126000
  127. * - THIS COMMAND REQUIRES PRIVILEGE CLASS A 00127000
  128. * 00128000
  129. * ENTRY CONDITIONS - 00129000
  130. * 00130000
  131. * R0 - KEYWORD LENGTH (FROM DMKSCNFD) 00131000
  132. * R1 - KEYWORD ADDRESS (FROM DMKSCNFD) 00132000
  133. * R9 - ADDRESS OF COMMAND LINE BUFFER 00133000
  134. * R11- ADDRESS OF VMBLOK 00134000
  135. * R12- BASE ADDRESS OF MODULE 00135000
  136. * R13- ADDRESS OF SAVEAREA 00136000
  137. * 00137000
  138. * EXIT CONDITIONS - 00138000
  139. * 00139000
  140. * IF THE QUERY JOURNAL COMMAND IS VALID, EXIT IS ALWAYS 00140000
  141. * NORMAL. OTHERWISE EXIT IS VIA DMKERMSG. 00141000
  142. * 00142000
  143. * CALLS TO OTHER ROUTINES - 00143000
  144. * 00144000
  145. * DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00145000
  146. * DMKQCNWT - SEND RESPONSE TO USER TERMINAL 00146000
  147. * 00147000
  148. * EXTERNAL REFERENCES - 00148000
  149. * 00149000
  150. * DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00150000
  151. * CONTROL BLOCK (JPSCBLOK). 00151000
  152. * 00152000
  153. * TABLES / WORK AREAS - 00153000
  154. * 00154000
  155. * NONE 00155000
  156. * 00156000
  157. * REGISTER USAGE - 00157000
  158. * 00158000
  159. * GPR 0 = KEYWORD LENGTH (FROM DMKSCNFD) 00159000
  160. * GPR 1 = KEYWORD ADDRESS (FROM DMKSCNFD) 00160000
  161. * GPR 3 = ADDRESS OF JPSCBLOK 00161000
  162. * GPR 12 = BASE REGISTER 00162000
  163. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00163000
  164. * GPR 14 = STANDARD RETURN REGISTER 00164000
  165. * GPR 15 = STANDARD ENTRY POINT REGISTER 00165000
  166. * 00166000
  167. * GPRS 2, AND 4-11 ARE NOT USED. 00167000
  168. * 00168000
  169. * NOTES - 00169000
  170. * THIS ROUTINE IS CALLED BY DMKCFCQU. SINCE THERE IS NO 00170000
  171. * NEED TO RETURN TO DMKCFCQU, THE SAVEAREA POINTED TO 00171000
  172. * BY REG 13 WILL BE RELEASED. THUS, WHEN THIS ROUTINE 00172000
  173. * RETURNS IT WILL GO DIRECTLY BACK TO CFM TO SCAN FOR 00173000
  174. * THE NEXT COMMAND. 00174000
  175. * 00175000
  176. * OPERATION - 00176000
  177. * 1. IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON 00177000
  178. * THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE 00178000
  179. * JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE, 00179000
  180. * AND RETURN. 00180000
  181. * 00181000
  182. * 2. OTHERWISE INITIALIZE WORK AREA WITH MESSAGE INDICATING 00182000
  183. * BOTH LOGON AND LINK JOURNALING 'OFF'. UPDATE 'OFF' TO 00183000
  184. * 'ON', IF REQUIRED, BASED ON STATUS REFLECTED IN 00184000
  185. * JPSCBLOK. 00185000
  186. * 00186000
  187. * 3. DISPLAY THE RESPONSE. 00187000
  188. * 00188000
  189. * 4. RETURN TO DMKCFM. 00189000
  190. * 00190000
  191. * MESSAGES - 00191000
  192. * 00192000
  193. * RESPONSE TO 'QUERY JOURNAL' 00193000
  194. * 00194000
  195. * 'JOURNAL: LOGON- XXX, LINK- XXX' 00195000
  196. * 00196000
  197. * WHERE XXX IS REPLACED BY ON OR OFF, AS APPROPRIATE. 00197000
  198. * 00198000
  199. EJECT 00199000
  200. *-------------------------------------------------------------* 00200000
  201. * - RETURN PREVOIUS SAVE AREA. * 00201000
  202. * - SET UP BASE REGISTER. * 00202000
  203. * - SAVE SOME REGISTERS IN NEW SAVE AREA. * 00203000
  204. *-------------------------------------------------------------* 00204000
  205. SPACE 1 00205000
  206. ENTRY DMKJRLQU @V60BBBB 00206000
  207. DMKJRLQU DS 0H QUERY STATUS OF JOURNALING @V60BBBB 00207000
  208. USING *,R12 ESTABLISH ADDRESSABILITY @V60BBBB 00208000
  209. SVC 16 GIVE UP SAVEAREA @V60BBBB 00209000
  210. SL R12,=A(DMKJRLQU-DMKJRL) GET BEGIN ADDRESS @V60BBBB 00210000
  211. USING DMKJRL,R12 TELL ASSEMBLER @V60BBBB 00211000
  212. STM R0,R1,SAVER0 SAVE R1 &R2 IN NEW SAVE AREA @V60BBBB 00212000
  213. EJECT 00213000
  214. *-------------------------------------------------------------* 00214000
  215. * - IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON * 00215000
  216. * THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE * 00216000
  217. * JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE. * 00217000
  218. *-------------------------------------------------------------* 00218000
  219. SPACE 1 00219000
  220. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00220000
  221. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00221000
  222. TM JRLSQOK,L'JRLSQOK SET/QUERY SUPPORTED? @V60BBBB 00222000
  223. BO QU010 BR IF YES @V60BBBB 00223000
  224. * THE LENGTH AND ADDRESS ARE STILL IN R0 & R1. 00224000
  225. LA R2,3 INVALID OPTION - JOURNAL @V60BBBB 00225000
  226. ICM R0,B'1110',=C'CFC' MAKE IT LOOK AS IT ALWAYS @V60BBBB 00226000
  227. * HAS (BEFORE JOURNALING.) 00227000
  228. CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00228000
  229. * 00229000
  230. * DMKERMSG WILL EXIT AND NOT RETURN HERE. 00230000
  231. * 00231000
  232. EJECT 00232000
  233. *-------------------------------------------------------------* 00233000
  234. * - INITIALIZE WORK AREA WITH MESSAGE INDICATING BOTH * 00234000
  235. * LOGON AND LINK JOURNALING 'OFF'. UPDATE 'OFF' TO * 00235000
  236. * 'ON', IF REQUIRED, BASED ON STATUS REFLECTED IN * 00236000
  237. * JPSCBLOK. * 00237000
  238. *-------------------------------------------------------------* 00238000
  239. SPACE 1 00239000
  240. QU010 MVC QJRESP(QJRL),=C'JOURNAL: LOGON- OFF, LINK- OFF' @V60BBBB 00240000
  241. TM LOGONJRL,L'LOGONJRL LOGON JOURNALING? @V60BBBB 00241000
  242. BZ QU020 BR IF NOT @V60BBBB 00242000
  243. MVC QJLOS,=C'ON ' INDICATE 'ON' STATUS @V60BBBB 00243000
  244. QU020 TM LINKJRL,L'LINKJRL+L'LINKJRLI LINK JOURNALING? @V60BBBB 00244000
  245. BZ QU030 BR IF NOT @V60BBBB 00245000
  246. MVC QJLIS,=C'ON ' INDICATE 'ON' STATUS @V60BBBB 00246000
  247. EJECT 00247000
  248. *-------------------------------------------------------------* 00248000
  249. * - NOW DISPLAY THE RESPONSE. * 00249000
  250. * - THEN RETURN TO DMKCFM. * 00250000
  251. *-------------------------------------------------------------* 00251000
  252. SPACE 1 00252000
  253. QU030 LA R0,QJRL SET MESSAGE LENGTH @V60BBBB 00253000
  254. LA R1,QJRESP SET MESSAGE ADDRESS @V60BBBB 00254000
  255. CALL DMKQCNWT,PARM=NORET SEND THE RESPONSE @V60BBBB 00255000
  256. EXIT RETURN RETURN TO CFM @V60BBBB 00256000
  257. DROP R3 @V60BBBB 00257000
  258. * TITLE ' DMKJRLSE' 00258000
  259. * 00259000
  260. * ENTRY POINT NAME - 00260000
  261. * 00261000
  262. * DMKJRLSE - 'SET JOURNAL' 00262000
  263. * 00263000
  264. * FUNCTION - 00264000
  265. * 00265000
  266. * TO SET THE JOURNAL-LOGON OR JOURNAL-LINK FUNCTIONS 00266000
  267. * ON OR OFF. 00267000
  268. * 00268000
  269. * ATTRIBUTES - 00269000
  270. * 00270000
  271. * - REENTRANT, PAGEABLE, CALLED VIA SVC 00271000
  272. * - THIS COMMAND REQUIRES PRIVILEGE CLASS A 00272000
  273. * 00273000
  274. * ENTRY CONDITIONS - 00274000
  275. * 00275000
  276. * R0 - KEYWORD LENGTH (FROM DMKSCNFD) 00276000
  277. * R1 - KEYWORD ADDRESS (FROM DMKSCNFD) 00277000
  278. * R9 - ADDRESS OF COMMAND LINE BUFFER 00278000
  279. * R11- ADDRESS OF VMBLOK 00279000
  280. * R12- BASE ADDRESS OF MODULE 00280000
  281. * R13- ADDRESS OF SAVEAREA 00281000
  282. * 00282000
  283. * EXIT CONDITIONS - 00283000
  284. * 00284000
  285. * IF THE SET JOURNAL COMMAND IS VALID, EXIT IS ALWAYS 00285000
  286. * NORMAL. OTHERWISE EXIT IS VIA DMKERMSG. 00286000
  287. * 00287000
  288. * CALLS TO OTHER ROUTINES - 00288000
  289. * 00289000
  290. * DMKERMSG - TO CONSTRUCT & SEND ERROR MESSAGES TO USER 00290000
  291. * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00291000
  292. * DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00292000
  293. * 00293000
  294. * EXTERNAL REFERENCES - 00294000
  295. * 00295000
  296. * DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00296000
  297. * CONTROL BLOCK (JPSCBLOK). 00297000
  298. * 00298000
  299. * TABLES / WORK AREAS - 00299000
  300. * 00300000
  301. * NONE 00301000
  302. * 00302000
  303. * REGISTER USAGE - 00303000
  304. * 00304000
  305. * GPR 0 = KEYWORD LENGTH (FROM DMKSCNFD) 00305000
  306. * GPR 1 = KEYWORD ADDRESS (FROM DMKSCNFD) 00306000
  307. * GPR 3 = ADDRESS OF JPSCBLOK 00307000
  308. * GPR 12 = BASE REGISTER 00308000
  309. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00309000
  310. * GPR 14 = STANDARD RETURN REGISTER 00310000
  311. * GPR 15 = STANDARD ENTRY POINT REGISTER 00311000
  312. * 00312000
  313. * GPRS 2, 4, AND 5 ARE USED AS WORK REGISTERS. 00313000
  314. * GPRS 6-11 ARE NOT USED. 00314000
  315. * 00315000
  316. * NOTES - 00316000
  317. * THIS ROUTINE IS CALLED BY DMKCFCQU. SINCE THERE IS NO 00317000
  318. * NEED TO RETURN TO DMKCFCQU, THE SAVEAREA POINTED TO 00318000
  319. * BY REG 13 WILL BE RELEASED. THUS, WHEN THIS ROUTINE 00319000
  320. * RETURNS IT WILL GO DIRECTLY BACK TO CFM TO SCAN FOR 00320000
  321. * THE NEXT COMMAND. 00321000
  322. * 00322000
  323. * OPERATION - 00323000
  324. * 1. IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON 00324000
  325. * THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE 00325000
  326. * JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE, 00326000
  327. * AND RETURN. 00327000
  328. * 2. SCAN FOR NEXT WORD IN COMMAND BUFFER. 00328000
  329. * IF IT IS NOT 'LOGON' OR 'LINK', ISSUE ERROR MESSAGE 00329000
  330. * AND EXIT. 00330000
  331. * 3. SET INTERNAL SWITCH TO REMEMBER WHETHER IT'S 'LOGON' 00331000
  332. * OR 'LINK'. 00332000
  333. * SCAN FOR NEXT WORD IN COMMAND BUFFER. 00333000
  334. * IF IT IS NOT 'ON' OR 'OFF' OR NULL, ISSUE ERROR 00334000
  335. * MESSAGE, AND EXIT. 00335000
  336. * 4. IF LOGON JOURNALING IS BEING TURNED OFF, TURN OFF 00336000
  337. * LOGONJRL BIT IN THE JPSCBLOK AND FREE THE CHAIN OF 00337000
  338. * PWDIBLOK'S, AND EXIT. 00338000
  339. * 5. IF LINK JOURNALING IS BEING TURNED OFF, SIMPLY TURN 00339000
  340. * OFF THE LINKJRL BITS IN THE JPSCBLOK AND EXIT. 00340000
  341. * 6. IF LINK OR LOGON JOURNALING IS BEING TURNED ON, TURN 00341000
  342. * ON THE APPROPRIATE JOURNALING BIT(S) IN JPSCBLOK, 00342000
  343. * AND EXIT. 00343000
  344. * 00344000
  345. * MESSAGES - 00345000
  346. * NONE. 00346000
  347. EJECT 00347000
  348. *-------------------------------------------------------------* 00348000
  349. * - RETURN PREVOIUS SAVE AREA. * 00349000
  350. * - SET UP BASE REGISTER. * 00350000
  351. * - SAVE SOME REGISTERS IN NEW SAVE AREA. * 00351000
  352. *-------------------------------------------------------------* 00352000
  353. SPACE 1 00353000
  354. ENTRY DMKJRLSE @V60BBBB 00354000
  355. DMKJRLSE DS 0H SET STATUS OF JOURNALING @V60BBBB 00355000
  356. USING *,R12 ESTABLISH ADDRESSABILITY @V60BBBB 00356000
  357. SVC 16 GIVE UP SAVEAREA @V60BBBB 00357000
  358. SL R12,=A(DMKJRLSE-DMKJRL) GET BEGIN ADDRESS @V60BBBB 00358000
  359. USING DMKJRL,R12 TELL ASSEMBLER @V60BBBB 00359000
  360. STM R0,R1,SAVER0 SAVE R1 &R2 IN NEW SAVE AREA @V60BBBB 00360000
  361. EJECT 00361000
  362. *-------------------------------------------------------------* 00362000
  363. * - IF THE SET/QUERY JOURNAL COMMANDS ARE NOT VALID ON * 00363000
  364. * THIS SYSTEM (DETERMINED BY THE JRLSQOK BIT IN THE * 00364000
  365. * JPSCBLOK), ISSUE 'INVALID OPTION - JOURNAL' MESSAGE. * 00365000
  366. *-------------------------------------------------------------* 00366000
  367. SPACE 1 00367000
  368. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00368000
  369. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00369000
  370. TM JRLSQOK,L'JRLSQOK SET/QUERY SUPPORTED? @V60BBBB 00370000
  371. BO SE010 BR IF YES @V60BBBB 00371000
  372. * THE LENGTH AND ADDRESS ARE STILL IN R0 & R1. 00372000
  373. LA R2,3 INVALID OPTION - JOURNAL @V60BBBB 00373000
  374. ICM R0,B'1110',=C'CFC' MAKE IT LOOK AS IT ALWAYS @V60BBBB 00374000
  375. * HAS (BEFORE JOURNALING). 00375000
  376. CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00376000
  377. * 00377000
  378. * DMKERMSG WILL EXIT AND NOT RETURN HERE. 00378000
  379. * 00379000
  380. EJECT 00380000
  381. *-------------------------------------------------------------* 00381000
  382. * - SCAN FOR NEXT WORD IN COMMAND BUFFER. * 00382000
  383. * - IF IT IS NOT 'LOGON' OR 'LINK', ISSUE ERROR MESSAGE, * 00383000
  384. * AND EXIT. * 00384000
  385. *-------------------------------------------------------------* 00385000
  386. SPACE 1 00386000
  387. SE010 CALL DMKSCNFD GET NEXT WORD IN COMMAND @V60BBBB 00387000
  388. BZ SE020 BR IF SOMETHING'S THERE @V60BBBB 00388000
  389. SLR R1,R1 INDICATE NO DATA PASSED @V60BBBB 00389000
  390. ICM R0,B'1110',MODID+3 SET MODULE IDENTIFIER @V60BBBB 00390000
  391. LA R2,26 'OPERAND MISSING' MESSAGE @V60BBBB 00391000
  392. CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00392000
  393. * 00393000
  394. * DMKERMSG WILL EXIT AND NOT RETURN HERE. 00394000
  395. * 00395000
  396. SE020 MVI SETSW,X'00' INITIALIZE SWITCHES @V60BBBB 00396000
  397. LA R4,=CL8'LOGON' SETUP FOR SUBROUTINE @V60BBBB 00397000
  398. LA R5,2 SET MINIMUM TRUNC @V60BBBB 00398000
  399. BAL R14,CKKEYW WAS IT 'LOGON' @V60BBBB 00399000
  400. BZ SE030 BR IF IT WAS @V60BBBB 00400000
  401. LA R4,=CL8'LINK' SET UP TO CHECK FOR 'LINK' @V60BBBB 00401000
  402. * MINIMUM TRUNC OF 2 IS STILL IN R5. 00402000
  403. BAL R14,CKKEYW WAS IT 'LINK' @V60BBBB 00403000
  404. BZ SE040 BR IF IT WAS @V60BBBB 00404000
  405. * SEND ERROR MESSAGE. 00405000
  406. SLR R1,R1 INDICATE NO DATA PASSED @V60BBBB 00406000
  407. ICM R0,B'1110',MODID+3 SET MODULE IDENTIFIER @V60BBBB 00407000
  408. LA R2,26 'OPERAND INVALID' MESSAGE @V60BBBB 00408000
  409. CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00409000
  410. * 00410000
  411. * DMKERMSG WILL EXIT AND NOT RETURN HERE. 00411000
  412. * 00412000
  413. EJECT 00413000
  414. *-------------------------------------------------------------* 00414000
  415. * - SET INTERNAL SWITCH TO REMEMBER WHETHER IT'S 'LOGON' * 00415000
  416. * OR 'LINK'. * 00416000
  417. * - SCAN FOR NEXT WORD IN COMMAND BUFFER. * 00417000
  418. * - IF IT IS NOT 'ON' OR 'OFF' OR NULL, ISSUE ERROR * 00418000
  419. * MESSAGE, AND EXIT. * 00419000
  420. *-------------------------------------------------------------* 00420000
  421. SPACE 1 00421000
  422. SE030 OI SELOGON,L'SELOGON INDICATE SET LOGON @V60BBBB 00422000
  423. B SE050 CONTINUE @V60BBBB 00423000
  424. SE040 OI SELINK,L'SELINK INDICATE SET LINK @V60BBBB 00424000
  425. SE050 CALL DMKSCNFD CHECK FOR NEXT KEYWORD @V60BBBB 00425000
  426. BNZ SE100 BR IF NULL- TREAT AS 'ON' @V60BBBB 00426000
  427. LA R4,=C'ON' SETUP TO CHECK FOR 'ON' @V60BBBB 00427000
  428. LA R5,2 MINIMUM TRUNC @V60BBBB 00428000
  429. BAL R14,CKKEYW GO CHECK IT @V60BBBB 00429000
  430. BZ SE100 BR IF IS WAS 'ON' @V60BBBB 00430000
  431. LA R4,=C'OFF' SETUP TO CHECK FOR 'OFF' @V60BBBB 00431000
  432. LA R5,3 MINIMUM TRUNC @V60BBBB 00432000
  433. BAL R14,CKKEYW GO CHECK IT @V60BBBB 00433000
  434. BZ SE060 BR IF IT WAS 'OFF' @V60BBBB 00434000
  435. * SEND ERROR MESSAGE. 00435000
  436. SLR R1,R1 INDICATE NO DATA PASSED @V60BBBB 00436000
  437. ICM R0,B'1110',MODID+3 SET MODULE IDENTIFIER @V60BBBB 00437000
  438. LA R2,26 'OPERAND INVALID' MESSAGE @V60BBBB 00438000
  439. CALL DMKERMSG WRITE ERROR MESSAGE @V60BBBB 00439000
  440. * 00440000
  441. * DMKERMSG WILL EXIT AND NOT RETURN HERE. 00441000
  442. * 00442000
  443. EJECT 00443000
  444. *-------------------------------------------------------------* 00444000
  445. * - IF LOGON JOURNALING IS BEING TURNED OFF, TURN OFF * 00445000
  446. * LOGONJRL BIT IN THE JPSCBLOK AND FREE THE CHAIN OF * 00446000
  447. * PWDIBLOK'S, AND EXIT. * 00447000
  448. * - IF LINK JOURNALING IS BEING TURNED OFF, SIMPLY TURN * 00448000
  449. * OFF THE LINKJRL BITS IN THE JPSCBLOK AND EXIT. * 00449000
  450. *-------------------------------------------------------------* 00450000
  451. SPACE 1 00451000
  452. SE060 DS 0H @V60BBBB 00452000
  453. TM SELOGON,L'SELOGON LOGON? @V60BBBB 00453000
  454. BNO SE070 BR IF NOT @V60BBBB 00454000
  455. NI LOGONJRL,X'FF'-L'LOGONJRL TURN OFF LOGON @V60BBBB 00455000
  456. * JOURNALING. 00456000
  457. * NOW FREE ANY PWDIBLOKS WHICH ARE ON THE CHAIN 00457000
  458. L R1,JPSPCHN GET ADDRESS OF FIRST PWDIBLOK @V60BBBB 00458000
  459. LTR R1,R1 ANYONE HOME? @V60BBBB 00459000
  460. SE065 BZ SEEXIT BR IF NOT- NO BLOCKS LEFT @V60BBBB 00460000
  461. USING PWDIBLOK,R1 ESTAB. ADDRESABILITY @V60BBBB 00461000
  462. L R4,PWDCHAIN GET ADDRESS OF NEXT PWDIBLOK @V60BBBB 00462000
  463. ST R4,JPSPCHN DECHAIN PWDIBLOK @V60BBBB 00463000
  464. LA R0,PWDSIZE DOUBLEWORDS TO FRET @V60BBBB 00464000
  465. CALL DMKFRET RETURN THE BLOCK @V60BBBB 00465000
  466. LTR R1,R4 ANY MORE PWDIBLOK'S LEFT? @V60BBBB 00466000
  467. B SE065 CONTINUE @V60BBBB 00467000
  468. DROP R1 @V60BBBB 00468000
  469. SE070 DS 0H @V60BBBB 00469000
  470. NI LINKJRL,X'FF'-L'LINKJRL-L'LINKJRLI TURN OFF @V60BBBB 00470000
  471. * LINK JOURNALING 00471000
  472. B SEEXIT RETURN @V60BBBB 00472000
  473. EJECT 00473000
  474. *-------------------------------------------------------------* 00474000
  475. * - 'ON' OR NULL WAS SPECIFIED. TURN ON APPROPRIATE * 00475000
  476. * JOURNALING BIT IN JPSCBLOK, AND EXIT. * 00476000
  477. *-------------------------------------------------------------* 00477000
  478. SPACE 1 00478000
  479. SE100 TM SELINK,L'SELINK SET LINK JOURNALING ON? @V60BBBB 00479000
  480. BO SE110 BR IF YES @V60BBBB 00480000
  481. OI LOGONJRL,L'LOGONJRL TURN ON LOGON JOURNALING @V60BBBB 00481000
  482. B SEEXIT RETURN @V60BBBB 00482000
  483. SE110 DS 0H @V60BBBB 00483000
  484. OI LINKJRL,L'LINKJRL+L'LINKJRLI TURN ON LINK @V60BBBB 00484000
  485. * JOURNALING 00485000
  486. EJECT 00486000
  487. *-------------------------------------------------------------* 00487000
  488. * RETURN FROM SET JOURNAL PROCESSING. * 00488000
  489. *-------------------------------------------------------------* 00489000
  490. SPACE 1 00490000
  491. SEEXIT EXIT RETURN RETURN TO DMKCFM @V60BBBB 00491000
  492. DROP R3 @V60BBBB 00492000
  493. EJECT 00493000
  494. *-------------------------------------------------------------* 00494000
  495. * - THIS SUBROUTINE CHECKS TO SEE IF THE KEYWORD JUST * 00495000
  496. * FOUND BY DMKSCNFD MATCHES OR IS A VALID * 00496000
  497. * TRUNCATION FOR THE 8 CHARACTER STRING WHOSE * 00497000
  498. * ADDRESS IS IN REGISTER 4 AND WHOSE MINIMUM * 00498000
  499. * TRUNCATION IS IN REGISTER 5. REGISTERS 0 AND * 00499000
  500. * 1 ARE ASSUMED TO BE AS THEY WERE UPON RETURN * 00500000
  501. * FROM DMKSCNFD. THE RETURN ADDRESS IS ASSUMED TO * 00501000
  502. * BE IN REGISTER 14. A MATCH IS INDICATED BY CC=0. * 00502000
  503. * THIS SUBROUTINE USES R15 AS A WORK REGISTER. ALL * 00503000
  504. * OTHER REGISTERS ARE LEFT UNCHANGED. * 00504000
  505. *-------------------------------------------------------------* 00505000
  506. SPACE 1 00506000
  507. CKKEYW DS 0H @V60BBBB 00507000
  508. CR R0,R5 IS IT LONG ENOUGH? @V60BBBB 00508000
  509. BLR R14 RETURN IF NOT (WITH CC NE 0) @V60BBBB 00509000
  510. LR R15,R0 GET LENGTH TO R15 @V60BBBB 00510000
  511. BCTR R15,0 DECREMENT FOR EXECUTE @V60BBBB 00511000
  512. EX R15,CKCLC MATCH? @V60BBBB 00512000
  513. BR R14 RETURN WITH CC INDICATING @V60BBBB 00513000
  514. * MATCH IF 0, NO MATCH IF NON-0. 00514000
  515. CKCLC CLC 0(0,R1),0(R4) EXECUTED INSTRUCTION @V60BBBB 00515000
  516. * TITLE ' DMKJRLLO' 00516000
  517. * 00517000
  518. * ENTRY POINT NAME - 00518000
  519. * 00519000
  520. * DMKJRLLO - CALLED BY DMKLOG (LOGON) FOR EACH 00520000
  521. * SUCCESSFUL LOGON AND FOR EACH LOGON 00521000
  522. * WHICH FAILS BECAUSE OF AN INVALID 00522000
  523. * PASSWORD. 00523000
  524. * 00524000
  525. * FUNCTION - 00525000
  526. * 00526000
  527. * JOURNAL INSTANCES OF THE USE OF INVALID LOGON 00527000
  528. * PASSWORDS. 00528000
  529. * 00529000
  530. * ATTRIBUTES - 00530000
  531. * 00531000
  532. * REENTRANT, PAGEABLE, CALLED VIA SVC 00532000
  533. * 00533000
  534. * ENTRY CONDITIONS - 00534000
  535. * 00535000
  536. * R2 - = 0 FOR SUCCESSFUL LOGON/AUTOLOG 00536000
  537. * = ADDRESS OF INVALID PASSWORD OTHERWISE 00537000
  538. * R4 - = 0 IF LOGON COMMAND 00538000
  539. * = ADDRESS OF ISSUER OF AUTOLOG COMMAND OTHERWISE 00539000
  540. * R5 - = ADDRESS OF USERID OF COMMAND ISSUER 00540000
  541. * R11- = ADDRESS OF VMBLOK 00541000
  542. * R12- = BASE ADDRESS OF MODULE 00542000
  543. * R13- = ADDRESS OF SAVEAREA 00543000
  544. * 00544000
  545. * EXIT CONDITIONS - 00545000
  546. * 00546000
  547. * EXIT IS ALWAYS NORMAL. THERE ARE NO ERROR EXITS. 00547000
  548. * 00548000
  549. * CALLS TO OTHER ROUTINES - 00549000
  550. * 00550000
  551. * DMKACOQU - GENERATE ACCOUNTING RECORD 00551000
  552. * DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 00552000
  553. * DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00553000
  554. * DMKCVTDT - OBTAIN DATE-TIME 00554000
  555. * DMKFREE - OBTAIN FREE STORAGE 00555000
  556. * DMKFRET - RETURN STORAGE 00556000
  557. * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00557000
  558. * DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 00558000
  559. * DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 00559000
  560. * DMKSCNRD - GET REAL DEVICE ADDRESS 00560000
  561. * 00561000
  562. * EXTERNAL REFERENCES - 00562000
  563. * DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00563000
  564. * CONTROL BLOCK (JPSCBLOK). 00564000
  565. * 00565000
  566. * TABLES / WORK AREAS - 00566000
  567. * 00567000
  568. * PWDIBLOK - PASSWORD-INVALID BLOCK 00568000
  569. * 00569000
  570. * REGISTER USAGE - 00570000
  571. * 00571000
  572. * GPR 2 = ADDRESS OF INVALID PASSWORD OR, IF 00572000
  573. * LOGON/AUTOLOG WAS SUCCESSFUL, 0. 00573000
  574. * GPR 3 = ADDRESS OF JPSCBLOK 00574000
  575. * GPR 4 = ADDRESS OF COMMAND ISSUERS VMBLOK 00575000
  576. * GPR 5 = ADDRESS OF USERID OF COMMAND ISSUER 00576000
  577. * GPR 6 = ADDRESS OF PWDIBLOK 00577000
  578. * GPR 7 = USED IN SCANNING PWDIBLOK'S TO POINT AT 00578000
  579. * PREVIOUS LINK FIELD. 00579000
  580. * GPR 8 = CONTAINS TERMINALS RDEVBLOK ADDRESS (OR 00580000
  581. * 0 IF NO TERMINAL) IN INITIAL PROCESSING. 00581000
  582. * IT IS A WORK REGISTER THEREAFTER. 00582000
  583. * GPR 11 = ADDRESS OF CALLER'S VMBLOK 00583000
  584. * GPR 12 = BASE REGISTER 00584000
  585. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00585000
  586. * GPR 14 = STANDARD RETURN REGISTER 00586000
  587. * GPR 15 = STANDARD ENTRY POINT REGISTER 00587000
  588. * 00588000
  589. * GPRS 0-1, AND 9-10 ARE WORK REGISTERS 00589000
  590. * 00590000
  591. * NOTES - 00591000
  592. * NONE. 00592000
  593. * 00593000
  594. * OPERATION - 00594000
  595. * 00595000
  596. * 1. SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. 00596000
  597. * 2. SET FLAG IF THIS IS AN AUTOLOG INITIATED ENTRY. 00597000
  598. * 3. GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC. 00598000
  599. * 4. SCAN PWDIBLOK'S FOR A MATCH ON EITHER USERID OF 00599000
  600. * COMMAND ISSUER OR TERMINAL ADDRESS. 00600000
  601. * 5. IF THERE IS NO MATCH AND THE PASSWORD IS VALID, ALL 00601000
  602. * IS WELL AND WE CAN EXIT. 00602000
  603. * 6. IF THERE IS NO MATCH AND THE PASSWORD IS INVALID, 00603000
  604. * OBTAIN STORAGE FOR A PWDIBLOK, INITIALIZE IT, AND 00604000
  605. * PUT IT ON THE CHAIN ANCHORED IN THE JPSCBLOK. 00605000
  606. * 7. IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD 00606000
  607. * WAS VALID, DECHAIN THE PWDIBLOK, FREE THE STORAGE IT 00607000
  608. * OCCUPIES, AND EXIT. 00608000
  609. * 8. IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD 00609000
  610. * WAS INVALID, INCREMENT THE INVALID PASSWORD COUNT IN 00610000
  611. * THE PWDIBLOK, CALL LOGONCHK TO ISSUE ANY MESSAGE 00611000
  612. * OR GENERATE ANY ACCOUNTING RECORD THAT MAY BE 00612000
  613. * REQUIRED, AND EXIT. 00613000
  614. * 9. RETURN FROM JOURNAL LOGON PROCESSING. 00614000
  615. * 00615000
  616. * MESSAGES - 00616000
  617. * 00617000
  618. * ERROR MESSAGE (SENT TO USERID DEFINED IN SYSJRL MACRO IN 00618000
  619. * DMKSYS AT SYSGEN TIME.) 00619000
  620. * DMKJRL145I USERID:<USERID> AT <TERM-RADDR> WITH 00620000
  621. * INVALID LOGON PASSWORD NO. <XX> (<PSWD>) HAS 00621000
  622. * VIOLATED THE LIMIT OF <YY> 00622000
  623. * 00623000
  624. EJECT 00624000
  625. *-------------------------------------------------------------* 00625000
  626. * - SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. * 00626000
  627. * - SET FLAG IF THIS IS AN AUTOLOG INITIATED ENTRY. * 00627000
  628. * - INITIALIZE ADDRESS OF VMBLOK OF COMMAND ISSUER IN R4.* 00628000
  629. * - GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC. * 00629000
  630. *-------------------------------------------------------------* 00630000
  631. SPACE 1 00631000
  632. DMKJRLLO RELOC ENTRY FROM LOGON PROCESS (DMKLOG)@V60BBBB 00632000
  633. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 00633000
  634. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 00634000
  635. MVI LOFLAGS,L'AUTOLOG INITIALIZE FLAGS TO BE USED @V60BBBB 00635000
  636. LTR R4,R4 AUTOLOG? @V60BBBB 00636000
  637. BNZ LO010 BR IF YES @V60BBBB 00637000
  638. NI LOFLAGS,X'FF'-L'AUTOLOG TURN OFF AUTOLOG FLAG @V60BBBB 00638000
  639. LR R4,R11 SET R4 TO ISSUER OF LOGON @V60BBBB 00639000
  640. LO010 MVC LCHTERMA,=C'NONE' INITIALIZE FIELD TO CONTAIN @V60BBBB 00640000
  641. * TERMINAL ADDRESS TO 'NONE'. 00641000
  642. * (THERE MAY BE NO TERMINAL E.G., 00642000
  643. * WHEN A DISCONNECT'ED MACHINE 00643000
  644. * ISSUES AN AUTOLOG.) 00644000
  645. L R8,VMTERM-VMBLOK(,R4) GET ADDRESS OF RDEVBLOK @V60BBBB 00645000
  646. LTR R8,R8 ONE THERE? @V60BBBB 00646000
  647. BZ LO020 BR IF NOT @V60BBBB 00647000
  648. * DMKSCNRD WANTS RDEVBLOK ADDRESS IN R8. 00648000
  649. CALL DMKSCNRD GET REAL DEVICE ADDRESS @V60BBBB 00649000
  650. CALL DMKCVTBH GET IT INTO EBCDIC @V60BBBB 00650000
  651. ST R1,LCHTERMA SAVE IT FOR LATER @V60BBBB 00651000
  652. EJECT 00652000
  653. *-------------------------------------------------------------* 00653000
  654. * - SCAN PWDIBLOK'S FOR A MATCH ON EITHER USERID OF * 00654000
  655. * COMMAND ISSUER OR TERMINAL ADDRESS. * 00655000
  656. * - IF THERE IS NO MATCH AND THE PASSWORD IS VALID, ALL * 00656000
  657. * IS WELL AND WE CAN EXIT. * 00657000
  658. * - IF THERE IS NO MATCH AND THE PASSWORD IS INVALID, * 00658000
  659. * OBTAIN STORAGE FOR A PWDIBLOK, INITIALIZE IT, AND * 00659000
  660. * PUT IT ON THE CHAIN ANCHORED IN THE JPSCBLOK. * 00660000
  661. *-------------------------------------------------------------* 00661000
  662. SPACE 1 00662000
  663. LO020 L R6,JPSPCHN PRIME THE PUMP @V60BBBB 00663000
  664. LA R7,JPSPCHN PRIME PREVIOUS-LINK-FIELD POINTER@V60BBBB 00664000
  665. LO030 LTR R6,R6 ANY MORE BLOCKS TO SCAN? @V60BBBB 00665000
  666. BZ LO100 BR IF NOT - NO MATCH @V60BBBB 00666000
  667. USING PWDIBLOK,R6 ESTABLISH ADDRESSABILITY @V60BBBB 00667000
  668. CLC PWDUSRID,0(R5) USERID MATCH? @V60BBBB 00668000
  669. BE LO200 BR IF YES - WE HAVE A MATCH @V60BBBB 00669000
  670. LTR R8,R8 WAS THERE A TERMINAL? @V60BBBB 00670000
  671. BZ LO040 BR IF NOT @V60BBBB 00671000
  672. CLC PWDTERMA,LCHTERMA SAME TERMINAL ADDRESS? @V60BBBB 00672000
  673. BE LO200 BR IF YES - THIS, ALSO, WE @V60BBBB 00673000
  674. * CONSIDER A MATCH. 00674000
  675. LO040 LA R7,PWDCHAIN SAVE POINTER TO THIS LINK FIELD @V60BBBB 00675000
  676. * IN CASE WE MUST DEQUEUE THE NEXT 00676000
  677. * PWDIBLOK. 00677000
  678. L R6,PWDCHAIN GET POINTER TO NEXT @V60BBBB 00678000
  679. B LO030 CONTINUE SEARCH @V60BBBB 00679000
  680. DROP R6 @V60BBBB 00680000
  681. LO100 DS 0H COME HERE IF NO MATCH @V60BBBB 00681000
  682. LTR R2,R2 WAS PASSWORD VALID? @V60BBBB 00682000
  683. BZ LOEXIT BR IF YES - ALL'S WELL @V60BBBB 00683000
  684. LA R0,PWDSIZE SIZE OF PWDIBLOK FOR DMKFREE @V60BBBB 00684000
  685. CALL DMKFREE GET STORAGE FOR PWDIBLOK @V60BBBB 00685000
  686. LR R6,R1 GET ADDRESS TO PERMANENT HOME @V60BBBB 00686000
  687. USING PWDIBLOK,R6 ESTABLISH ADDRESSABILITY @V60BBBB 00687000
  688. MVC PWDUSRID,0(R5) MOVE IN USERID @V60BBBB 00688000
  689. MVC PWDTERMA,LCHTERMA MOVE IN TERMINAL ADDRESS @V60BBBB 00689000
  690. LR R9,R2 SAVE R2 ACROSS DMKCVTDT @V60BBBB 00690000
  691. LA R1,DATEWORK WHERE DATE SHOULD BE STORED @V60BBBB 00691000
  692. * BY DMKCVTDT. 00692000
  693. LA R2,TIMEWORK WHERE TIME SHOULD BE STORED @V60BBBB 00693000
  694. * BY DMKCVTDT. 00694000
  695. CALL DMKCVTDT GET DATE AND TIME. @V60BBBB 00695000
  696. LR R2,R9 RESTORE R2 @V60BBBB 00696000
  697. MVC PWDDATE(L'PWDDATE+L'PWDTIME),SLYMASK MOVE IN @V60BBBB 00697000
  698. * MASK TO BE TRANSLATED TO REMOVE 00698000
  699. * :'S FROM TIME AND /'S FROM DATE. 00699000
  700. TR PWDDATE(L'PWDDATE+L'PWDTIME),DATEWORK GET @V60BBBB 00700000
  701. * DATE & TIME IN MMDDYYHHMMSS FORMAT. 00701000
  702. * 00702000
  703. MVI PWDINVCT,X'01' INITIALIZE INVALID PASSWORD @V60BBBB 00703000
  704. * COUNT TO 1. 00704000
  705. OI PWDLOG,L'PWDLOG ASSUME THIS IS LOGON @V60BBBB 00705000
  706. TM AUTOLOG,L'AUTOLOG WAS IT AUTOLOG? @V60BBBB 00706000
  707. BZ LO120 BR IF NOT @V60BBBB 00707000
  708. XI PWDLOG,L'PWDLOG+L'PWDALOG TURN LOGON BIT OFF @V60BBBB 00708000
  709. * AND AUTOLOG BIT ON. 00709000
  710. LO120 L R1,JPSPCHN PICK UP ANCHOR @V60BBBB 00710000
  711. ST R1,PWDCHAIN PUT VALUE INTO NEW PWDIBLOK @V60BBBB 00711000
  712. ST R6,JPSPCHN PUT NEW GUY INTO SERVICE. @V60BBBB 00712000
  713. BAL R14,LOGONCHK GO DO ANYTHING ELSE WHICH @V60BBBB 00713000
  714. * MAY BE REQUIRED FOR THIS LOGON 00714000
  715. * ATTEMPT. 00715000
  716. B LOEXIT ABANDON SHIP @V60BBBB 00716000
  717. EJECT 00717000
  718. *-------------------------------------------------------------* 00718000
  719. * - IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD * 00719000
  720. * WAS VALID, DECHAIN THE PWDIBLOK, FREE THE STORAGE IT * 00720000
  721. * OCCUPIES, AND EXIT. * 00721000
  722. * - IF A MATCHING PWDIBLOK WAS FOUND AND THE PASSWORD * 00722000
  723. * WAS INVALID, INCREMENT THE INVALID PASSWORD COUNT IN * 00723000
  724. * THE PWDIBLOK, CALL LOGONCHK TO ISSUE ANY MESSAGE * 00724000
  725. * OR GENERATE ANY ACCOUNTING RECORD THAT MAY BE * 00725000
  726. * REQUIRED, AND EXIT. * 00726000
  727. *-------------------------------------------------------------* 00727000
  728. SPACE 1 00728000
  729. LO200 DS 0H COME HERE IF MATCH FOUND @V60BBBB 00729000
  730. LTR R2,R2 PASSWORD VALID? @V60BBBB 00730000
  731. BNZ LO300 BR IF NOT @V60BBBB 00731000
  732. * R7 CONTAINS POINTER TO PREVIOUS LINK FIELD, SO 00732000
  733. * TO DEQUEUE WE NEED ONLY: 00733000
  734. L R1,PWDCHAIN GET POINTER TO NEXT FROM BLOCK @V60BBBB 00734000
  735. * TO BE DEQUEUED AND... 00735000
  736. ST R1,0(,R7) STORE IT IN PREVIOUS LINK FIELD @V60BBBB 00736000
  737. LA R0,PWDSIZE SET AMOUNT OF STORAGE TO BE @V60BBBB 00737000
  738. * FRET'ED. 00738000
  739. LR R1,R6 POINT AT PWDIBLOK @V60BBBB 00739000
  740. CALL DMKFRET RETURN THE PWDIBLOK @V60BBBB 00740000
  741. B LOEXIT ABANDON SHIP @V60BBBB 00741000
  742. LO300 DS 0H MATCH FOUND - PASSWORD INVALID @V60BBBB 00742000
  743. IC R1,PWDINVCT GET THE CURRENT INCORRECT @V60BBBB 00743000
  744. * PASSWORD COUNT. 00744000
  745. LA R1,1(,R1) ADD 1 @V60BBBB 00745000
  746. STC R1,PWDINVCT STORE IT BACK INTO PWDIBLOK @V60BBBB 00746000
  747. BAL R14,LOGONCHK GO TAKE ANY FURTHER ACTION WHICH @V60BBBB 00747000
  748. * MAY BE REQUIRED. 00748000
  749. B LOEXIT CONTINUE @V60BBBB 00749000
  750. EJECT 00750000
  751. *-------------------------------------------------------------* 00751000
  752. * RETURN FROM JOURNAL LOGON PROCESSING. * 00752000
  753. *-------------------------------------------------------------* 00753000
  754. SPACE 1 00754000
  755. LOEXIT EXIT RETURN RETURN TO DMKCFM @V60BBBB 00755000
  756. EJECT 00756000
  757. *-------------------------------------------------------------* 00757000
  758. * - THIS SUBROUTINE CHECKS TO SEE WHETHER THE MESSAGE * 00758000
  759. * AND/OR THE ACCOUNTING RECORD THRESHOLDS HAVE BEEN * 00759000
  760. * EQUALLED OR EXCEEDED. IF THEY HAVE, APPROPRIATE * 00760000
  761. * ACTIONS ARE TAKEN. * 00761000
  762. * - UPON ENTRY TO THIS SUBROUTINE, IT IS ASSUMED * 00762000
  763. * THAT R2 POINTS AT THE INVALID PASSWORD, * 00763000
  764. * R3 POINTS AT THE JPSCBLOK, R4 POINTS AT THE VMBLOK * 00764000
  765. * OF THE COMMAND ISSUER, R5 POINTS AT THE COMMAND * 00765000
  766. * ISSUER'S USERID, R6 POINTS AT THE PWDIBLOK, R11 * 00766000
  767. * POINTS AT THE CALLERS VMBLOK, AND R14 CONTAINS THE * 00767000
  768. * RETURN ADDRESS. * 00768000
  769. *-------------------------------------------------------------* 00769000
  770. SPACE 3 00770000
  771. *-------------------------------------------------------------* 00771000
  772. * - SKIP GENERATION OF ACCOUNTING RECORD IF NO RECORDS * 00772000
  773. * ARE TO BE SENT OR IF ACCOUNTING RECORD THRESHOLD * 00773000
  774. * HAS NOT BEEN EQUALLED OR EXCEEDED. * 00774000
  775. * - OTHERWISE, GET STORAGE FOR AN ACNTBLOK. * 00775000
  776. * - BUILD THE TYPE '04' RECORD IN THE OBTAINED STORAGE. * 00776000
  777. * - QUEUE THE ACNTBLOK VIA A CALL TO DMKACOQU. * 00777000
  778. *-------------------------------------------------------------* 00778000
  779. SPACE 1 00779000
  780. LOGONCHK DS 0H @V60BBBB 00780000
  781. ST R14,LCHSR14 SAVE RETURN ADDRESS @V60BBBB 00781000
  782. CLI JPSLOGAR,X'00' SHOULD ANY ACCOUNTING RECORDS @V60BBBB 00782000
  783. * BE GENERATED? 00783000
  784. BE LCH100 BR IF NOT @V60BBBB 00784000
  785. CLC PWDINVCT,JPSLOGAR HAS THE ACCOUNTING RECORD @V60BBBB 00785000
  786. * THRESHOLD BEEN MET OR EXCEEDED? 00786000
  787. BL LCH100 BR IF NOT @V60BBBB 00787000
  788. * BUILD TYPE '04' ACCOUNTING RECORD. 00788000
  789. LA R0,ACNTSIZE SET SIZE OF ACNTBLOK @V60BBBB 00789000
  790. CALL DMKFREE GET AN ACNTBLOK @V60BBBB 00790000
  791. LR R10,R1 MOVE TO PERMANENT REG @V60BBBB 00791000
  792. USING ACNTBLOK,R10 ESTABLISH ADDRESSABILITY @V60BBBB 00792000
  793. MVC LAUSERID,0(R5) MOVE IN COMMAND ISSUER'S ID @V60BBBB 00793000
  794. MVC LAACCT#,BLANKS CLEAR ACCOUNT NUMBER SLOT (AT @V60BBBB 00794000
  795. * THIS POINT WE DON'T KNOW IT). 00795000
  796. CLC PWDINVCT,JPSLOGAR IS THIS THE 1ST CARD TO BE @VA11133 00795100
  797. * PUNCHED? 00795150
  798. BE CARD1 YES ONTO CARD1 @VA11133 00795200
  799. LR R9,R2 SAVE R2 ACROSS DMKCVTDT @VA11133 00795250
  800. LA R1,DATEWORK CATCHES THE DATE FROM DMKCVTDT @VA11133 00795300
  801. LA R2,TIMEWORK CATCHES THE TIME FROM DMKCVTDT @VA11133 00795350
  802. CALL DMKCVTDT GET DATE AND TIME @VA11133 00795400
  803. LR R2,R9 RESTORE R2 @VA11133 00795450
  804. MVC LADATE(L'LADATE+L'LATIME),SLYMASK MOVE IN MASK @VA11133 00795500
  805. * TO REMOVE : AND / 00795550
  806. TR LADATE(L'LADATE+L'LATIME),DATEWORK GET DATE IN @VA11133 00795600
  807. * MMDDYYHHMMSS FORMAT 00795650
  808. B CARD2 @VA11133 00795700
  809. CARD1 DS 0H @VA11133 00795750
  810. MVC LADATE(L'LADATE+L'LATIME),PWDDATE MOVE IN DATE @V60BBBB 00796000
  811. * AND TIME (MMDDYYHHMMSS). 00797000
  812. CARD2 DS 0H @VA11133 00797050
  813. MVC LATERMA,LCHTERMA MOVE IN TERMINAL ADDRESS @V60BBBB 00798000
  814. MVC LAIPWD,0(R2) MOVE IN INVALID PASSWORD @V60BBBB 00799000
  815. MVI LAAUSID,C' ' CLEAR UNUSED PORTIONS @V60BBBB 00800000
  816. MVC LAAUSID+1(LAEND-LAAUSID-1),LAAUSID ** @V60BBBB 00801000
  817. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00802000
  818. IC R1,PWDINVCT PICK UP CURRENT COUNT @V60BBBB 00803000
  819. CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 00804000
  820. STCM R1,B'0011',LAIPWNO PUT IT INTO ACCOUNTING REC. @V60BBBB 00805000
  821. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00806000
  822. IC R1,JPSLOGAR PICK UP CURRENT LIMIT @V60BBBB 00807000
  823. CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 00808000
  824. STCM R1,B'0011',LAIPWLM PUT IT INTO ACCOUNTING REC. @V60BBBB 00809000
  825. TM AUTOLOG,L'AUTOLOG AUTOLOG COMMAND? @V60BBBB 00810000
  826. BZ LCH020 BR IF NOT @V60BBBB 00811000
  827. MVC LAAUSID,VMUSER-VMBLOK(R4) MOVE IN USERID OF @V60BBBB 00812000
  828. * ISSUER OF AUTOLOG. 00813000
  829. LCH020 MVC LATYPE,=C'04' SET TO TYPE '04' ACCOUNTING @V60BBBB 00814000
  830. * RECORD 00815000
  831. LR R8,R4 SAVE R4 ACROSS CALL TO DMKACOQU @V60BBBB 00816000
  832. LR R4,R10 ACOQU WANTS BUFFER ADDRESS IN R4 @V60BBBB 00817000
  833. CALL DMKACOQU QUEUE THE ACCOUNT CARD BUFFER @V60BBBB 00818000
  834. * THE BUFFER WILL BE FRET'ED BY THE ACCOUNTING 00819000
  835. * ROUTINES. WE CAN JUST RELAX AND GO ON DOING OUR 00820000
  836. * OWN THING. 00821000
  837. DROP R10 @V60BBBB 00822000
  838. LR R4,R8 RESTORE R4 @V60BBBB 00823000
  839. EJECT 00824000
  840. *-------------------------------------------------------------* 00825000
  841. * - SKIP GENERATION OF MESSAGE IF NO MESSAGES ARE TO BE * 00826000
  842. * SENT OR IF MESSAGE THRESHOLD HAS NOT BEEN EQUALLED * 00827000
  843. * OR EXCEEDED. * 00828000
  844. * - OTHERWISE, GET STORAGE FOR A DMKJRL145I MESSAGE. * 00829000
  845. * - BUILD THE MESSAGE IN THE OBTAINED STORAGE. * 00830000
  846. * - SEND THE MESSAGE VIA A CALL TO DMKQCNWT. * 00831000
  847. *-------------------------------------------------------------* 00832000
  848. SPACE 1 00833000
  849. LCH100 DS 0H @V60BBBB 00834000
  850. CLI JPSLOGMS,X'00' SHOULD ANY MESSAGES BE SENT? @V60BBBB 00835000
  851. BE LCHRETRN BR IF NOT @V60BBBB 00836000
  852. CLC PWDINVCT,JPSLOGMS HAS THRESHOLD BEEN MET OR @V60BBBB 00837000
  853. * EXCEEDED? 00838000
  854. BL LCHRETRN BR IF NOT @V60BBBB 00839000
  855. LA R1,JPSLOGU POINT TO USERID TO WHOM MESSAGE @V60BBBB 00840000
  856. * SHOULD BE SENT. 00841000
  857. LA R0,8 SET USERID LENGTH @V60BBBB 00842000
  858. CALL DMKSCNAU GET THE VMBLOK ADDRESS @V60BBBB 00843000
  859. BNZ LCH110 BR IF USERID NOT ABLE TO @V60BBBB 00844000
  860. * RECEIVE MESSAGE. 00845000
  861. TM VMOSTAT-VMBLOK(R1),VMDISC+VMKILL USER DYING @V60BBBB 00846000
  862. * OR DISCONNECTED? 00847000
  863. BNZ LCH110 BR IF YES- CAN'T SEND TO HIM(HER)@V60BBBB 00848000
  864. CLC VMTERM-VMBLOK(,R1),F0 ANY TERMINAL? @V60BBBB 00849000
  865. BNE LCH200 ALL'S WELL- LET 'ER RIP @V60BBBB 00850000
  866. LCH110 L R1,ASYSOP GET OPERATOR'S VMBLOK @V60BBBB 00851000
  867. CLC VMTERM-VMBLOK(,R1),F0 OPERATOR THERE? @V60BBBB 00852000
  868. BE LCHRETRN BR IF NOT- WE CAN DO NO MORE @V60BBBB 00853000
  869. LCH200 LR R9,R1 SAVE ADDRESS OF VMBLOK OF USER @V60BBBB 00854000
  870. * TO RECEIVE MESSAGE. 00855000
  871. LA R0,LCHMDBLW AMOUNT OF STORAGE FOR DMKJRL145I @V60BBBB 00856000
  872. * MESSAGE. 00857000
  873. CALL DMKFREE GET THE STORAGE @V60BBBB 00858000
  874. LR R10,R1 GET ADDRESS TO NEW HOME @V60BBBB 00859000
  875. MVC 0(LCHMSGLN,R10),LCHMSG MOVE IN MESSAGE SKELETON @V60BBBB 00860000
  876. MVC LCHMUSER-LCHMSG(,R10),0(R5) MOVE IN ID @V60BBBB 00861000
  877. MVC LCHMTRMA-LCHMSG(,R10),LCHTERMA MOVE IN TERMINAL @V60BBBB 00862000
  878. * ADDRESS. 00863000
  879. MVC LCHTYPE-LCHMSG(,R10),=C'LOGON' MOVE IN TYPE @V60BBBB 00864000
  880. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00865000
  881. IC R1,PWDINVCT PICK UP CURRENT COUNT @V60BBBB 00866000
  882. CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 00867000
  883. STCM R1,B'0111',LCHIVPNO-LCHMSG(R10) PUT IT INTO @VMI0039 00868000
  884. * MESSAGE. 00869000
  885. MVC LCHMIVP-LCHMSG(,R10),0(R2) MOVE IN INVALID @V60BBBB 00870000
  886. * PASSWORD. 00871000
  887. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 00872000
  888. IC R1,JPSLOGMS PICK UP CURRENT LIMIT @V60BBBB 00873000
  889. CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 00874000
  890. STCM R1,B'0111',LCHIVPLM-LCHMSG(R10) PUT IT INTO @VMI0039 00875000
  891. * MESSAGE. 00876000
  892. TM AUTOLOG,L'AUTOLOG WAS THIS MESSAGE THE RESULT @V60BBBB 00877000
  893. * OF AN AUTOLOG? 00878000
  894. BZ LCH300 BR IF NOT - MESSAGE IS COMPLETE @V60BBBB 00879000
  895. MVC LCHALOG-LCHMSG(,R10),ALSUFF MOVE IN AUTOLOG @V60BBBB 00880000
  896. * SUFFIX. 00881000
  897. MVC LCHALOG-LCHMSG+(ALSNAME-ALSUFF)(L'ALSNAME,R10),VMUSER-VM+00882000
  898. BLOK(R4) MOVE IN USERID OF ISSUER OF @V60BBBB 00883000
  899. * AUTOLOG COMMAND. 00884000
  900. LCH300 LR R1,R9 SETUP TO SWTCHVM @V60BBBB 00885000
  901. LR R9,R11 SAVE OUR VMBLOK ADDRESS @V60BBBB 00886000
  902. * SWITCH TO VMBLOK OF MESSAGE 00887000
  903. SWTCHVM DESTINATION. @V60BBBB 00888000
  904. LR R1,R10 PUT MESSAGE ADDRESS IN R1 FOR @V60BBBB 00889000
  905. * DMKQCNWT. 00890000
  906. LA R0,LCHMSGLN SET NUMBER OF BYTES IN MESSAGE @V60BBBB 00891000
  907. STM R2,R3,LCHS23 SAVE REGS USED BY DMKQCNWT @V60BBBB 00892000
  908. LA R3,LCHMDBLW NUMBER OF DBLWDS TO BE FRET'ED @V60BBBB 00893000
  909. CALL DMKQCNWT,PARM=NORET+DFRET+ALARM WRITE THE MSG. @V60BBBB 00894000
  910. LR R1,R9 SETUP TO SWITCH BACK TO CALLER'S @V60BBBB 00895000
  911. * VMBLOK 00896000
  912. SWTCHVM RETURN TO CALLER'S VMBLOK @V60BBBB 00897000
  913. LM R2,R3,LCHS23 RESTORE REGISTERS 2 & 3 @V60BBBB 00898000
  914. SPACE 3 00899000
  915. *-------------------------------------------------------------* 00900000
  916. * RETURN TO CALLER. * 00901000
  917. *-------------------------------------------------------------* 00902000
  918. SPACE 1 00903000
  919. LCHRETRN L R14,LCHSR14 RESTORE RETURN ADDRESS @V60BBBB 00904000
  920. BR R14 RETURN TO CALLER @V60BBBB 00905000
  921. EJECT 00906000
  922. ALSUFF DC C', A=' SUFFIX FOR FOLLOWING MESSAGE TO @V60BBBB 00907000
  923. ALSNAME DS CL8 IDENTIFY ISSUER OF AUTOLOG. @V60BBBB 00908000
  924. LALSUFF EQU *-ALSUFF @V60BBBB 00909000
  925. *-------------------------------------------------------------* 00910000
  926. * SKELETON FOR DMKJRL145I MESSAGE. * 00911000
  927. *-------------------------------------------------------------* 00912000
  928. SPACE 1 00913000
  929. LCHMSG DS 0D @V60BBBB 00914000
  930. DC C'DMKJRL145I USERID: ' @V60BBBB 00915000
  931. LCHMUSER DS CL8 @V60BBBB 00916000
  932. DC C' AT ' @V60BBBB 00917000
  933. LCHMTRMA DS CL4 @V60BBBB 00918000
  934. DC C' WITH INVALID ' @V60BBBB 00919000
  935. LCHTYPE DC CL5' ' @V60BBBB 00920000
  936. DC C' PASSWORD NO. ' @V60BBBB 00921000
  937. LCHIVPNO DS CL3 @VMI0039 00922000
  938. DC C' (' @V60BBBB 00923000
  939. LCHMIVP DC CL8' ' @V60BBBB 00924000
  940. DC C') HAS VIOLATED THE LIMIT OF ' @V60BBBB 00925000
  941. LCHIVPLM DS CL3 @VMI0039 00926000
  942. LCHALOG DC CL(LALSUFF)' ' @V60BBBB 00927000
  943. LCHMSGLN EQU *-LCHMSG @V60BBBB 00928000
  944. DS 0D @V60BBBB 00929000
  945. LCHMDBLW EQU (*-LCHMSG)/8 NUMBER OF DOUBLEWORDS @V60BBBB 00930000
  946. * TITLE ' DMKJRLSL' 00931000
  947. * 00932000
  948. * ENTRY POINT NAME - 00933000
  949. * 00934000
  950. * DMKJRLSL - CALLED BY DMKLNK (LINK) FOR EACH 00935000
  951. * SUCCESSFUL LINK TO A PROTECTED MINI-DISK 00936000
  952. * NOT OWNED BY THE LINK'OR. 00937000
  953. * (A PROTECTED MINI-DISK IS ONE WHOSE 00938000
  954. * PASSWORD, FOR THE TYPE LINK BEING 00939000
  955. * ATTEMPTED, IS NOT 'ALL'.) 00940000
  956. * 00941000
  957. * FUNCTION - 00942000
  958. * 00943000
  959. * TO JOURNAL THE SUCCESSFUL LINK'ING TO A PROTECTED 00944000
  960. * (RELEVANT PASSWORD NOT 'ALL') MINI-DISK. 00945000
  961. * 00946000
  962. * ATTRIBUTES - 00947000
  963. * 00948000
  964. * REENTRANT, PAGEABLE, CALLED VIA SVC 00949000
  965. * 00950000
  966. * ENTRY CONDITIONS - 00951000
  967. * 00952000
  968. * R1 - = ADDRESS IF USERID OF LINKEE 00953000
  969. * R2 - = ADDRESS OF MINI-DISK ADDRESS OF LINKEE 00954000
  970. * R11- ADDRESS OF VMBLOK OF CALLER 00955000
  971. * R12- BASE ADDRESS OF MODULE 00956000
  972. * R13- ADDRESS OF SAVEAREA 00957000
  973. * 00958000
  974. * EXIT CONDITIONS - 00959000
  975. * 00960000
  976. * ALWAYS NORMAL. THERE ARE NO ERROR EXITS OR RETURNS. 00961000
  977. * 00962000
  978. * CALLS TO OTHER ROUTINES - 00963000
  979. * 00964000
  980. * DMKACOQU - GENERATE ACCOUNTING RECORD 00965000
  981. * DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 00966000
  982. * DMKCVTDT - OBTAIN DATE-TIME 00967000
  983. * DMKFREE - OBTAIN FREE STORAGE 00968000
  984. * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 00969000
  985. * DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 00970000
  986. * DMKSCNRD - GET REAL DEVICE ADDRESS 00971000
  987. * 00972000
  988. * EXTERNAL REFERENCES - 00973000
  989. * DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 00974000
  990. * CONTROL BLOCK (JPSCBLOK). 00975000
  991. * 00976000
  992. * TABLES / WORK AREAS - 00977000
  993. * 00978000
  994. * NONE 00979000
  995. * 00980000
  996. * REGISTER USAGE - 00981000
  997. * 00982000
  998. * GPR 2 = ADDRESS OF MINI-DISK ADDRESS OF LINKEE 00983000
  999. * GPR 4 = ADDRESS OF ACNTBLOK 00984000
  1000. * GPR 5 = ADDRESS OF USERID OF LINKEE 00985000
  1001. * GPR 8 = CONTAINS TERMINAL'S RDEVBLOK ADDRESS (OR 00986000
  1002. * 0 IF NO TERMINAL) 00987000
  1003. * GPR 11 = ADDRESS OF CALLER'S VMBLOK 00988000
  1004. * GPR 12 = BASE REGISTER 00989000
  1005. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00990000
  1006. * GPR 14 = STANDARD RETURN REGISTER 00991000
  1007. * GPR 15 = STANDARD ENTRY POINT REGISTER 00992000
  1008. * 00993000
  1009. * GPRS 0-1, 3, 6, AND 9-10 ARE WORK REGISTERS 00994000
  1010. * 00995000
  1011. * NOTES - 00996000
  1012. * NONE. 00997000
  1013. * 00998000
  1014. * OPERATION - 00999000
  1015. * 01000000
  1016. * 1. SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. 01001000
  1017. * 2. GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND 01002000
  1018. * SAVE IT FOR LATER USE. 01003000
  1019. * 3. GET DATE AND TIME INTO WORKAREA VIA CALL TO DMKCVDT. 01004000
  1020. * 4. GET STORAGE FOR AN ACNTBLOK. 01005000
  1021. * 5. FILL IN ACNTBLOK WITH INFORMATION CONSTITUTING A 01006000
  1022. * TYPE '05' ACCOUNTING RECORD: USERID, ACCOUNT NUMBER, 01007000
  1023. * DATE, TIME, TERMINAL ADDRESS, LINKEE'S USERID, AND 01008000
  1024. * LINKEE'S MINI-DISK ADDRESS. 01009000
  1025. * 6. QUEUE THE ACCOUNTING RECORD FOR PROCESSING VIA A 01010000
  1026. * CALL TO DMKACOQU. 01011000
  1027. * 7. RETURN FROM SUCCESSFUL LINK PROCESSING. 01012000
  1028. * 01013000
  1029. * MESSAGES - 01014000
  1030. * 01015000
  1031. * NONE. 01016000
  1032. * 01017000
  1033. EJECT 01018000
  1034. *-------------------------------------------------------------* 01019000
  1035. * - SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. * 01020000
  1036. * - GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND * 01021000
  1037. * SAVE IT FOR LATER USE. * 01022000
  1038. *-------------------------------------------------------------* 01023000
  1039. SPACE 1 01024000
  1040. DMKJRLSL RELOC SUCCESSFUL LINK @V60BBBB 01025000
  1041. LR R5,R1 SAVE POINTER TO LINKEE'S USERID @V60BBBB 01026000
  1042. MVC LCHTRMA,=C'NONE' INITIALIZE FIELD TO CONTAIN @V60BBBB 01027000
  1043. * TERMINAL ADDRESS TO 'NONE'. 01028000
  1044. * (THERE MAY BE NO TERMINAL E.G., 01029000
  1045. * WHEN A DISCONNECT'ED MACHINE 01030000
  1046. * ISSUES A LINK). 01031000
  1047. L R8,VMTERM GET ADDRESS OF RDEVBLOK @V60BBBB 01032000
  1048. LTR R8,R8 ONE THERE? @V60BBBB 01033000
  1049. BZ SL010 BR IF NOT @V60BBBB 01034000
  1050. * DMKSCNRD WANTS RDEVBLOK ADDRESS IN R8. 01035000
  1051. CALL DMKSCNRD GET REAL DEVICE ADDRESS @V60BBBB 01036000
  1052. CALL DMKCVTBH GET IT INTO EBCDIC @V60BBBB 01037000
  1053. ST R1,LCHTRMA SAVE IT FOR LATER @V60BBBB 01038000
  1054. EJECT 01039000
  1055. *-------------------------------------------------------------* 01040000
  1056. * - GET DATE AND TIME INTO WORKAREA VIA CALL TO DMKCVDT. * 01041000
  1057. * - GET STORAGE FOR AN ACNTBLOK. * 01042000
  1058. * - FILL IN ACNTBLOK WITH INFORMATION CONSTITUTING A * 01043000
  1059. * TYPE '05' ACCOUNTING RECORD: USERID, ACCOUNT NUMBER, * 01044000
  1060. * DATE, TIME, TERMINAL ADDRESS, LINKEE'S USERID, AND * 01045000
  1061. * LINKEE'S MINI-DISK ADDRESS. * 01046000
  1062. *-------------------------------------------------------------* 01047000
  1063. SPACE 1 01048000
  1064. SL010 LR R3,R2 SAVE R2 ACROSS DMKCVTDT @V60BBBB 01049000
  1065. LA R1,DATEWRK WHERE DATE SHOULD BE STORED @V60BBBB 01050000
  1066. * BY DMKCVTDT. 01051000
  1067. LA R2,TIMEWRK WHERE TIME SHOULD BE STORED @V60BBBB 01052000
  1068. * BY DMKCVTDT. 01053000
  1069. CALL DMKCVTDT GET DATE AND TIME. @V60BBBB 01054000
  1070. LR R2,R3 RESTORE R2 @V60BBBB 01055000
  1071. * BUILD TYPE '05' ACCOUNTING RECORD. 01056000
  1072. LA R0,ACNTSIZE SET SIZE OF ACNTBLOK @V60BBBB 01057000
  1073. CALL DMKFREE GET AN ACNTBLOK @V60BBBB 01058000
  1074. LR R4,R1 GET ADDRESS TO PERMANENT REGISTER@V60BBBB 01059000
  1075. USING ACNTBLOK,R4 ESTABLISH ADDRESSABILITY @V60BBBB 01060000
  1076. MVC LBUSERID,VMUSER MOVE IN COMMAND ISSUER'S ID @V60BBBB 01061000
  1077. MVC LBACCT#,VMACNT MOVE IN ACCOUNT NUMBER @V60BBBB 01062000
  1078. MVC LBDATE(L'LBDATE+L'LBTIME),SLYMASK MOVE IN @V60BBBB 01063000
  1079. * MASK TO BE TRANSLATED TO REMOVE 01064000
  1080. * :'S FROM TIME AND /'S FROM DATE. 01065000
  1081. TR LBDATE(L'LBDATE+L'LBTIME),DATEWRK GET DATE & @V60BBBB 01066000
  1082. * TIME IN MMDDYYHHMMSS FORMAT. 01067000
  1083. * 01068000
  1084. MVC LBTERMA,LCHTRMA MOVE IN TERMINAL ADDRESS @V60BBBB 01069000
  1085. MVI LBNUSED,C' ' CLEAR UNUSED PORTIONS @V60BBBB 01070000
  1086. MVC LBNUSED+1(LBEND-LBNUSED-1),LBNUSED ** @V60BBBB 01071000
  1087. MVC LBLUSID,0(R5) MOVE IN LINKEE'S USERID @V60BBBB 01072000
  1088. L R1,0(,R2) GET MINI-DISK ADDRESS @V60BBBB 01073000
  1089. CALL DMKCVTBH MAKE IT EBCDIC HEX @V60BBBB 01074000
  1090. STCM R1,B'0111',LBLADDR STORE IT INTO ACCT. RECORD @V60BBBB 01075000
  1091. MVC LBTYPE,=C'05' SET TO TYPE '05' ACCOUNTING @V60BBBB 01076000
  1092. * RECORD 01077000
  1093. EJECT 01078000
  1094. *-------------------------------------------------------------* 01079000
  1095. * - QUEUE THE ACCOUNTING RECORD FOR PROCESSING VIA A * 01080000
  1096. * CALL TO DMKACOQU. * 01081000
  1097. * - RETURN FROM SUCCESSFUL LINK PROCESSING. * 01082000
  1098. *-------------------------------------------------------------* 01083000
  1099. SPACE 1 01084000
  1100. * DMKACOQU WANTS BUFFER ADDRESS IN R4 (WHERE IT IS). 01085000
  1101. CALL DMKACOQU QUEUE THE ACCOUNT CARD BUFFER @V60BBBB 01086000
  1102. * THE BUFFER WILL BE FRET'ED BY THE ACCOUNTING 01087000
  1103. * ROUTINES. WE CAN JUST RELAX AND GO ON DOING OUR 01088000
  1104. * OWN THING. 01089000
  1105. DROP R4 @V60BBBB 01090000
  1106. EXIT RETURN RETURN TO DMKCFM @V60BBBB 01091000
  1107. * TITLE ' DMKJRLIL' 01092000
  1108. * 01093000
  1109. * ENTRY POINT NAME - 01094000
  1110. * 01095000
  1111. * DMKJRLIL - CALLED BY DMKLNK (LINK) FOR EACH INSTANCE 01096000
  1112. * OF A LINK COMMAND BEING ISSUED WITH AN 01097000
  1113. * INVALID PASSWORD. 01098000
  1114. * 01099000
  1115. * FUNCTION - 01100000
  1116. * 01101000
  1117. * TO JOURNAL INSTANCES OF THE SPECIFICATION OF THE 01102000
  1118. * LINK COMMAND WITH AN INVALID PASSWORD. 01103000
  1119. * 01104000
  1120. * ATTRIBUTES - 01105000
  1121. * 01106000
  1122. * REENTRANT, PAGEABLE, CALLED VIA SVC 01107000
  1123. * 01108000
  1124. * ENTRY CONDITIONS - 01109000
  1125. * 01110000
  1126. * R1 - = ADDRESS OF LINKEE'S USERID 01111000
  1127. * R2 = ADDRESS OF LINKEE'S MINI-DISK ADDRESS 01112000
  1128. * R6 = ADDRESS OF INVALID PASSWORD 01113000
  1129. * R11- ADDRESS OF VMBLOK OF CALLER 01114000
  1130. * R12- BASE ADDRESS OF MODULE 01115000
  1131. * R13- ADDRESS OF SAVEAREA 01116000
  1132. * 01117000
  1133. * EXIT CONDITIONS - 01118000
  1134. * 01119000
  1135. * ALWAYS NORMAL. THERE ARE NO ERROR EXITS OR RETURNS. 01120000
  1136. * 01121000
  1137. * CALLS TO OTHER ROUTINES - 01122000
  1138. * 01123000
  1139. * DMKACOQU - GENERATE ACCOUNTING RECORD 01124000
  1140. * DMKCVTBD - CONVERT FROM BINARY TO PRINTABLE DECIMAL 01125000
  1141. * DMKCVTBH - CONVERT FROM BINARY TO PRINTABLE HEX 01126000
  1142. * DMKCVTDT - OBTAIN DATE-TIME 01127000
  1143. * DMKFREE - OBTAIN FREE STORAGE 01128000
  1144. * DMKFRET - RETURN STORAGE 01129000
  1145. * DMKQCNWT - SEND MESSAGE TO USER TERMINAL 01130000
  1146. * DMKSCNAU - GET VMBLOK FOR A GIVEN USERID 01131000
  1147. * DMKSCNFD - GET NEXT FIELD FROM COMMAND LINE 01132000
  1148. * DMKSCNRD - GET REAL DEVICE ADDRESS 01133000
  1149. * 01134000
  1150. * EXTERNAL REFERENCES - 01135000
  1151. * DMKSYSJR - JOURNALING AND PASSWORD SUPPRESSION 01136000
  1152. * CONTROL BLOCK (JPSCBLOK). 01137000
  1153. * 01138000
  1154. * TABLES / WORK AREAS - 01139000
  1155. * 01140000
  1156. * NONE 01141000
  1157. * 01142000
  1158. * REGISTER USAGE - 01143000
  1159. * 01144000
  1160. * GPR 2 = ADDRESS OF LINKEE'S MINI-DISK ADDRESS. 01145000
  1161. * GPR 3 = ADDRESS OF JPSCBLOK 01146000
  1162. * GPR 4 = ADDRESS OF ACNTBLOK 01147000
  1163. * GPR 5 = ADDRESS OF USERID OF LINKEE 01148000
  1164. * GPR 6 = ADDRESS OF INVALID PASSWORD 01149000
  1165. * GPR 8 = CONTAINS TERMINAL'S RDEVBLOK ADDRESS (OR 01150000
  1166. * 0 IF NO TERMINAL) IN INITIAL PROCESSING. 01151000
  1167. * IT IS A WORK REGISTER THEREAFTER. 01152000
  1168. * GPR 11 = ADDRESS OF CALLER'S VMBLOK 01153000
  1169. * GPR 12 = BASE REGISTER 01154000
  1170. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 01155000
  1171. * GPR 14 = STANDARD RETURN REGISTER 01156000
  1172. * GPR 15 = STANDARD ENTRY POINT REGISTER 01157000
  1173. * 01158000
  1174. * GPRS 0-1, 7, AND 9-10 ARE WORK REGISTERS 01159000
  1175. * 01160000
  1176. * NOTES - 01161000
  1177. * NONE. 01162000
  1178. * 01163000
  1179. * OPERATION - 01164000
  1180. * 01165000
  1181. * 1. SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. 01166000
  1182. * 2. GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND SAVE 01167000
  1183. * IT FOR LATER USE. 01168000
  1184. * 3. GET THE DATE AND TIME INTO THE WORKAREA VIA A CALL TO 01169000
  1185. * DMKCVTDT. 01170000
  1186. * 4. IF ACCOUNTING RECORDS ARE NOT TO BE GENERATED OR IF 01171000
  1187. * THE THRESHOLD IN 'JPSLNKAR' HAS NOT BEEN EQUALLED OR 01172000
  1188. * EXCEEDED, SKIP THE GENERATION OF AN ACCOUNTING 01173000
  1189. * RECORD (GO TO STEP 8). 01174000
  1190. * 5. OTHERWISE, GET STORAGE FOR AN ACNTBLOK IN WHICH TO 01175000
  1191. * BUILD A TYPE '06' ACCOUNTING RECORD. 01176000
  1192. * 6. FILL IN THE RECORD WITH USERID, ACCOUNT NUMBER, DATE, 01177000
  1193. * TIME, TERMINAL ADDRESS, INVALID PASSWORD, LINKEE'S 01178000
  1194. * USERID, LINKEE'S MINI-DISK ADDRESS, THE CURRENT 01179000
  1195. * INVALID PASSWORD COUNT, AND THE CURRENT INVALID 01180000
  1196. * PASSWORD LIMIT. 01181000
  1197. * 7. PASS THE ACCOUNTING RECORD TO THE ACCOUNTING ROUTINES 01182000
  1198. * VIA A CALL TO DMKACOQU. 01183000
  1199. * 8. IF NO MESSAGES ARE TO BE SENT OR IF THE MESSAGE 01184000
  1200. * THRESHOLD, JPSLNKMS, HAS NOT BEEN MET OR EXCEEDED, 01185000
  1201. * RETURN TO CALLER. 01186000
  1202. * 9. OTHERWISE, GET THE VMBLOK ADDRESS OF THE PERSON WHO 01187000
  1203. * IS TO RECEIVE THE EXCESSION MESSAGE. 01188000
  1204. * 10. IF THIS USERID CANNOT RECEIVE THE MESSAGE, GET THE 01189000
  1205. * VMBLOK ADDRESS FOR THE OPERATOR. 01190000
  1206. * 11. IF THE OPERATOR CANNOT RECEIVE THE MESSAGE, RETURN 01191000
  1207. * WITHOUT SENDING A MESSAGE. 01192000
  1208. * 12. SAVE THE VMBLOK ADDRESS OF USER TO RECEIVE MESSAGE. 01193000
  1209. * 13. GET STORAGE FOR THE MESSAGE. 01194000
  1210. * 14. MOVE IN THE MESSAGE SKELETON AND FILL IT IN WITH 01195000
  1211. * USERID, TERMINAL ADDRESS, THE WORD 'LINK', THE 01196000
  1212. * INVALID PASSWORD, THE CURRENT INVALID PASSWORD 01197000
  1213. * COUNT, AND THE CURRENT INVALID PASSWORD LIMIT. 01198000
  1214. * 15. SWITCH TO THE VMBLOK OF THE RECEIVER OF THE MESSAGE, 01199000
  1215. * AND SEND IT VIA A CALL TO DMKQCNWT. 01200000
  1216. * 16. SWITCH BACK TO THE VMBLOK OF THE CALLER. 01201000
  1217. * RETURN FROM JOURNAL INVALID LINK-PASSWORD PROCESSING. 01202000
  1218. * 01203000
  1219. * MESSAGES - 01204000
  1220. * 01205000
  1221. * ERROR MESSAGE (SENT TO USERID DEFINED IN SYSJRL MACRO IN 01206000
  1222. * DMKSYS AT SYSGEN TIME.) 01207000
  1223. * DMKJRL145I USERID:<USERID> AT <TERM-RADDR> WITH 01208000
  1224. * INVALID LINK PASSWORD NO. <XX> (<PSWD>) HAS 01209000
  1225. * VIOLATED THE LIMIT OF <YY> 01210000
  1226. * 01211000
  1227. EJECT 01212000
  1228. *-------------------------------------------------------------* 01213000
  1229. * - SAVE REGISTERS AND ESTABLISH BASE REGISTER, ETC. * 01214000
  1230. * - GET THE REAL DEVICE BLOCK ADDRESS IN EBCDIC AND SAVE * 01215000
  1231. * IT FOR LATER USE. * 01216000
  1232. *-------------------------------------------------------------* 01217000
  1233. SPACE 1 01218000
  1234. DMKJRLIL RELOC LINK WITH INVALID PASSWORD @V60BBBB 01219000
  1235. LR R5,R1 SAVE LINKEE'S USERID ADDRESS @V60BBBB 01220000
  1236. L R3,=A(DMKSYSJR) GET ADDRESS OF JPSCBLOK @V60BBBB 01221000
  1237. USING JPSCBLOK,R3 TELL ASSEMBLER @V60BBBB 01222000
  1238. MVC LCHTRMAA,=C'NONE' INTIALIZE FILE TO CONTAIN @VA13020 01223100
  1239. * TERMINAL ADDRESS TO 'NONE'. 01224000
  1240. * (THERE MAY BE NO TERMINAL E.G., 01225000
  1241. * WHEN A DISCONNECT'ED MACHINE 01226000
  1242. * ISSUES A LINK.) 01227000
  1243. L R8,VMTERM GET ADDRESS OF RDEVBLOK @V60BBBB 01228000
  1244. LTR R8,R8 ONE THERE? @V60BBBB 01229000
  1245. BZ IL010 BR IF NOT @V60BBBB 01230000
  1246. * DMKSCNRD WANTS RDEVBLOK ADDRESS IN R8. 01231000
  1247. CALL DMKSCNRD GET REAL DEVICE ADDRESS @V60BBBB 01232000
  1248. CALL DMKCVTBH GET IT INTO EBCDIC @V60BBBB 01233000
  1249. ST R1,LCHTRMAA SAVE IT FOR LATER @V60BBBB 01234000
  1250. EJECT 01235000
  1251. *-------------------------------------------------------------* 01236000
  1252. * - GET THE DATE AND TIME INTO THE WORKAREA VIA A CALL TO* 01237000
  1253. * DMKCVTDT. * 01238000
  1254. * - IF ACCOUNTING RECORDS ARE NOT TO BE GENERATED OR IF * 01239000
  1255. * THE THRESHOLD IN 'JPSLNKAR' HAS NOT BEEN EQUALLED OR * 01240000
  1256. * EXCEEDED, SKIP THE GENERATION OF AN ACCOUNTING * 01241000
  1257. * RECORD. * 01242000
  1258. * - OTHERWISE, GET STORAGE FOR AN ACNTBLOK IN WHICH TO * 01243000
  1259. * BUILD A TYPE '06' ACCOUNTING RECORD. * 01244000
  1260. * - FILL IN THE RECORD WITH USERID, ACCOUNT NUMBER, DATE,* 01245000
  1261. * TIME, TERMINAL ADDRESS, INVALID PASSWORD, LINKEE'S * 01246000
  1262. * USERID, LINKEE'S MINI-DISK ADDRESS, THE CURRENT * 01247000
  1263. * INVALID PASSWORD COUNT, AND THE CURRENT INVALID * 01248000
  1264. * PASSWORD LIMIT. * 01249000
  1265. * - PASS THE ACCOUNTING RECORD TO THE ACCOUNTING ROUTINES* 01250000
  1266. * VIA A CALL TO DMKACOQU. * 01251000
  1267. *-------------------------------------------------------------* 01252000
  1268. SPACE 1 01253000
  1269. IL010 LR R9,R2 SAVE R2 ACROSS DMKCNVDT @V60BBBB 01254000
  1270. LA R1,DATEWRKA WHERE DATE SHOULD BE STORED @V60BBBB 01255000
  1271. * BY DMKCVTDT. 01256000
  1272. LA R2,TIMEWRKA WHERE TIME SHOULD BE STORED @V60BBBB 01257000
  1273. * BY DMKCVTDT. 01258000
  1274. CALL DMKCVTDT GET DATE AND TIME. @V60BBBB 01259000
  1275. LR R2,R9 RESTORE R2 @V60BBBB 01260000
  1276. CLI JPSLNKAR,X'00' SHOULD ANY ACCOUNTING RECORDS @V60BBBB 01261000
  1277. * BE GENERATED? 01262000
  1278. BE IL100 BR IF NOT @V60BBBB 01263000
  1279. CLC VMPSWDCT,JPSLNKAR HAS THE ACCOUNTING RECORD @V60BBBB 01264000
  1280. * THRESHOLD BEEN EQUALLED OR 01265000
  1281. * EXCEEDED? 01266000
  1282. BL IL100 BR IF NOT @V60BBBB 01267000
  1283. * BUILD TYPE '06' ACCOUNTING RECORD. 01268000
  1284. LA R0,ACNTSIZE SET SIZE OF ACNTBLOK @V60BBBB 01269000
  1285. CALL DMKFREE GET AN ACNTBLOK @V60BBBB 01270000
  1286. LR R4,R1 GET ADDRESS TO PERMANENT HOME @V60BBBB 01271000
  1287. USING ACNTBLOK,R4 ESTABLISH ADDRESSABILITY @V60BBBB 01272000
  1288. MVC LCUSERID,VMUSER MOVE IN LINKOR'S USERID @V60BBBB 01273000
  1289. MVC LCACCT#,VMACNT MOVE IN ACCOUNT NUMBER @V60BBBB 01274000
  1290. MVC LCDATE(L'LCDATE+L'LCTIME),SLYMASK MOVE IN MASK @V60BBBB 01275000
  1291. * TO BE TRANSLATED TO REMOVE :'S 01276000
  1292. * FROM TIME AND /'S FROM DATE. 01277000
  1293. TR LCDATE(L'LCDATE+L'LCTIME),DATEWRKA GET DATE & @V60BBBB 01278000
  1294. * TIME IN MMDDYYHHMMSS FORMAT. 01279000
  1295. * 01280000
  1296. MVC LCTERMA,LCHTRMAA MOVE IN TERMINAL ADDRESS @V60BBBB 01281000
  1297. MVC LCIPWD,0(R6) MOVE IN INVALID PASSWORD @V60BBBB 01282000
  1298. MVC LCLUSID,0(R5) MOVE IN LINKEE'S USERID @V60BBBB 01283000
  1299. L R1,0(,R2) GET MINI-DISK ADDRESS @V60BBBB 01284000
  1300. CALL DMKCVTBH MAKE IT EBCDIC HEX @V60BBBB 01285000
  1301. STCM R1,B'0111',LCLADDR STORE IT INTO ACCT. RECORD @V60BBBB 01286000
  1302. MVI LCNUSED,C' ' CLEAR UNUSED PORTION @V60BBBB 01287000
  1303. MVC LCNUSED+1(LCEND-LCNUSED-1),LCNUSED ** @V60BBBB 01288000
  1304. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01289000
  1305. IC R1,VMPSWDCT PICK UP CURRENT COUNT @V60BBBB 01290000
  1306. CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 01291000
  1307. STCM R1,B'0011',LCIPWNO PUT IT INTO ACCOUNTING REC. @V60BBBB 01292000
  1308. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01293000
  1309. IC R1,JPSLNKAR PICK UP CURRENT LIMIT @V60BBBB 01294000
  1310. CALL DMKCVTBH MAKE IT LOOK NICE @V60BBBB 01295000
  1311. STCM R1,B'0011',LCIPWLM PUT IT INTO ACCOUNTING REC. @V60BBBB 01296000
  1312. MVC LCTYPE,=C'06' SET TO TYPE '06' ACCOUNTING @V60BBBB 01297000
  1313. * RECORD 01298000
  1314. * DMKACOQU WANTS BUFFER ADDRESS IN R4 (WHERE IT IS). 01299000
  1315. CALL DMKACOQU QUEUE THE ACCOUNT CARD BUFFER @V60BBBB 01300000
  1316. * THE BUFFER WILL BE FRET'ED BY THE ACCOUNTING 01301000
  1317. * ROUTINES. 01302000
  1318. DROP R4 @V60BBBB 01303000
  1319. EJECT 01304000
  1320. *-------------------------------------------------------------* 01305000
  1321. * - IF NO MESSAGES ARE TO BE SENT OR IF THE MESSAGE * 01306000
  1322. * THRESHOLD, JPSLNKMS, HAS NOT BEEN MET OR EXCEEDED, * 01307000
  1323. * RETURN TO CALLER. * 01308000
  1324. * - OTHERWISE, GET THE VMBLOK ADDRESS OF THE PERSON WHO * 01309000
  1325. * IS TO RECEIVE THE EXCESSION MESSAGE. * 01310000
  1326. * - IF THIS USERID CANNOT RECEIVE THE MESSAGE, GET THE * 01311000
  1327. * VMBLOK ADDRESS FOR THE OPERATOR. * 01312000
  1328. * - IF THE OPERATOR CANNOT RECEIVE THE MESSAGE, RETURN * 01313000
  1329. * WITHOUT SENDING A MESSAGE. * 01314000
  1330. *-------------------------------------------------------------* 01315000
  1331. SPACE 1 01316000
  1332. IL100 DS 0H @V60BBBB 01317000
  1333. CLI JPSLNKMS,X'00' SHOULD ANY MESSAGES BE SENT? @V60BBBB 01318000
  1334. BE ILEXIT BR IF NOT @V60BBBB 01319000
  1335. CLC VMPSWDCT,JPSLNKMS HAS THRESHOLD BEEN MET OR @V60BBBB 01320000
  1336. * EXCEEDED? 01321000
  1337. BL ILEXIT BR IF NOT @V60BBBB 01322000
  1338. LA R1,JPSLNKU POINT TO USERID TO WHOM MESSAGE @V60BBBB 01323000
  1339. * SHOULD BE SENT. 01324000
  1340. LA R0,8 SET USERID LENGTH @V60BBBB 01325000
  1341. CALL DMKSCNAU GET THE VMBLOK ADDRESS @V60BBBB 01326000
  1342. BNZ IL110 BR IF USERID NOT ABLE TO @V60BBBB 01327000
  1343. * RECEIVE MESSAGE. 01328000
  1344. TM VMOSTAT-VMBLOK(R1),VMDISC+VMKILL USER DYING @V60BBBB 01329000
  1345. * OR DISCONNECTED? 01330000
  1346. BNZ IL110 BR IF YES- CAN'T SEND TO HIM(HER)@V60BBBB 01331000
  1347. CLC VMTERM-VMBLOK(,R1),F0 ANY TERMINAL? @V60BBBB 01332000
  1348. BNE IL200 ALL'S WELL- LET 'ER RIP @V60BBBB 01333000
  1349. IL110 L R1,ASYSOP GET OPERATOR'S VMBLOK @V60BBBB 01334000
  1350. CLC VMTERM-VMBLOK(,R1),F0 OPERATOR THERE? @V60BBBB 01335000
  1351. BE ILEXIT BR IF NOT- WE CAN DO NO MORE @V60BBBB 01336000
  1352. EJECT 01337000
  1353. *-------------------------------------------------------------* 01338000
  1354. * - SAVE THE VMBLOK ADDRESS OF USER TO RECEIVE MESSAGE. * 01339000
  1355. * - GET STORAGE FOR THE MESSAGE. * 01340000
  1356. * - MOVE IN THE MESSAGE SKELETON AND FILL IT IN WITH * 01341000
  1357. * USERID, TERMINAL ADDRESS, THE WORD 'LINK', THE * 01342000
  1358. * INVALID PASSWORD, THE CURRENT INVALID PASSWORD * 01343000
  1359. * COUNT, AND THE CURRENT INVALID PASSWORD LIMIT. * 01344000
  1360. * - SWITCH TO THE VMBLOK OF THE RECEIVER OF THE MESSAGE, * 01345000
  1361. * AND SEND IT VIA A CALL TO DMKQCNWT. * 01346000
  1362. * - SWITCH BACK TO THE VMBLOK OF THE CALLER. * 01347000
  1363. *-------------------------------------------------------------* 01348000
  1364. SPACE 1 01349000
  1365. IL200 LR R9,R1 SAVE ADDRESS OF VMBLOK OF USER @V60BBBB 01350000
  1366. * TO RECEIVE MESSAGE. 01351000
  1367. LA R0,LCHMDBLW AMOUNT OF STORAGE FOR DMKJRL145I @V60BBBB 01352000
  1368. * MESSAGE. 01353000
  1369. CALL DMKFREE GET THE STORAGE @V60BBBB 01354000
  1370. LR R10,R1 GET ADDRESS TO HOME REGISTER @V60BBBB 01355000
  1371. MVC 0(LCHMSGLN,R10),LCHMSG MOVE IN MESSAGE SKELETON @V60BBBB 01356000
  1372. MVC LCHMUSER-LCHMSG(,R10),VMUSER MOVE IN ID @V60BBBB 01357000
  1373. MVC LCHMTRMA-LCHMSG(,R10),LCHTRMAA MOVE IN TERMINAL @V60BBBB 01358000
  1374. * ADDRESS. 01359000
  1375. MVC LCHTYPE-LCHMSG(4,R10),=C'LINK' MOVE IN TYPE @V60BBBB 01360000
  1376. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01361000
  1377. IC R1,VMPSWDCT PICK UP CURRENT COUNT @V60BBBB 01362000
  1378. CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 01363000
  1379. STCM R1,B'0111',LCHIVPNO-LCHMSG(R10) PUT IT INTO @VMI0039 01364000
  1380. * MESSAGE. 01365000
  1381. MVC LCHMIVP-LCHMSG(,R10),0(R6) MOVE IN INVALID @V60BBBB 01366000
  1382. * PASSWORD. 01367000
  1383. SLR R1,R1 SET UP FOR COUNT CONVERSION @V60BBBB 01368000
  1384. IC R1,JPSLNKMS PICK UP CURRENT LIMIT @V60BBBB 01369000
  1385. CALL DMKCVTBD MAKE IT LOOK NICE @VMI0039 01370000
  1386. STCM R1,B'0111',LCHIVPLM-LCHMSG(R10) PUT IT INTO @VMI0039 01371000
  1387. * MESSAGE. 01372000
  1388. LR R1,R9 SETUP TO SWTCHVM @V60BBBB 01373000
  1389. LR R9,R11 SAVE OUR VMBLOK ADDRESS @V60BBBB 01374000
  1390. SWTCHVM SWITCH TO VMBLOK OF MESSAGE @V60BBBB 01375000
  1391. * DESTINATION. 01376000
  1392. LR R1,R10 SET MESSAGE ADDRESS FOR DMKQCNWT @V60BBBB 01377000
  1393. LA R0,LCHMSGLN SET NUMBER OF BYTES IN MESSAGE @V60BBBB 01378000
  1394. LA R3,LCHMDBLW NUMBER OF DBLWDS TO BE FRET'ED @V60BBBB 01379000
  1395. CALL DMKQCNWT,PARM=NORET+DFRET+ALARM WRITE THE MSG. @V60BBBB 01380000
  1396. LR R1,R9 SETUP TO SWITCH BACK TO CALLER'S @V60BBBB 01381000
  1397. * VMBLOK 01382000
  1398. SWTCHVM RETURN TO CALLER'S VMBLOK @V60BBBB 01383000
  1399. EJECT 01384000
  1400. *-------------------------------------------------------------* 01385000
  1401. * RETURN FROM JOURNAL INVALID LINK-PASSWORD PROCESSING.* 01386000
  1402. *-------------------------------------------------------------* 01387000
  1403. SPACE 1 01388000
  1404. ILEXIT EXIT RETURN RETURN TO DMKCFM @V60BBBB 01389000
  1405. * TITLE ' CONSTANTS' 01390000
  1406. *-------------------------------------------------------------* 01391000
  1407. * CONSTANTS * 01392000
  1408. *-------------------------------------------------------------* 01393000
  1409. SPACE 1 01394000
  1410. SLYMASK DC AL1(0,1,3,4,6,7,8,9,11,12,14,15) MASK USED TO @V60BBBB 01395000
  1411. * TRANSLATE '/' AND ":" FROM DATE 01396000
  1412. * AND TIME. 01397000
  1413. * TITLE ' PSA DSECT' 01398000
  1414. PSA @V60BBBB 01399000
  1415. * TITLE ' JPSCBLOK DSECT' 01400000
  1416. JPSCBLOK , @V60BBBB 01401000
  1417. * TITLE ' ACNTBLOK DSECT' 01402000
  1418. COPY ACCOUNT @V60BBBB 01403000
  1419. *-------------------------------------------------------------* 01404000
  1420. * DEFINE AREA IN WHICH TYPE '04' ACCOUNTING RECORD * 01405000
  1421. * WILL BE BUILT. * 01406000
  1422. *-------------------------------------------------------------* 01407000
  1423. SPACE 1 01408000
  1424. ACNTBLOK DSECT @V60BBBB 01409000
  1425. ORG ACNTDATA @V60BBBB 01410000
  1426. LAUSERID DS CL8 USERID OF COMMAND ISSUER @V60BBBB 01411000
  1427. LAACCT# DS CL8 NOT USED (ACCOUNT NUMBER NOT @V60BBBB 01412000
  1428. * KNOWN AT TIME OF GENERATION 01413000
  1429. * OF THIS RECORD.) 01414000
  1430. LADATE DS CL6 DATE @V60BBBB 01415000
  1431. LATIME DS CL6 TIME @V60BBBB 01416000
  1432. LATERMA DS CL4 TERMINAL ADDRESS @V60BBBB 01417000
  1433. LAIPWD DS CL8 INVALID PASSWORD @V60BBBB 01418000
  1434. LAAUSID DS CL8 USERID FROM AUTOLOG COMMAND @V60BBBB 01419000
  1435. LANUSED DS CL3 NOT USED @V60BBBB 01420000
  1436. LAIPWNO DS CL2 INVALID PASSWORD COUNT @V60BBBB 01421000
  1437. LAIPWLM DS CL2 INVALID PASSWORD LIMIT @V60BBBB 01422000
  1438. DS CL23 NOT USED @V60BBBB 01423000
  1439. LATYPE DS CL2 C'04' @V60BBBB 01424000
  1440. LAEND EQU * @V60BBBB 01425000
  1441. ORG , @V60BBBB 01426000
  1442. *-------------------------------------------------------------* 01427000
  1443. * DEFINE AREA IN WHICH TYPE '05' ACCOUNTING RECORD * 01428000
  1444. * WILL BE BUILT. * 01429000
  1445. *-------------------------------------------------------------* 01430000
  1446. SPACE 1 01431000
  1447. ACNTBLOK DSECT @V60BBBB 01432000
  1448. ORG ACNTDATA @V60BBBB 01433000
  1449. LBUSERID DS CL8 USERID OF COMMAND ISSUER @V60BBBB 01434000
  1450. LBACCT# DS CL8 ACCOUNT NUMBER @V60BBBB 01435000
  1451. LBDATE DS CL6 DATE @V60BBBB 01436000
  1452. LBTIME DS CL6 TIME @V60BBBB 01437000
  1453. LBTERMA DS CL4 TERMINAL ADDRESS @V60BBBB 01438000
  1454. LBNUSED DS CL8 NOT USED @V60BBBB 01439000
  1455. LBLUSID DS CL8 USERID OF LINKEE @V60BBBB 01440000
  1456. LBLADDR DS CL3 MINI-DISK ADDRESS @V60BBBB 01441000
  1457. DS CL27 NOT USED @V60BBBB 01442000
  1458. LBTYPE DS CL2 C'05' @V60BBBB 01443000
  1459. LBEND EQU * @V60BBBB 01444000
  1460. ORG , @V60BBBB 01445000
  1461. *-------------------------------------------------------------* 01446000
  1462. * DEFINE AREA IN WHICH TYPE '06' ACCOUNTING RECORD * 01447000
  1463. * WILL BE BUILT. * 01448000
  1464. *-------------------------------------------------------------* 01449000
  1465. SPACE 1 01450000
  1466. ACNTBLOK DSECT @V60BBBB 01451000
  1467. ORG ACNTDATA @V60BBBB 01452000
  1468. LCUSERID DS CL8 USERID OF COMMAND ISSUER @V60BBBB 01453000
  1469. LCACCT# DS CL8 ACCOUNT NUMBER @V60BBBB 01454000
  1470. LCDATE DS CL6 DATE @V60BBBB 01455000
  1471. LCTIME DS CL6 TIME @V60BBBB 01456000
  1472. LCTERMA DS CL4 TERMINAL ADDRESS @V60BBBB 01457000
  1473. LCIPWD DS CL8 INVALID PASSWORD @V60BBBB 01458000
  1474. LCLUSID DS CL8 USERID OF LINKEE @V60BBBB 01459000
  1475. LCLADDR DS CL3 MINI-DISK ADDRESS @V60BBBB 01460000
  1476. LCIPWNO DS CL2 INVALID PASSWORD COUNT @V60BBBB 01461000
  1477. LCIPWLM DS CL2 INVALID PASSWORD LIMIT @V60BBBB 01462000
  1478. LCNUSED DS CL23 NOT USED @V60BBBB 01463000
  1479. LCTYPE DS CL2 C'06' @V60BBBB 01464000
  1480. LCEND EQU * @V60BBBB 01465000
  1481. ORG , @V60BBBB 01466000
  1482. * TITLE ' SAVE COPY' 01467000
  1483. COPY SAVE @V60BBBB 01468000
  1484. * TITLE ' LOCAL WORKAREAS' 01469000
  1485. *-------------------------------------------------------------* 01470000
  1486. * DEFINE AREA IN WHICH 'QUERY JOURNAL' RESPONSE * 01471000
  1487. * WILL BE BUILT. * 01472000
  1488. *-------------------------------------------------------------* 01473000
  1489. SPACE 1 01474000
  1490. SAVEAREA DSECT @V60BBBB 01475000
  1491. ORG SAVEWRK2 @V60BBBB 01476000
  1492. QJRESP DC C'JOURNAL: LOGON- ' @V60BBBB 01477000
  1493. QJLOS DS CL3 @V60BBBB 01478000
  1494. DC C', LINK- ' @V60BBBB 01479000
  1495. QJLIS DS CL3 @V60BBBB 01480000
  1496. QJRL EQU *-QJRESP @V60BBBB 01481000
  1497. SPACE 3 01482000
  1498. *-------------------------------------------------------------* 01483000
  1499. * DEFINE SWITCHES USED BY DMKJRLSE. * 01484000
  1500. *-------------------------------------------------------------* 01485000
  1501. SPACE 1 01486000
  1502. ORG SAVEWRK1 @V60BBBB 01487000
  1503. SELOGON DS 0CL(X'80') SET LOGON @V60BBBB 01488000
  1504. SELINK DS 0CL(X'40') SET LINK @V60BBBB 01489000
  1505. SETSW DS X SWITCHES USED BY SET @V60BBBB 01490000
  1506. ORG , @V60BBBB 01491000
  1507. SPACE 3 01492000
  1508. *-------------------------------------------------------------* 01493000
  1509. * DEFINE SWITCHES AND WORKAREAS USED BY DMKRJLLO. * 01494000
  1510. *-------------------------------------------------------------* 01495000
  1511. SPACE 1 01496000
  1512. ORG SAVEWRK1 @V60BBBB 01497000
  1513. AUTOLOG DS 0CL(X'80') ON INDICTES INVOCATION IS THE @V60BBBB 01498000
  1514. * RESULT OF AUTOLOG COMMAND. 01499000
  1515. LOFLAGS DS X FLAGS USED BY DMKJRLLO @V60BBBB 01500000
  1516. ORG SAVEWRK2 @V60BBBB 01501000
  1517. DATEWORK DS D DMKCVTDT RETURNS DATE HERE @V60BBBB 01502000
  1518. TIMEWORK DS D DMKCVTDT RETURNS TIME HERE @V60BBBB 01503000
  1519. LCHS23 DS 2F LOGONCHK SAVES REGS 2 & 3 HERE @V60BBBB 01504000
  1520. LCHTERMA DS F TERMINAL ADDRESS SAVED HERE @V60BBBB 01505000
  1521. LCHSR14 DS F LOGONCHK SAVES R14 HERE @V60BBBB 01506000
  1522. ORG , @V60BBBB 01507000
  1523. SPACE 3 01508000
  1524. *-------------------------------------------------------------* 01509000
  1525. * DEFINE WORKAREA USED BY DMKJRLSL. * 01510000
  1526. *-------------------------------------------------------------* 01511000
  1527. SPACE 1 01512000
  1528. ORG SAVEWRK2 @V60BBBB 01513000
  1529. DATEWRK DS D DMKCVTDT RETURNS DATE HERE @V60BBBB 01514000
  1530. TIMEWRK DS D DMKCVTDT RETURNS TIME HERE @V60BBBB 01515000
  1531. LCHTRMA DS F TERMINAL ADDRESS IN EBCDIC @V60BBBB 01516000
  1532. ORG , @V60BBBB 01517000
  1533. SPACE 3 01518000
  1534. *-------------------------------------------------------------* 01519000
  1535. * DEFINE WORKAREA USED BY DMKJRLIL. * 01520000
  1536. *-------------------------------------------------------------* 01521000
  1537. SPACE 1 01522000
  1538. ORG SAVEWRK2 @V60BBBB 01523000
  1539. DATEWRKA DS D DMKCVTDT RETURNS DATE HERE @V60BBBB 01524000
  1540. TIMEWRKA DS D DMKCVTDT RETURNS TIME HERE @V60BBBB 01525000
  1541. LCHTRMAA DS F TERMINAL ADDRESS IN EBCDIC @V60BBBB 01526000
  1542. ORG , @V60BBBB 01527000
  1543. * TITLE ' EQU''S' 01528000
  1544. COPY EQU @V60BBBB 01529000
  1545. * TITLE ' PWDIBLOK DSECT' 01530000
  1546. COPY PWDIBLOK @V60BBBB 01531000
  1547. * TITLE ' VMBLOK DSECT' 01532000
  1548. COPY VMBLOK @V60BBBB 01533000
  1549. END DMKJRL @V60BBBB 01534000