User Tools

Site Tools


ibm:vm370-lib:cp:dmkcqr.assemble_src

DMKCQR Source

References

Source Listing

DMKCQR.ASSEMBLE.txt
  1. CQR TITLE 'DMKCQR (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCQR 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * TO HANDLE QUERY FUNCTIONS: FILES, SET, DUMP, PAGING, 00010000
  11. * HOLD, PRIORITY, TERMINAL, AFFINITY,..... @V4075A0 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * RE-ENTERABLE, PAGEABLE, CALLED VIA SVC 8 00015000
  16. * 00016000
  17. * ENTRY POINTS - 00017000
  18. * 00018000
  19. * DMKCQREY - MAIN ENTRY POINT FROM DMKCFC 00019000
  20. * DMKCQRFI - TO GIVE MESSAGE FOR NUMBER OF SPOOL FILES 00020000
  21. * DMKCQRWS - SAVE AREA FOR THE PAGE WAIT TIME FOR THE ATTACHED 00020100
  22. * PROCESSOR 00020200
  23. * 00021000
  24. * ENTRY CONDITIONS - 00022000
  25. * 00023000
  26. * R9 - ADDRESS OF COMMAND LINE BUFFER 00024000
  27. * R11- ADDRESS OF VMBLOK 00025000
  28. * R12- BASE ADDRESS OF MODULE 00026000
  29. * R13- ADDRESS OF SAVEAREA 00027000
  30. * 00028000
  31. * EXIT CONDITIONS - 00029000
  32. * 00030000
  33. * NORMAL - R2 = 0 00031000
  34. * ERROR - R2 = ERROR MESSAGE NUMBER 00032000
  35. * 00033000
  36. * CALLS TO OTHER ROUTINES - 00034000
  37. * 00035000
  38. * DMKSCNFD - TO GET FIELDS FROM COMMAND BUFFER 00036000
  39. * DMKCVTBD - TO CONVERT BINARY TO DECIMAL 00037000
  40. * DMKCVTBH - TO CONVERT BINARY TO HEX 00038000
  41. * DMKSCNAU - TO SCAN FOR ACTIVE USER 00039000
  42. * DMKSCNRD - TO GET REAL DEVICE NAME 00040000
  43. * DMKSCNRU - TO FIND THE REAL BLOCKS FOR A CCU 00041000
  44. * DMKERMSG - TO ISSUE ERROR MESSAGES 00042000
  45. * 00043000
  46. * EXTERNAL REFERENCES 00044000
  47. * 00045000
  48. * DMKDMPDV - DUMP DEVICE 00046000
  49. * DMKDMPSW - DUMP INDICATOR 00047000
  50. * DMKRSPRD - READER SPOOL FILE CHAIN 00048000
  51. * DMKRSPPR - PRINTER SPOOL FILE CHAIN 00049000
  52. * DMKRSPPU - PUNCH SPOOL FILE CHAIN 00050000
  53. * DMKRSPHQ - HOLD USER CHAIN 00051000
  54. * DMKRIOPR - SYSTEM PRINTER ADDRESS 00052000
  55. * DMKPAGQR - PAGE I/O SINCE LAST QUERY COMMAND 00053000
  56. * DMKSCHPG - SYSTEM PAGING DATA 00054000
  57. * 00055000
  58. * TABLES/WORKAREAS 00056000
  59. * 00057000
  60. * SAVEAREA WORK AREAS USED FOR SCRATCH DATA 00058000
  61. * BRANCH TABLE FOR FUNCTION AT GNVECTOR 00059000
  62. * INDEX INTO TABLE BY R6 SET IN DMKCFC 00060000
  63. * 00061000
  64. * REGISTER USAGE 00062000
  65. * 00063000
  66. * R0 - LENGTH OF FIELD 00064000
  67. * R1 - ADDRESS OF FIELDS 00065000
  68. * R2 - PARM PASSING 00066000
  69. * R3 - STACK LINKAGE 00067000
  70. * R4 - R9 WORK REGISTERS FOR BUFFERS AND DSECTS 00068000
  71. * R10 - VMBLOK FOR SEARCHES 00069000
  72. * R11 - VMBLOK OF CALLER 00070000
  73. * R12 - BASE OF MODULE 00071000
  74. * R13 - SAVEAREA 00072000
  75. * R14 R15 - LINKAGE REGISTERS 00073000
  76. * 00074000
  77. * NOTES - 00075000
  78. * 00076000
  79. * NONE 00077000
  80. * 00078000
  81. * OPERATION - 00079000
  82. * 00080000
  83. * THE QUERY FUNCTIONS ARE ENTERED BY A BRANCH TABLE INDEX 00081000
  84. * THAT IS SET UP BY THE CALLING MODULE DMKCFC 00082000
  85. * THE FUNCTIONS ARE SEPARATE AND RETURN TO THE CALLER 00083000
  86. * EACH FUNCTION IS DESCRIBED AT THE SECTION 00084000
  87. * 00085000
  88. * 00086000
  89. * ERROR MESSAGES 00087000
  90. * 00088000
  91. * DMKCQR020E USERID MISSING OR INVALID 00089000
  92. * DMKCQR026E OPERAND MISSING OR INVALID 00090000
  93. * DMKCQR028E CLASS MISSING OR INVALID 00091000
  94. * DMKCQR045E $USERID$ NOT LOGGED ON 00092000
  95. * 00093000
  96. *********************************************************************** 00094000
  97. EJECT 00095000
  98. DMKCQR START 0 @V200930 00096000
  99. USING PSA,R0 @V200930 00097000
  100. USING VMBLOK,R11 @V200930 00098000
  101. USING SAVEAREA,R13 @V200930 00099000
  102. EXTRN DMKSCNFD,DMKCVTBD,DMKCVTBH @V200930 00100000
  103. EXTRN DMKSCNAU @V407490 00101000
  104. EXTRN DMKPAGQR @VA08859 00102000
  105. EXTRN DMKSCNRU @V407438 00103000
  106. EXTRN DMKSCNRD @V407490 00104000
  107. EXTRN DMKDMPDV,DMKRSPPR,DMKRSPPU @V200930 00105000
  108. EXTRN DMKRSPRD,DMKRSPHQ,DMKERMSG @V200930 00106000
  109. EXTRN DMKDMPSW,DMKRIOPR,DMKSCHPG @V200930 00107000
  110. EXTRN DMKCVTAB @VA04301 00108000
  111. SPACE 00109000
  112. ENTRY DMKCQREY @V200930 00110000
  113. ENTRY DMKCQRWS @VMH0012 00110100
  114. EJECT 00111000
  115. * THIS ROUTINE IS CALLED BY DMKCFCQU. SINCE THERE IS NO NEED 00112000
  116. * TO RETURN TO DMKCFCQU, THE SAVEAREA POINTED TO BY REG 13 00113000
  117. * WILL BE RELEASED. THUS, WHEN THIS ROUTINE RETURNS IT WIL 00114000
  118. * GO DIRECTLY BACK TO CFM TO SCAN FOR THE NEXT COMMAND. 00115000
  119. * UPON ENTRY GPR6 HAS BEEN SET UP BY CFCQU TO INDEX INTO THE 00116000
  120. * LIST OF BRANCHES ACCORDING TO ARGUMENT FOUND,THEREFORE THE 00117000
  121. * ORDER OF BRANCHES MUST BE THE SAME AS THE LIST IN CFCQU. 00118000
  122. SPACE 2 00119000
  123. MODID DC CL8'DMKCQR' @V200930 00120000
  124. USING *,R12 @V200930 00121000
  125. DMKCQREY SVC 16 GIVE UP SAVEAREA @V200930 00122000
  126. SL R12,=A(DMKCQREY-DMKCQR) SET BASE @V200930 00123000
  127. USING DMKCQR,R12 @V200930 00124000
  128. STM R0,R1,SAVER0 SAVE REG 0-1 IN NEW SAVE AREA. @V200930 00125000
  129. MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA @V200930 00126000
  130. B GNVECTOR(R6) R6 CONTAINS INDEX INTO TABLE @V200930 00127000
  131. * INDEX SET BY CFCQU 00128000
  132. SPACE 00129000
  133. GNVECTOR EQU * @V200930 00130000
  134. B QRYFILE Q FILES @V200930 00131000
  135. B QRYSET Q SET @V200930 00132000
  136. B QRYDUMP Q DUMP @V200930 00133000
  137. B QRYPAGE Q PAGING @V200930 00134000
  138. B QRYHOLD Q HOLD @V200930 00135000
  139. B QRYPRIOR Q PRIORITY @V200930 00136000
  140. B QRYTERM Q TERMINAL @V200930 00137000
  141. B QRYAFF AFFINITY @V4075A0 00138000
  142. SPACE 2 00139000
  143. QRYWRIT CALL DMKQCNWT,PARM=NORET SEND THE RESPONSE @V200930 00140000
  144. QRYEXIT EXIT RETURN TO CFM @V200930 00141000
  145. EJECT 00142000
  146. *. 00143000
  147. * QUERY FILES 00144000
  148. * 00145000
  149. * COMMAND FORMAT 00146000
  150. * 00147000
  151. * +----------+--------------------------------+ 00148000
  152. * | QUERY | FILES (CLASS A) (USERID) | 00149000
  153. * +----------+--------------------------------+ 00150000
  154. * 00151000
  155. * 00152000
  156. * 1. CALL DMKSCNFD TO GET OPTIONAL FIELDS CLASS OR USERID 00153000
  157. * 2. VALIDATE THE FIELD IF PRESENT AND SETUP FOR 00154000
  158. * SCAN BY CLASS OR USERID OR BOTH 00155000
  159. * 3. SCAN READER, PRINTER AND PUNCH CHAINS AND COUNT 00156000
  160. * FILES BY CLASS OR USERID OR BOTH 00157000
  161. * 4. FORMAT RESPONSE AND STACK OR RETURN RESPONSE 00158000
  162. * 5. RETURN TO CALLER 00159000
  163. * 00160000
  164. * RESPONSE 00161000
  165. * 00162000
  166. * FILES: NNN RDR, NNN PRT, NNN PUN 00163000
  167. * 00164000
  168. *. 00165000
  169. SPACE 2 00166000
  170. DMKCQRFI RELOC QUERY NUMBER OF RDR, PRT, AND PUN FILES@V200930 00167000
  171. MVI SAVEWRK1+1,X'00' CLEAR CLASS FLAG @V200930 00168000
  172. MVI SAVEWRK1,X'80' INITIALIZE TO CALL ENTRY @VA05491 00169000
  173. LTR R2,R2 CALL FROM DMKCPI OR DMKLOG @VM08732 00170000
  174. BZ *+8 ZERO - (DMKCPI) QUERY ALL FILES @VM08732 00171000
  175. OI SAVEWRK1,X'40' QUERY USERS OWN FILES (DMKLOG) @VM08732 00172000
  176. QRYFILE DS 0H @V200930 00173000
  177. SR R4,R4 ZERO TOTAL COUNT @V200930 00174000
  178. LA R5,1 LOAD INCREMENT REGISTER @V200930 00175000
  179. MVC SAVEWRK2(8),VMUSER SET USERID TO SEARCH @V200930 00176000
  180. TM SAVEWRK1,X'C0' CALL ENTRY FROM LOG? @VA02254 00177000
  181. BO SETCHK GO DO THIS USER @VA02254 00178000
  182. TM SAVEWRK1,X'80' CALL ENTRY FROM CPI? @VA02254 00179000
  183. BO SETALL GO DO ALL OF THEM @VA02254 00180000
  184. CALL DMKSCNFD FIND A FIELD @VA02254 00181000
  185. BZ CKPARMS GO CHECK IT @VA02254 00182000
  186. TSTD TM VMCLEVEL,VMCLASSD CLASS D USER? @VA02254 00183000
  187. BO SETALL YES, DO ALL USERS @VA02254 00184000
  188. B SETCHK JUST DO HIS @VA02254 00185000
  189. CKPARMS EQU * @VA02254 00186000
  190. LR R3,R0 GET SIZE @VA02307 00187000
  191. BCTR R3,R0 LESS ONE FOR EXECUTE @VA02307 00188000
  192. CL R0,F2 IS IT LESS THAN 2 ?? @V200930 00189000
  193. BL CKSTAR1 NOT CLASS, TEST FOR CLASS D @VA02254 00190000
  194. B CKCLASS GO TEST CLASS @VA02254 00191000
  195. CKSTAR1 TM VMCLEVEL,VMCLASSD CLASS D USER? @VA02254 00192000
  196. BO CKSTAR YES, CHECK FOR SELF @VA02254 00193000
  197. B CQR020 INVALID USERID @VA02254 00194000
  198. CKCLASS EQU * @VA02254 00195000
  199. EX R3,CLCLS TEST FOR CLASS @V200930 00196000
  200. BNE TSTD1 NO, TEST FOR CLASS D @V200930 00197000
  201. CALL DMKSCNFD GET CLASS @V200930 00198000
  202. BNZ CQR028 ERROR, NOT THERE @V200930 00199000
  203. CL R0,F1 IS IT ONE CHAR @V200930 00200000
  204. BNE CQR028 NO, ERROR @V200930 00201000
  205. MVC SAVEWRK1+1(1),0(R1) SET CLASS FOR SCAN @V200930 00202000
  206. CALL DMKSCNFD LOOK FOR USERID PARM @V200930 00203000
  207. BNZ TSTD NO USERID, CHECK CLASS @VA02254 00204000
  208. TSTD1 TM VMCLEVEL,VMCLASSD CLASS D USER? @VA02254 00205000
  209. BZ CQR020 USERID INVALID @VA02254 00206000
  210. CKNAME LR R3,R0 GET SIZE @VA02254 00207000
  211. BCTR R3,R0 SET FOR EXECUTE @VA02254 00208000
  212. C R0,F8 IS IT VALID LENGTH? @VA02254 00209000
  213. BH CQR020 NO, ERROR MSG @V200930 00210000
  214. CL R0,F1 IS IT ONE BYTE ?? @V200930 00211000
  215. BNE SETBLK NO, PREP FIELD @V200930 00212000
  216. CKSTAR CLI 0(R1),C'*' IS IT SELF? @VA02254 00213000
  217. BE SETCHK1 YES, SAVEWRK2 IS SET @VA02254 00214000
  218. SETBLK MVC SAVEWRK2(8),BLANKS PREP FIELD @V200930 00215000
  219. EX R3,SETUSR MOVE USERID FOR SEARCH @V200930 00216000
  220. SETCHK1 CALL DMKSCNFD ANY MORE PARMS? @VA02254 00217000
  221. BZ CQR026 SHOULDN'T BE ANY @VA02254 00218000
  222. SETCHK LA R9,QRYFCHK LOOP CONTROL FOR CHECK @V200930 00219000
  223. B QRYFRDR START LOOP @V200930 00220000
  224. SETALL LA R9,QRYFALL START LOOP FOR ALL @V200930 00221000
  225. QRYFRDR L R1,ARSPRD LOAD ADDRESS OF READER FILE CHAIN@V200930 00222000
  226. BAL R10,QRYFCNT COUNT THE READER FILES @V200930 00223000
  227. STCM R1,15,FILRDR SET COUNT @V200930 00224000
  228. L R1,ARSPPR LOAD ADDRESS OF PRINTER FILE @V200930 00225000
  229. BAL R10,QRYFCNT COUNT THE PRINTER FILES @V200930 00226000
  230. STCM R1,15,FILPRT SET COUNT @V200930 00227000
  231. L R1,ARSPPU LOAD ADDRESS OF PUNCH FILE CHAIN @V200930 00228000
  232. BAL R10,QRYFCNT COUNT THE PUNCH FILES @V200930 00229000
  233. STCM R1,15,FILPUN SET COUNT @V200930 00230000
  234. LTR R4,R4 ARE THERE ANY FILES ? @V200930 00231000
  235. BNZ QRYFWRT BRANCH IF YES @V200930 00232000
  236. CR R2,R4 SEND IT ANYWAY ? @V200930 00233000
  237. BNE QRYEXIT RETURN IF NO @V200930 00234000
  238. QRYFWRT LA R0,32 LOAD MESSAGE LENGTH @V200930 00235000
  239. LA R1,FILEMSG SET DATA ADDRESS @V200930 00236000
  240. B QRYWRIT SEND THE REPLY AND EXIT @V200930 00237000
  241. SPACE 2 00238000
  242. QRYFCNT SR R3,R3 ZERO FILE COUNT @V200930 00239000
  243. B QRYFNXT CONTINUE @V200930 00240000
  244. USING SFBLOK,R1 @V200930 00241000
  245. QRYFCHK CLC SFBUSER,SAVEWRK2 IS FILE FOR THIS USER ?? @V200930 00242000
  246. BNE QRYFNXT BRANCH IF NO @V200930 00243000
  247. QRYFALL TM SFBFLAG,SFBINUSE IS FILE BEING READ ?? @V200930 00244000
  248. BO QRYFNXT YES, SKIP @V200930 00245000
  249. CLI SAVEWRK1+1,X'00' IS CLASS SPECIFIED ?? @V200930 00246000
  250. BE QRYCNT NO, COUNT ALL @V200930 00247000
  251. CLC SFBCLAS,SAVEWRK1+1 TEST FOR MATCHING CLASS @V200930 00248000
  252. BNE QRYFNXT NO, FIND NEXT FILE @V200930 00249000
  253. QRYCNT AR R3,R5 ADD 1 TO FILE COUNT @V200930 00250000
  254. AR R4,R5 ADD 1 TO TOTAL COUNT @V200930 00251000
  255. QRYFNXT L R1,SFBPNT LOAD NEXT FILE ADDRESS @V200930 00252000
  256. LTR R1,R1 ANY MORE FILES ? @V200930 00253000
  257. BCR 7,R9 BRANCH IF YES @V200930 00254000
  258. DROP R1 @V200930 00255000
  259. LTR R1,R3 ANY FILES FOUND ? @V200930 00256000
  260. BNZ FILCVT NO, CONVERT @V200930 00257000
  261. L R1,=C' NO' SET NO FILES @V200930 00258000
  262. BR R10 RETURN @V200930 00259000
  263. FILCVT DS 0H @V200930 00260000
  264. CALL DMKCVTBD CONVERT COUNT TO DECIMAL @V200930 00261000
  265. ST R1,SAVEWRK8 SAVE COUNT @V200930 00262000
  266. CLI SAVEWRK8,C'0' HI ORDER ZERO ?? @V200930 00263000
  267. BNE *+8 NO, CONT @V200930 00264000
  268. MVI SAVEWRK8,C' ' BLANK IT OUT @V200930 00265000
  269. L R1,SAVEWRK8 SET COUNT @V200930 00266000
  270. BR R10 RETURN @V200930 00267000
  271. SPACE 00268000
  272. FILEMSG DC C'FILES:' @V200930 00269000
  273. FILRDR DC C' NO RDR,' @V200930 00270000
  274. FILPRT DC C' NO PRT,' @V200930 00271000
  275. FILPUN DC C' NO PUN' @V200930 00272000
  276. DS 0F @V200930 00273000
  277. SPACE 2 00274000
  278. SETUSR MVC SAVEWRK2(0),0(R1) EXECUTED TO MOVE USERID @V200930 00275000
  279. CLCLS CLC 0(0,R1),=CL6'CLASS ' EXECUTED FOR CLASS TEST @V200930 00276000
  280. EJECT 00277000
  281. *. 00278000
  282. * ROUTINE TO STACK OUTPUT LINES ON VMBLOK 00279000
  283. * THE LINES WILL BE PRINTED BY DMKCFM ON RETURN 00280000
  284. *. 00281000
  285. STACK LR R4,R0 GET SIZE OF DATA @V200930 00282000
  286. LR R5,R1 SET DATA ADDRESS @V200930 00283000
  287. LA R0,7(R4) ROUND UP TO DOUBLE WORD @V200930 00284000
  288. SRL R0,3 GET SIZE IN DOUBLE WORDS @V200930 00285000
  289. A R0,F1 ONE MORE FOR CHAINING @V200930 00286000
  290. CALL DMKFREE GET BUFFER @V200930 00287000
  291. STH R4,4(R1) SAVE LINE SIZE @V200930 00288000
  292. STH R0,6(R1) SAVE BUFFER SIZE @V200930 00289000
  293. BCTR R4,R0 DECREMENT FOR EXECUTE @V200930 00290000
  294. EX R4,MVCSTK MOVE DATA TO STACK @V200930 00291000
  295. SR R0,R0 CLEAR @V200930 00292000
  296. ST R0,0(R1) CLEAR POINTER @V200930 00293000
  297. LA R2,VMSTKO GET OUTPUT STACK POINTER @V200930 00294000
  298. STKLOOP L R4,0(R2) GET POINTER TO STACK BUFFER @V200930 00295000
  299. LTR R4,R4 TEST FOR END OF CHAIN @V200930 00296000
  300. BZ CHAIN FOUND END, CHAIN THIS BUFFER @V200930 00297000
  301. LR R2,R4 POINT TO THIS BUFFER @V200930 00298000
  302. B STKLOOP LOOP TO FIND END @V200930 00299000
  303. CHAIN ST R1,0(R2) CHAIN AT END @V200930 00300000
  304. BR R3 RETURN @V200930 00301000
  305. * 00302000
  306. MVCSTK MVC 8(*-*,R1),0(R5) EXECUTED FOR STACK BUFFER MOVE @V200930 00303000
  307. EJECT 00304000
  308. *. 00305000
  309. * 00306000
  310. * QUERY SET 00307000
  311. * 00308000
  312. * COMMAND FORMAT 00309000
  313. * 00310000
  314. * +---------+-----------+ 00311000
  315. * | QUERY | SET | 00312000
  316. * +---------+-----------+ 00313000
  317. * 00314000
  318. * 1. GET BUFFER 00315000
  319. * 2. FORMAT RESPONSE 00316000
  320. * 3. WRITE RESPONSE 00317000
  321. * 00318000
  322. * RESPONSE 00319000
  323. * 00320000
  324. * MSG XXX, WNG XXX, EMSG XXXX, ACNT XXX, RUN XXX 00321000
  325. * LINEDIT XXX, TIMER XXXX, ISAM XXX, ECMODE XXX 00322000
  326. * ASSIST XXXXXXXX XXXXX, PAGEX XXX, AUTOPOLL XXX 00323000
  327. * IMSG XXX, SMSG XXX, AFFINITY XXXX YY, NOTRANS XXX 00324000
  328. * 00325000
  329. *. 00326000
  330. SPACE 2 00327000
  331. QRYSET LA R0,7 STORAGE SIZE OF BUFFER @V201537 00328000
  332. CALL DMKFREE @V200930 00329000
  333. LR R4,R1 BUFFER ADDRESS IN R4 @V200930 00330000
  334. USING SETHDR,R4 ADDRESSABILITY @V200930 00331000
  335. MVC SETHDR(L'HDRSET1),HDRSET1 MOVE IN FIRST-LINE@V200820 00332000
  336. L R5,=C' OFF' LOAD CONSTANT INTO R5 @V200930 00333000
  337. TM VMMLEVEL,VMMSGON IS USER RECEIVING MESSAGES ? @V200930 00334000
  338. BO *+8 YES, BRANCH @V200930 00335000
  339. STCM R5,7,SETHDR+4 @V200930 00336000
  340. TM VMMLEVEL,VMWNGON IS USER RECEIVING "WARNING" @V200930 00337000
  341. BO *+8 YES, BRANCH @V200930 00338000
  342. STCM R5,7,SETHDR+13 STORE OFF @V200930 00339000
  343. TM VMMLEVEL,VMMCODE+VMMTEXT RECEIVING ALL ERROR @V200930 00340000
  344. BO ACNTCK YES @V200930 00341000
  345. BZ ERROFF BRANCH IF BOTH BITS ARE OFF @V200930 00342000
  346. MVC SETHDR+23(4),=C'CODE' @V200930 00343000
  347. TM VMMLEVEL,VMMCODE IS IT CODE ? @V200930 00344000
  348. BO ACNTCK IF YES, TAKE THE BRANCH @V200930 00345000
  349. MVC SETHDR+23(4),=C'TEXT' MUST BE TEXT ONLY @V200930 00346000
  350. B ACNTCK @V200930 00347000
  351. ERROFF STCM R5,7,SETHDR+23 MAKE IT "OFF" @V200930 00348000
  352. ACNTCK TM VMMLEVEL,VMMACCON ACCOUNT ON ? @V200930 00349000
  353. BO *+8 YES,, BRANCH @V200930 00350000
  354. STCM R5,7,SETHDR+34 STORE "OFF" @V200930 00351000
  355. TM VMOSTAT,VMCFRUN RUN ON ? @V200820 00352000
  356. BO *+8 YES -- @V200820 00353000
  357. STCM R5,7,SETHDR+43 MAKE IT RUN OFF @V200820 00354000
  358. SPACE 00355000
  359. LA R1,SETHDR BUFFER ADDRESS FOR DMKQCNWT @V200820 00356000
  360. LA R0,L'HDRSET1 LENGTH OF THE FIRST LINE @V200820 00357000
  361. CALL DMKQCNWT,PARM=NORET PRINT THIS LINE @V200930 00358000
  362. SPACE 00359000
  363. MVC SETHDR(L'HDRSET2),HDRSET2 MOVE IN SECOND-LINE @V200820 00360000
  364. TM VMMLEVEL,VMMLINED IS LINE EDIT ON ? @V200930 00361000
  365. BO *+8 YES, BRANCH @V200930 00362000
  366. STCM R5,7,SETHDR+8 STORE "OFF" @V200930 00363000
  367. TM VMTLEVEL,VMTON IS TIMER ON ? @V200930 00364000
  368. BO RUNCHEK YES, BRANCH @V200930 00365000
  369. STCM R5,7,SETHDR+19 ASSUME ITS OFF @V200930 00366000
  370. TM VMTLEVEL,VMRON HAS USER GOT A REAL TIMER ? @V200930 00367000
  371. BZ RUNCHEK NO, BRANCH @V200930 00368000
  372. MVC SETHDR+19(4),=C'REAL' CHANGE TO REAL @V200930 00369000
  373. RUNCHEK EQU * @V200820 00370000
  374. TM VMPSTAT,VMISAM VIRT MACH WITH ISAM CHECKING@V200820 00371000
  375. BO *+8 YES - LEAVE IT AS 'ON' @V200820 00372000
  376. STCM R5,7,SETHDR+30 STORE "OFF" @V200820 00373000
  377. TM VMPSTAT,VMV370R VIRTUAL MACHINE WITH ECMODE @V200820 00374000
  378. BO *+8 YES -- @V200820 00375000
  379. STCM R5,7,SETHDR+42 STORE "OFF" @V200820 00376000
  380. SPACE 00377000
  381. LA R0,L'HDRSET2 LENGTH OF SECOND LINE OF OUTPUT @V200820 00378000
  382. LA R1,SETHDR START OF THE MESSAGE @V200820 00379000
  383. CALL DMKQCNWT,PARM=NORET TYPE SECOND MESSAGE LINE @V200820 00380000
  384. MVC SETHDR(L'HDRSET3),HDRSET3 MOVE IN THIRD LINE@V200820 00381000
  385. TM VMPSTAT,VMPAGEX PSEUDO PAGE FAULTS @V213135 00382000
  386. BO *+8 YES - MSG SET FOR 'ON' @V213135 00383000
  387. STCM R5,B'0111',SETHDR+29 NO - CHANGE TO 'OFF' @V3M4026 00384000
  388. TM VMFSTAT,VMFAUTO USING AUTOPOLL HANDSHAKE OPT? @V386298 00385000
  389. BO AUTOSET YES, MESSAGE IS ALREADY SET... @V3M4035 00386000
  390. STCM R5,B'0111',SETHDR+43 ELSE RESET MSG TO 'OFF' @V3M4026 00387000
  391. AUTOSET EQU * TELL USER ABOUT HIS VM ASSIST@V4M0134 00388000
  392. TM VMMCR6,VMMFE VM ASSIST ON FOR USER? @VM08658 00389000
  393. BZ MICOFF NO, MESSAGE IS OK AS IS @VM08658 00390000
  394. SR R15,R15 POINT TO OUR PSA @V4M0134 00391000
  395. TM APSTAT1,APUOPER IS THERE ANOTHER PROCESSOR? @V4M0134 00392000
  396. BNO VMAONE NO, JUST TEST THIS ONE'S VM A@V4M0134 00393000
  397. TM VMAFF,VMAFFON USER AFFINITY TO ONE PROCESSO@V4M0134 00394000
  398. BNO VMANY NO, TEST BOTH PSA'S @V4M0134 00395000
  399. CLC VMAFF,LPUADDR+1 AFFINITY TO OUR PROCESSOR? @V4M0134 00396000
  400. BE VMAONE YES, ALL SET FOR TEST @V4M0134 00397000
  401. B VMAOTHER NO, POINT TO OTHER PSA @V4M0134 00398000
  402. SPACE 1 @V4M0134 00399000
  403. VMANY TM CPSTAT2,CPMICON DO WE HAVE VM ASSIST RUNNING @V4M0134 00400000
  404. BO VMAISON YES, GOOD ENOUGH, TELL USER @V4M0134 00401000
  405. VMAOTHER L R15,PREFIXB POINT TO OTHER PSA @V4M0134 00402000
  406. VMAONE TM CPSTAT2-PSA(R15),CPMICON IS VMA ON HERE? @V4M0134 00403000
  407. BO VMAISON IT'S ON SOMEWHERE, TELL USER @V4M0134 00404000
  408. MVC SETHDR+7(10),=C'NOT ACTIVE' USER REQUEST IS ON, @V4M0134 00405000
  409. B MICOFF OPERATOR HAS IT OFF FOR SYSTE@V4M0134 00406000
  410. VMAISON EQU * @V4M0134 00407000
  411. MVC SETHDR+7(6),=C'ON SVC' CHANGE MSG TO 'ON SVC' @V3M4026 00408000
  412. TM VMMCR6,VMMSVC IS VM ASSIST HANDLING SVCS? @VM08658 00409000
  413. BZ MICTMR YES, MSG IS OK SO FAR @V3M4026 00410000
  414. MVC SETHDR+10(5),=C'NOSVC' NO, CHANGE TO NOSVC @VM08658 00411000
  415. MICTMR EQU * @V3M4026 00412000
  416. MVC SETHDR+16(5),=C'NOTMR' INITIALIZE MSG OUTPUT @V3M4026 00413000
  417. TM VMMCR6,VMMVTMR IS TIMER ASSIST ENABLED ? @V3M4026 00414000
  418. BZ MICOFF NO, MSG IS READY TO GO @V3M4026 00415000
  419. MVC SETHDR+16(5),=C'TMR ' CHANGE APPROPRIATELY @V3M4026 00416000
  420. MICOFF EQU * @VM08658 00417000
  421. SPACE 1 00418000
  422. LA R0,L'HDRSET3 LENGTH OF THIRD LINE @VM08658 00419000
  423. LA R1,SETHDR START FOR OUTPUT @V200820 00420000
  424. CALL DMKQCNWT,PARM=NORET TYPE THE MSG @V2A3663 00421000
  425. SPACE 00422000
  426. MVC SETHDR(L'HDRSET4),HDRSET4 MOVE IN LINE 4 @V2A3663 00423000
  427. TM VMMLVL2,VMMIMSG RECEIVING INFO. MSGS?? @V2A3663 00424000
  428. BO AFFSET @V4075A0 00425000
  429. STCM R5,7,SETHDR+5 NO - SET TO OFF. @V2A3663 00426000
  430. AFFSET EQU * @V4075A0 00427000
  431. TM VMAFF,VMAFFON DOES USER HAVE AFFINITY SET? @V4075A0 00428000
  432. BZ LSTWRT TELL HIM NO @V4075A0 00429000
  433. MVC SETHDR+29(5),=C'PROC ' YES, SHOW HIM @V60C2B8 00430000
  434. IC R1,VMAFF THE PROCESSOR ADDRESS @V4075A0 00431000
  435. N R1,=F'63' 6-BIT PROC ADDR FIELD @V4075A0 00432000
  436. CALL DMKCVTBD @V4075A0 00433000
  437. STCM R1,3,SETHDR+34 2 DIGIT NUMBER @V60C2B8 00434000
  438. LSTWRT EQU * @V2A3663 00435000
  439. TM VMPSTAT,VMNOTRAN IS NOTRAN ON @VA07984 00435200
  440. BO *+8 YES @VA07984 00435400
  441. STCM R5,B'0111',SETHDR+46 SET MSG OFF @V60C2B8 00435600
  442. TM VMSPMFLG,VMSPMON IS SPM FLAG 'ON'? @V60C2B8 00435700
  443. BO *+8 YES, GO TELL USER @V60C2B8 00435800
  444. STCM R5,7,SETHDR+15 INDICATE OFF @V60C2B8 00435900
  445. LA R0,L'HDRSET4 LINE 4'S LENGTH @V2A3663 00436000
  446. LA R1,SETHDR AND BUFFER START ADDR @V2A3663 00437000
  447. CALL DMKQCNWT,PARM=NORET Type msg line 4 HRC068DK 00437200
  448. MVC SETHDR(L'HDRSET5),HDRSET5 Move in line 5 HRC068DK 00437210
  449. TM VMCXSTAT,VMSTBYPS Is STBYPASS active? HRC068DK 00437220
  450. BO *+8 Yes HRC068DK 00437230
  451. STCM R5,B'0111',SETHDR+9 Set msg text OFF HRC068DK 00437240
  452. LA R0,L'HDRSET5 Line 5's length HRC068DK 00437250
  453. LA R1,SETHDR -> buffer start HRC068DK 00437260
  454. LA R3,7 BUFFER SIZE IN DBLWDS @V2A3663 00438000
  455. CALL DMKQCNWT,PARM=NORET+DFRET TYPE MSG & FRET BUFFER@V2A3663 00439000
  456. B QRYEXIT RETURN @V200930 00440000
  457. DROP R4 @V200930 00441000
  458. SPACE 00442000
  459. HDRSET1 DC C'MSG ON , WNG ON , EMSG ON , ACNT ON , RUN ON ' 00443000
  460. SPACE 00444000
  461. HDRSET2 DC C'LINEDIT ON , TIMER ON , ISAM ON , ECMODE ON ' 00445000
  462. SPACE 00446000
  463. HDRSET3 DC C'ASSIST OFF , PAGEX ON , AUTOPOLL ON ' 00447000
  464. SPACE 00448000
  465. HDRSET4 DC C'IMSG ON , SMSG ON , AFFINITY NONE , NOTRANS ON ' 00449000
  466. SPACE 00449500
  467. HDRSET5 DC C'STBYPASS VR ' HRC068DK 00449520
  468. EJECT 00450000
  469. *. 00451000
  470. * 00452000
  471. * QUERY DUMP 00453000
  472. * 00454000
  473. * COMMAND FORMAT 00455000
  474. * 00456000
  475. * +---------+-----------+ 00457000
  476. * | QUERY | DUMP | 00458000
  477. * +---------+-----------+ 00459000
  478. * 00460000
  479. * 1. FORMAT DUMP RESPONSE 00461000
  480. * 2. WRITE RESPONSE 00462000
  481. * 00463000
  482. * RSEPONSE 00464000
  483. * 00465000
  484. * DUMP UNIT TYPE XXX CP/ALL 00466000
  485. * 00467000
  486. *. 00468000
  487. QRYDUMP MVC SAVEWRK2(1),BLANKS MOVE A X'40' INTO WORK AREA @V386198 00469000
  488. MVC SAVEWRK2+1(25),SAVEWRK2 AND CLEAR REST OF AREA. @V200930 00470000
  489. MVC SAVEWRK2+9(12),=C'DUMP UNIT CP' SET FOR CP DUMP @V200930 00471000
  490. L R5,=A(DMKDMPSW) GET THE DUMP INTERFACE @V200930 00472000
  491. TM 0(R5),X'80' FOR CP AREA ONLY ? @V200930 00473000
  492. BZ QRYDUMP1 YES,, GO GET DEVICE ADDRESS. @V200930 00474000
  493. MVC SAVEWRK2+19(3),=CL5'ALL ' NO, SET TO ALL @V200930 00475000
  494. QRYDUMP1 L R10,=A(DMKDMPDV) LOAD ADDRESS OF DUMP DEVICE @V200930 00476000
  495. L R1,0(R10) GET DUMP DEVICE ADDRESS (CCU) @V407438 00477000
  496. LTR R1,R1 ANY UNIT ALLOCATED ? @V407438 00478000
  497. BZ FINDPRT NOPE, FIND FIRST PRINTER @V407438 00479000
  498. CALL DMKSCNRU FIND REAL BLOCKS @V407438 00480000
  499. B DMPUNIT AND CONTINUE @V407438 00481000
  500. SPACE 00482000
  501. FINDPRT L R15,=A(DMKRIOPR) GET THE LIST OF PRINTERS @V407438 00483000
  502. L R15,=A(DMKRIOPR) GET DEFAULT PRINTER ADDRESS @V200930 00484000
  503. LH R8,4(R15) GET RDEVBLOK DISPLACEMENT @V200930 00485000
  504. SLL R8,3(R0) EXPAND IT @VA01793 00486000
  505. AL R8,ARIODV POINT TO RDEVBLOK @V200930 00487000
  506. USING RDEVBLOK,R8 @V200930 00488000
  507. CALL DMKSCNRD GET REAL DEV ADDRESS @V200930 00489000
  508. DMPUNIT CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V407438 00490000
  509. STCM R1,7,SAVEWRK2+5 SAVE DEVICE ADDRESS @V200930 00491000
  510. LA R0,22 LOAD MSG LNG. @V200930 00492000
  511. LA R1,SAVEWRK2 AND ALSO ITS ADDRESS @V200930 00493000
  512. MVC SAVEWRK2(4),=C'TAPE ' ASSUME TAPE @V200930 00494000
  513. TM RDEVTYPC,CLASTAPE IS IT REALLY A "TAPE DRIVE " @V200930 00495000
  514. BO QRYWRIT YES,, GO PRINT IT. @V200930 00496000
  515. MVC SAVEWRK2(4),=CL5'DASD ' ASSUME DASD @V200930 00497000
  516. TM RDEVTYPC,CLASDASD IS IT A DASD ? @V200930 00498000
  517. BO QRYWRIT YEP,, GO PRINT IT. @V200930 00499000
  518. MVC SAVEWRK2(4),=C'PRT ' NO,, ITS A PRINTER DEVICE. @V200930 00500000
  519. B QRYWRIT GO SEND MSG AND EXIT @V200930 00501000
  520. DROP R8 @V200930 00502000
  521. EJECT 00503000
  522. *. 00504000
  523. * 00505000
  524. * QUERY PAGING 00506000
  525. * 00507000
  526. * COMMAND FORMAT 00508000
  527. * 00509000
  528. * +---------+-------------+ 00510000
  529. * | QUERY | PAGING | 00511000
  530. * +---------+-------------+ 00512000
  531. * 00513000
  532. * 1. FORMAT PAGING RESPONSE 00514000
  533. * 2. WRITE RESPONSE 00515000
  534. * 00516000
  535. * RESPONSE 00517000
  536. * 00518000
  537. * PAGING XX, SET YY, NNN/SEC, MEASUREMENT= XX:XX:XX 00519000
  538. * 00520000
  539. * OPERATION OF THE PAGING LOAD CALCULATOR 00521000
  540. * 00522000
  541. * 1. STORE TOD CLOCK AND COMPUTE LENGTH OF RECORDING INTERVAL 00523000
  542. * 2. CONVERT THE TIME TO MICROSECONDS, INSURING THAT IT FITS IN 00524000
  543. * ONE WORD (31 BITS PLUS SIGN) 00525000
  544. * 3. OBTAIN PAGE-WAIT TIME OVER THE INTERVAL 00526000
  545. * 4. PROJECT PAGE-WAIT PERCENTAGE FOR NEXT INTERVAL 00527000
  546. * 5. CALCULATE THE PAGING RATE IN PAGES/SECOND. 00528000
  547. * 6. CALCULATE THE RATIO OF STOLEN TO FLUSHED PAGES. 00529000
  548. * 7. RESET COUNTERS AND VALUES FOR THE START OF A NEW MEASURE- 00530000
  549. * MENT INTERVAL. 00531000
  550. *. 00532000
  551. QRYPAGE STCK ENDTIME REMEMBER END OF RECORDING PERIOD @V386198 00533000
  552. BC 3,DOWNWEGO CLOCK NOT FUNCTIONING @VA04301 00534000
  553. STM R10,R13,CQRSAVRG SAVE REGS @V4M0131 00535000
  554. L R0,RECDTIME GET START TIME @VA08859 00536000
  555. LTR R0,R0 IS THIS FIRST TIME QUERY EXECUTED@VA08859 00537000
  556. BNZ *+10 NO - START TIME IS CORRECT @VA08859 00538000
  557. MVC RECDTIME,STARTIME USE TIME FROM PSA START-UP @VA08859 00539000
  558. LM R0,R3,RECDTIME GET START AND END OF RECORDING @VA08859 00540000
  559. * PERIOD 00541000
  560. LA R4,1 GET CONSTANT FOR ARITHMETIC @VA08859 00542000
  561. SR R6,R6 CLEAR SHIFT COUNTER @VA08859 00543000
  562. LA R7,100 GET CONSTANT FOR PERCENTAGE @VA08859 00544000
  563. * CALCULATIONS 00545000
  564. SLR R3,R1 CALCULATE LENGTH OF RECORDING @VA08859 00546000
  565. * PERIOD 00547000
  566. BC 11,*+6 ... @VA08859 00548000
  567. SLR R2,R4 ... @VA08859 00549000
  568. SLR R2,R0 ... @VA08859 00550000
  569. SRDL R2,12 AND CONVERT TO MICROSECONDS @VA08859 00551000
  570. LR R0,R2 SAVE THE ELAPSED TIME @VA08859 00552000
  571. LR R1,R3 ... @VA08859 00553000
  572. D R0,=F'10000' CONVERT TO 1/100'S OF A SECOND @VA08859 00554000
  573. LTR R15,R1 SAVE AND TEST THE RESULT @VA08859 00555000
  574. BP *+8 OK TO USE -- @VA08859 00556000
  575. LA R15,1 SET MAXIMUM RATE @VA08859 00557000
  576. L R14,=A(DMKPAGQR) GET ADDRESS OF PAGE I/O COUNTER@VA08859 00558000
  577. L R1,0(,R14) LOAD NUM. OF PAGE I/O. @VA08859 00559000
  578. MVC 0(4,R14),F0 CLEAR FOR NEXT RECOEDING @VA08859 00560000
  579. MR R0,R7 TIMES 100 @VA08859 00561000
  580. LTR R1,R1 AVOID DIVIDE ERROR @VA08859 00562000
  581. BZ *+6 BRANCH IF NO PAGE ACTIVITY @VA08859 00563000
  582. DR R0,R15 AND GET PAGING RATE @VA08859 00564000
  583. STH R1,QPAGRATE SAVE IT. @VA08859 00565000
  584. BAL R15,SHIFTER MAKE SURE THAT IT FITS IN ONE @VA08859 00566000
  585. * REGISTER 00567000
  586. SR R10,R10 INDEX TO MAIN PROC WAITSAVE VALUE@V4M0131 00568000
  587. SR R11,R11 PREFIX VALUE FOR REAL PSA @V4M0131 00569000
  588. LA R13,1 COUNTER - ONE FOR UP MODE @V4M0131 00570000
  589. TM APSTAT1,APUOPER APU OPERATIONAL ? @V4M0131 00571000
  590. BNO COMPSTAT NO - ONLY 1 PASS THRU CODE BELOW @V4M0131 00572000
  591. LA R13,2 YES - MAKE 2 PASSES THRU CODE @V4M0131 00573000
  592. * BELOW TO COMPUTE STATISTICS FOR 00574000
  593. * BOTH PROCESSORS. 00575000
  594. TM APSTAT1,PROCIPL IS THIS THE IPL'ED PROCESSOR? @VMV0008 00576100
  595. BO COMPSTAT YES - COMPUTE PAGING STATISTICS @V4M0131 00577000
  596. LA R10,8 NO - BEFORE COMPUTE PAGEING STATS@V4M0131 00578000
  597. * SET INDEX TO AP WORKSAVE VALUE. 00579000
  598. COMPSTAT EQU * @V4M0131 00580000
  599. L R8,PAGEWAIT(R11) 1ST WORD OF CURRENT PG WT TOTAL@VA09324 00580010
  600. L R9,PAGEWAIT+N4(R11) 2ND WORD OF PG WT TOTAL @VA09324 00580020
  601. STM R8,R9,SAVEWRK3 STORE VALUE @VA09324 00580030
  602. LA R1,DMKCQRWS(R10) ADDDRESS CORRECT PG.WT. VALUE @VA09324 00580040
  603. CLC SAVEWRK3(8),0(R1) PAGEWAIT HIGHER? @VA09324 00580050
  604. BNH COMPST1 NO, BRANCH @VA09324 00580060
  605. * CONTROL FALLS HERE WHENEVER 00580070
  606. * PAGEWAIT IS HIGHER THAN DMKCQRWS. 00580080
  607. * THIS OCCURS ONLY WHEN THE LAST Q 00580090
  608. * PAGING WAS DONE WHILE THE SYSTEM 00580100
  609. * WAS IN AP MODE, AND THE SYSTEM IS 00580110
  610. * NOW IN UP MODE DO TO A VARY OFF 00580120
  611. * PROCESSOR COMMAND. 00580130
  612. MVC 0(8,R1),INITSAVE SAVE PAGE WAIT VALUE @VA09324 00580140
  613. COMPST1 DS 0H @VA09324 00580150
  614. L R0,DMKCQRWS(R10) 1ST WORD OF SAVED PG WT TIME @VMH0012 00581000
  615. L R1,DMKCQRWS+N4(R10) 2ND WORD OF SAVED PG WT @VMH0012 00582000
  616. ST R8,DMKCQRWS(R10) SAVE PAGEWAIT FOR @VMH0012 00585000
  617. ST R9,DMKCQRWS+N4(R10) NEXT TIME @VMH0012 00586000
  618. SPACE 00587000
  619. SLR R1,R9 COMPUTE PAGE WAIT OVER INTERVAL @VA08859 00588000
  620. BC 8+2+1,*+6 ... @VA08859 00589000
  621. SLR R0,R4 .. @VA08859 00590000
  622. SLR R0,R8 . @VA08859 00591000
  623. SRDL R0,12 AND CONVERT TO MICROSECONDS @VA08859 00592000
  624. SPACE 00593000
  625. LTR R1,R1 REMEMBER SETTING OF HIGH ORDER @VA08859 00594000
  626. BALR R15,R0 BIT IN LOW ORDER REGISTER @VA08859 00595000
  627. SPACE 00596000
  628. N R1,=XL4'7FFFFFFF' CLEAR HIGH ORDER BIT @VA08859 00597000
  629. LR R5,R0 SAVE HIGH ORDER WORD @VA08859 00598000
  630. MR R0,R7 MULTIPLY BY 100 FOR PERCENTAGE @VA08859 00599000
  631. MR R4,R7 MULTIPLY HIGH ORDER WORD @VA08859 00600000
  632. ALR R0,R5 AND ADD IN OVERFLOW @VA08859 00601000
  633. SPM R15 WAS HIGH ORDER BIT ON ? @VA08859 00602000
  634. BNM ALIGN NO -- @VA08859 00603000
  635. SRL R7,1 ALIGN MULTIPLIER WITH MISSING BIT@VA08859 00604000
  636. ALR R0,R7 AND ADD IN PARTIAL SUM @VA08859 00605000
  637. ALIGN SRDL R0,0(R6) ALIGN WITH DIVISOR @VA08859 00606000
  638. DR R0,R3 GET PAGING OVERHEAD PERCENTAGE @VA08859 00607000
  639. SR R15,R15 INDEX TO PAGELOAD VALUES IN CQR @V4M0131 00608000
  640. TM APSTAT1-PSA(R11),PROCIPL THE IPL'ED PROCESSOR? @VMV0008 00609100
  641. BO UPDATEMP YES - MAIN PROC TABLE INDEX IS 0 @V4M0131 00610000
  642. LA R15,2 NO - AP TABLE INDEX IS 2 @V4M0131 00611000
  643. UPDATEMP EQU * UPDATE MAIN PROC PAGE LOAD VALUE @V4M0131 00612000
  644. LH R0,QPAGLOAD(R15) GET PREVIOUS PAGE LOAD VALUE. @V4M0131 00613000
  645. ALR R0,R0 TIMES 2 @VA08859 00614000
  646. AH R0,QPAGLOAD(R15) TIMES 3 @V4M0131 00615000
  647. ALR R1,R0 PLUS RECENT LOAD @VA08859 00616000
  648. SRL R1,2 /4 FOR SMOOTHED AVERAGE @VA08859 00617000
  649. STH R1,QPAGLOAD(R15) AND SAVE FOR EACH PROCESSOR. @V4M0131 00618000
  650. X R10,F08 INVERT WAITSAVE INDEX @V4M0131 00619000
  651. L R11,PREFIXB ADDR OF OTHER PREFIX AREA @V4M0131 00620000
  652. BCT R13,COMPSTAT COMPUTE PAGEING STATISTICS FOR @V4M0131 00621000
  653. * THE OTHER PROCESSOR. 00622000
  654. LM R10,R13,CQRSAVRG RESTORE CALLERS REQUIRED REGS @V4M0131 00623000
  655. LM R1,R2,=V(DMKPTRSS,DMKPTRFF) GET FLUSH AND @VA08859 00624000
  656. * STEAL COUNTS 00625000
  657. L R1,0(,R1) GET STEAL COUNT @VA08859 00626000
  658. L R2,0(,R2) GET FLUSH COUNT @VA08859 00627000
  659. LM R3,R4,QPAGSAV GET OLD COUNTS @VA08859 00628000
  660. STM R1,R2,QPAGSAV SAVE NEW COUNTS FOR NEXT TIME @VA08859 00629000
  661. SLR R1,R3 GET STEALS OVER INTERVAL @VA08859 00630000
  662. SLR R2,R4 GET FLUSHES OVER INTERVAL @VA08859 00631000
  663. LA R7,100 .. FOR ARITHMETIC @VA08859 00632000
  664. ALR R2,R1 GET TOTAL PAGES REPLENISHED @VA08859 00633000
  665. BZ SETRATIO IF ZERO, QUIT NOW @VA08859 00634000
  666. MR R0,R7 GET STEALS X 100 @VA08859 00635000
  667. DR R0,R2 DIVIDED BY STEALS + FLUSHES @VA08859 00636000
  668. LR R2,R1 GET RATIO @VA08859 00637000
  669. SETRATIO STH R2,QPGRATIO AND SAVE IT @VA08859 00638000
  670. LA R0,8 GET SOME FREE STORAGE @VA08859 00639000
  671. CALL DMKFREE ... @VA08859 00640000
  672. LR R7,R1 SAVE ITS ADDRESS @VA08859 00641000
  673. LR R9,R1 SAVE FOR FRET @V4M0131 00642000
  674. MVI 0(R7),C' ' BLANK IT OUT. @VA08859 00643000
  675. MVC 1(63,R7),0(R7) ..... @VA08859 00644000
  676. MVC 0(7,R7),=C'PAGING ' SET HEADER @VA08859 00645000
  677. TM APSTAT1,APUOPER APU OPERATIONAL ? @V4M0131 00646000
  678. BNO NOAP NO - DO NOT EXTEND MESSAGE @V4M0131 00647000
  679. MVC PLUS7(L3,R7),MP MOVE 'MP-' TO MESSAGE @V4M0131 00648000
  680. LH R1,QPAGLDMP PAGE LOAD VALUE OF MAIN PROCESSOR@V4M0131 00649000
  681. CALL DMKCVTBD CONVERT IT @V4M0131 00650000
  682. STCM R1,B'0011',PLUS10(R7) AND STORE AS MP VALUE @V4M0131 00651000
  683. MVC PLUS12(L4,R7),AP MOVE '/AP-' TO MESSAGE @V4M0131 00652000
  684. LH R1,QPAGLDAP PAGE LOAD VALUE OF APU @V4M0131 00653000
  685. CALL DMKCVTBD CONVERT IT @V4M0131 00654000
  686. STCM R1,B'0011',PLUS16(R7) AND STORE AS AP VALUE @V4M0131 00655000
  687. LA R7,N9(R7) ADJUST TO ACCOMODATE MP/AP TOTALS@V4M0131 00656000
  688. B APDONE CONTINUE WITH REMAINDER OF MSG @V4M0131 00657000
  689. NOAP EQU * @V4M0131 00658000
  690. LH R1,QPAGLOAD RE-LOAD CURRENT WAIT PERCENTAGE @VA08859 00659000
  691. CALL DMKCVTBD CONVERT IT @VA08859 00660000
  692. STCM R1,B'0011',7(R7) AND STORE IT @VA08859 00661000
  693. APDONE EQU * @V4M0131 00662000
  694. MVC 9(6,R7),=C', SET ' SET HEADER @VA08859 00663000
  695. L R1,=A(DMKSCHPG) GET ADDRESS OF THRESHOLD @VA08859 00664000
  696. L R1,0(,R1) GET THRESHOLD @VA08859 00665000
  697. CALL DMKCVTBD CONVERT IT @VA08859 00666000
  698. STCM R1,B'0011',15(R7) AND STORE IT @VA08859 00667000
  699. MVC 17(7,R7),=C', RATE ' SET HEADER @VA08859 00668000
  700. LH R1,QPAGRATE RE-LOAD CALCULATED PAGING RATE @VA08859 00669000
  701. CALL DMKCVTBD CONVERT IT @VA08859 00670000
  702. STCM R1,B'0111',24(R7) AND STORE IT @VA08859 00671000
  703. MVC 27(4,R7),=C'/SEC' SET HEADER @VA08859 00672000
  704. MVC 31(15,R7),=C', INTERVAL= ' LAST HEADER @VA08859 00673000
  705. LM R0,R1,ENDTIME GET ENDING TIME PERIOD @VA08859 00674000
  706. SL R1,RECDTIME+4 GET DIFFERENCE FROM START TIME @VA08859 00675000
  707. BC 8+2+1,*+8 ... @VA08859 00676000
  708. SL R0,F1 .... @VA08859 00677000
  709. SL R0,RECDTIME ..... @VA08859 00678000
  710. STCK RECDTIME REMEMBER START OF NEXT PERIOD. @VA08859 00679000
  711. BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 00680000
  712. DOWNWEGO GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 00681000
  713. CLOCKOK EQU * @VA04301 00682000
  714. SRDL R0,12 CONVERT TO MICROSECONDS @VA08859 00683000
  715. D R0,=F'1000000' CONVERT TO SECONDS @VA08859 00684000
  716. SLR R0,R0 CLEAR REMAINDER FOR NEXT DIVIDE. @VA08859 00685000
  717. D R0,=F'3600' GET NUMBER OF HOURS @VA08859 00686000
  718. CVD R1,TEMPSAVE CONVERT HOURS TO DECIMAL @VA08859 00687000
  719. UNPK 43(4,R7),TEMPSAVE+6(3) UNPACK IT @VA08859 00688000
  720. MVI 45(R7),C':' MAKE READABLE @VA08859 00689000
  721. LR R1,R0 REMAINDER FROM DIVIDE TOTAL SEC @VA08859 00690000
  722. SLR R0,R0 CLEAR FOR MINUTES @VA08859 00691000
  723. D R0,F60 GET TOTAL NUMBER OF MINUTES @VA08859 00692000
  724. CVD R1,TEMPSAVE CONVERT TO NUMBER OF MINUTES @VA08859 00693000
  725. UNPK 46(4,R7),TEMPSAVE+6(3) UNPACK MINUTES @VA08859 00694000
  726. MVI 48(R7),C':' MAKE READABLE @VA08859 00695000
  727. CVD R0,TEMPSAVE CONVERT SECONDS TO DECIMAL @VA08859 00696000
  728. UNPK 49(2,R7),TEMPSAVE+6(2) UNPACK SECONDS @VA08859 00697000
  729. OI 50(R7),X'F0' CORRECT FOR SIGN CHARACTER @VA08859 00698000
  730. LA R0,64 MESSAGE LENGTH @VA08859 00699000
  731. LR R1,R9 AND WHERE IT CAN BE FOUND @V4M0131 00700000
  732. CALL DMKQCNWT,PARM=NORET @VA08859 00701000
  733. LA R0,8 NUMBER OF DW'S TO FRET @VA08859 00702000
  734. LR R1,R9 AND ITS ADDRESS. @V4M0131 00703000
  735. CALL DMKFRET FRET IT. @VA08859 00704000
  736. B QRYEXIT RETURN TO DMKCFM @VA08859 00705000
  737. SPACE 2 00706000
  738. SHIFTER EQU * HERE TO TRUNCATE DIVISOR TO ONE @VA08859 00707000
  739. * WORD 00708000
  740. LTR R2,R2 ANY DATA IN HIGH ORDER WORD ?? @VA08859 00709000
  741. BZ SHIFTER1 NO - INSURE NON-NEGATIVE @VA08859 00710000
  742. SRDL R2,1 SHIFT ONE @VA08859 00711000
  743. ALR R6,R4 AND COUNT NUMBER OF SHIFTS @VA08859 00712000
  744. B SHIFTER CONTINUE @VA08859 00713000
  745. SHIFTER1 LTR R3,R3 INSURE NON-NEGATIVE VALUE -- @VA08859 00714000
  746. BCR 11,R15 IF NOT MINUS, EXIT @VA08859 00715000
  747. SRL R3,1 OTHERWISE, SHIFT ONE MORE @VA08859 00716000
  748. ALR R6,R4 BUMP SHIFT COUNT @VA08859 00717000
  749. BR R15 AND RETURN @VA08859 00718000
  750. DS 0D ALIGNMENT @VA08859 00719000
  751. CQRSAVRG DS 4F OVERHEAD REG SAVEAREA @V4M0131 00720000
  752. F08 DC F'08' BIT TO INVERT WAITSAVE INDEX @V4M0131 00721000
  753. DMKCQRWS DS 0F @VMH0012 00722000
  754. DC X'7FFFFFFF' WAITSAVE VALUE FOR MAIN PROC @V4M0131 00723000
  755. DC X'FFFFF000' @V4M0131 00724000
  756. DC X'7FFFFFFF' WAITSAVE VALUE FOR THE APU @V4M0131 00725000
  757. DC X'FFFFF000' @V4M0131 00726000
  758. INITSAVE DC X'7FFFFFFFFFFFF000' INITIAL DMKCQRWS VALUE @VA09324 00726100
  759. RECDTIME DC D'0' START OF RECORDING PERIOD. @VA08859 00727000
  760. ENDTIME DC D'0' END OF RECORDING PERIOD. @VA08859 00728000
  761. QPAGSAV DC 2F'0' FOR STEAL RATIO COUNTERS @VA08859 00729000
  762. QPAGRATE DC H'0' PAGE RATE PER SECONDS @VA08859 00730000
  763. QPAGLOAD DS 0H @V4M0131 00731000
  764. QPAGLDMP DC H'0' SAVE PAGE LOAD FACTOR - MAIN PROC@V4M0131 00732000
  765. QPAGLDAP DC H'0' SAVE PAGE LOAD FACTOR - APU @V4M0131 00733000
  766. QPGRATIO DC H'0' PAGING RATIO. @VA08859 00734000
  767. MP DC C'MP-' MESSAGE TEXT- PAGE LOAD VALUE MP @V4M0131 00735000
  768. AP DC C'/AP-' MESSAGE TEXT- PAGE LOAD VALUE AP @V4M0131 00736000
  769. PLUS7 EQU 7 @V4M0131 00737000
  770. PLUS10 EQU 10 @V4M0131 00738000
  771. PLUS12 EQU 12 @V4M0131 00739000
  772. PLUS16 EQU 16 @V4M0131 00740000
  773. N4 EQU 4 INDEX TO 2ND WORD @V4M0131 00741000
  774. N8 EQU 8 WAITSAVE INDEX @V4M0131 00742000
  775. N9 EQU 9 ADJUST BUFFER PTR @V4M0131 00743000
  776. L3 EQU 3 LENGTH @V4M0131 00744000
  777. L4 EQU 4 LENGTH @V4M0131 00745000
  778. EJECT 00746000
  779. *. 00747000
  780. * QUERY HOLD 00748000
  781. * 00749000
  782. * COMMAND FORMAT 00750000
  783. * 00751000
  784. * +----------+----------+ 00752000
  785. * | QUERY | HOLD | 00753000
  786. * +----------+----------+ 00754000
  787. * 00755000
  788. * 1. SCAN RDR PRT AND PUN SPOOL FIELS TO COUNT HOLD 00756000
  789. * 2. FORMAT HOD RESPONSE FOR FILE COUNT 00757000
  790. * 3. WRITE HOLD COUNT RESPONSE 00758000
  791. * 4. SCAN HOLD BUFFER QUEUE FOR USER HOLD RECORDS 00759000
  792. * 5. FORMAT RESPONSE FOR EACH USER RECORD 00760000
  793. * 6. STACK USER HOLD RECORD RESPONSE 00761000
  794. * 00762000
  795. * RESPONSE 00763000
  796. * 00764000
  797. * HELD: NNN RDR, NNN PRT, NNN PUN 00765000
  798. * 00766000
  799. * USERID PRT, USERID PUN, USERID ALL, ... 00767000
  800. * ... ... ... 00768000
  801. * 00769000
  802. *. 00770000
  803. QRYHOLD LA R0,8 GET STORAGE FOR BUFFER AREA @V386198 00771000
  804. CALL DMKFREE @V200930 00772000
  805. LR R6,R1 SAVE ADDRESS OF BUFFER GOTTEN @V200930 00773000
  806. USING HELDFILE,R6 AND ESTABLISHED ADDRESSABILITY @V200930 00774000
  807. MVC HELDFILE(32),HELDMSG @V200930 00775000
  808. L R7,=A(DMKRSPRD) LOAD ADDR. OF RDR SPOOL BLKS @V200930 00776000
  809. L R7,0(,R7) " " " @V200930 00777000
  810. BAL R9,SCANRSP SCAN FOR ALL RDR FILES HELD @V200930 00778000
  811. LTR R1,R1 WERE ANY FILE BEING "HELD" ? @V200930 00779000
  812. BZ *+8 NO,, BRANCH -LEAVE LINE ALONE @V200930 00780000
  813. STCM R1,7,HELDFILE+7 STORE NUM OF FILES HELD @V200930 00781000
  814. L R7,=A(DMKRSPPR) LOAD ADDRESS OF PRT SPOOL BLOCKS@V200930 00782000
  815. L R7,0(,R7) " " " @V200930 00783000
  816. BAL R9,SCANRSP SCAN FOR ALL PRINTER FILES HELD @V200930 00784000
  817. LTR R1,R1 WERE ANY "HELD" FILES FOUND / @V200930 00785000
  818. BZ *+8 NO,, BRANCH @V200930 00786000
  819. STCM R1,7,HELDFILE+16 STORE NUM. OF FILES FOUND @V200930 00787000
  820. L R7,=A(DMKRSPPU) LOAD ADDRESS OF PUNCH SPOOL BLKS@V200930 00788000
  821. L R7,0(,R7) " " " @V200930 00789000
  822. BAL R9,SCANRSP SCAN FOR ALL PUNCH FILES. @V200930 00790000
  823. LTR R1,R1 WERE ANY FOUND ? @V200930 00791000
  824. BZ *+8 NO,, TAKE THE BRANCH @V200930 00792000
  825. STCM R1,7,HELDFILE+25 STORE NUM OF FILES FOUND @V200930 00793000
  826. LA R0,32 SET LNG OF LINE @V200930 00794000
  827. LA R1,HELDFILE AND ALSO ITS ADDRESS @V200930 00795000
  828. BAL R3,STACK STACK OUTPUT @V200930 00796000
  829. LA R0,1 @V200930 00797000
  830. LA R1,BLANKS @V200930 00798000
  831. BAL R3,STACK STACK FOR OUTPUT @V200930 00799000
  832. L R7,=A(DMKRSPHQ) LOAD ADDRESS OF FIRST HELD BLOCK@V200930 00800000
  833. L R7,0(,R7) " " " @V200930 00801000
  834. LR R5,R6 SAVE ADDRESS OF BUFFER @V200930 00802000
  835. NXTLINE LR R6,R5 LOAD R6 W/ADDRESS OF BUFFER @V200930 00803000
  836. MVI HELDFILE,C' ' STORE BLANK INTO FIRST POSITION @V200930 00804000
  837. MVC HELDFILE+1(63),HELDFILE NOW CLEAR REMAINING @V200930 00805000
  838. SR R1,R1 CLEAR REG 1 @V200930 00806000
  839. BAL R9,SCANSHQ FIND ANY FILES BEING HELD @V200930 00807000
  840. LTR R1,R1 WERE ANY FOUND ? @V200930 00808000
  841. BZ HELDBUF IFNOT,, FRET THE BUFFER @V200930 00809000
  842. LR R0,R1 SAVE LNG OF PRINT LINE @V200930 00810000
  843. LR R1,R5 GET ADDRESSFIRST BYTE OF @V200930 00811000
  844. BAL R3,STACK STACK FOR OUTPUT @V200930 00812000
  845. LTR R7,R7 ARE THERE MORE FILES BEING "HELD"@V200930 00813000
  846. BNZ NXTLINE IF YES,, FIND ALL OF THEM. @V200930 00814000
  847. SPACE 00815000
  848. HELDBUF LR R1,R5 GET ADDRESS OF THE BUFFER @V200930 00816000
  849. LA R0,8 ALSO GET THE SIZE @V200930 00817000
  850. CALL DMKFRET NOW FRET IT @V200930 00818000
  851. B QRYEXIT AND EXIT FROM THIS MODULE @V200930 00819000
  852. SPACE 00820000
  853. SCANRSP SR R1,R1 GPR USED FOR COUNT @V200930 00821000
  854. USING SFBLOK,R7 ESTABLISH ADDRESSABILITY @V200930 00822000
  855. NXTRSP LTR R7,R7 IS THERE AN SFBLOK PRESENT @V200930 00823000
  856. BZ CVTBD NO,, BRANCH @V200930 00824000
  857. TM SFBFLAG,SFBUHOLD+SFBSHOLD IS FILE BEING HELD ? @V200930 00825000
  858. L R7,0(,R7) GET ADDRESS OF NEXT SPOOL BLOCK. @V200930 00826000
  859. BZ NXTRSP IF FILE NOT HELD ,,TRY NEXT ONE. @V200930 00827000
  860. LA R1,1(0,R1) ADD 1 TO ACCUMULATE THE TOTAL @V200930 00828000
  861. B NXTRSP CHECK FOR MORE @V200930 00829000
  862. SPACE 00830000
  863. CVTBD LTR R1,R1 WERE ANY "HELD" FILES FOUND ? @V200930 00831000
  864. BZ 0(,R9) NO,, RETURN TO "QRYHOLD" LOGIC @V200930 00832000
  865. CALL DMKCVTBD CONVERT TO PRINTABLE CHARS. @V200930 00833000
  866. BR R9 RETURN TO CALLER @V200930 00834000
  867. DROP R7 @V200930 00835000
  868. SPACE 1 00836000
  869. USING SHQBLOK,R7 ESTABLISH ADDRESSABILITY @V200930 00837000
  870. SCANSHQ LTR R7,R7 IS THERE AN SHQBLOK HERE ? @V200930 00838000
  871. BZ 0(,R9) IF NOT,, RETURN @V200930 00839000
  872. MVI HELDFILE+9,C'-' PUT IN A DASH. @V200930 00840000
  873. TM SHQSHOLD,TYPPRT+TYPPUN IS THIS FILE BEING HELD ?@V200930 00841000
  874. BZ NOTHELD IF NOT,, NO PROCESSING IS INVOLED@V200930 00842000
  875. MVC HELDFILE(8),SHQUSER MOVE IN THE USERIDFILETHE @V200930 00843000
  876. BO BOTHHELD BRANCH,, IF BOTH PRINTER + PUN @V200930 00844000
  877. TM SHQSHOLD,TYPPRT IS IT THE PRINTER ONLY ? @V200930 00845000
  878. BO PRTHELD YEP,, PRINTER ONLY @V200930 00846000
  879. MVC HELDFILE+11(3),=C'PUN' HERE IF A PUNCH @V200930 00847000
  880. B BUMPPTR BUMP POINTER @V200930 00848000
  881. PRTHELD MVC HELDFILE+11(3),=C'PRT ' PRINTER FILE @V200930 00849000
  882. B BUMPPTR BUMP POINTER @V200930 00850000
  883. BOTHHELD MVC HELDFILE+11(3),=CL5'ALL ' BOTH HELD @V200930 00851000
  884. BUMPPTR LA R1,16(,R1) FIND NEXT ADDRESS IN BUFFER. @V200930 00852000
  885. LR R6,R5 GET BASE ADDRESS OF BUFFER @V200930 00853000
  886. AR R6,R1 NOW ADD THE INDEX POINTER TO IT @V200930 00854000
  887. NOTHELD L R7,0(,R7) GET NEXT SHQBLOK CHAIN POINTER @V200930 00855000
  888. CH R1,=H'60' IS THIS LINE FULL UP ? @V200930 00856000
  889. BH 0(,R9) IF SO,, BETTER GO PRINT THE LINE @V200930 00857000
  890. LR R3,R6 GET BUFFER POSITION @V200930 00858000
  891. S R3,F2 BACK IT UP BY TWO BYTES. @V200930 00859000
  892. MVI 0(R3),C',' MOVE IN THE COMMA. @V200930 00860000
  893. B SCANSHQ IF NOT,, SCAN FOR ANOTHER SHQBLOK@V200930 00861000
  894. SPACE 00862000
  895. DROP R6,R7 @V200930 00863000
  896. EJECT 00864000
  897. *. 00865000
  898. * QUERY PRIORITY 00866000
  899. * 00867000
  900. * COMMAND FORMAT 00868000
  901. * +--------+-------------------------+ 00869000
  902. * | QUERY | PRIORITY USERID | 00870000
  903. * +--------+-------------------------+ 00871000
  904. * 00872000
  905. * 1. FORMAT PRIORITY RESPONSE FOR USER 00873000
  906. * 2. WRITE PRIORITY RESPONSE 00874000
  907. * 00875000
  908. * RESPONSE 00876000
  909. * 00877000
  910. * USERID PRIORITY = NN 00878000
  911. * 00879000
  912. *. 00880000
  913. QRYPRIOR CALL DMKSCNFD LOCATE USERID @V386198 00881000
  914. BNZ CQR020 NONE FOUND @V200930 00882000
  915. CL R0,F8 IF USERID IS OVER EIGHT @V200930 00883000
  916. BH CQR020 WE HAVE AN ERROR - GO TELL USER @V200930 00884000
  917. STM R0,R1,SAVER0 SAVE LENGTH AND ADDRESS @V200930 00885000
  918. CALL DMKSCNAU GET VMBLOK ADDRESS @V200930 00886000
  919. BNZ CQR045 BRANCH IF USER NOT ON @V200930 00887000
  920. LR R10,R1 USERID VMBLOK ADDRESS TO R10 @V200930 00888000
  921. DROP R11 @V200930 00889000
  922. USING VMBLOK,R10 @V200930 00890000
  923. MVC SAVEWRK2(8),VMUSER STORE USERID INTO MSG LINE @V200930 00891000
  924. SLR R1,R1 @V200820 00892000
  925. IC R1,VMUPRIOR PICK UP USER PRIORITY VALUE @V200820 00893000
  926. DROP R10 @V200930 00894000
  927. USING VMBLOK,R11 @V200930 00895000
  928. CALL DMKCVTBD CONVERT TO DECIMAL @V200930 00896000
  929. MVC SAVEWRK2+8(12),=C' PRIORITY = ' PRIORITY MESSAGE@V200930 00897000
  930. STCM R1,3,SAVEWRK2+20 INSERT PRIORITY VALUE @V200930 00898000
  931. LA R0,22 SET LNG OF LINE @V200930 00899000
  932. LA R1,SAVEWRK2 AND THE ADDRESS @V200930 00900000
  933. B QRYWRIT SEND THE RESPOMSE AND EXIT. @V200930 00901000
  934. EJECT 00902000
  935. *. 00903000
  936. * QUERY TERMINAL 00904000
  937. * 00905000
  938. * COMMAND FORMAT 00906000
  939. * 00907000
  940. * +---------+--------------+ 00908000
  941. * | QUERY | TERMINAL | 00909000
  942. * +---------+--------------+ 00910000
  943. * 00911000
  944. * 1. FORMAT RESPONSE FOR TERMINAL 00912000
  945. * 2. WRITE RESPONSE 00913000
  946. * 00914000
  947. * RESPONSE 00915000
  948. * 00916000
  949. * LINEND XXX, LINEDEL XXX, CHARDEL XXX, ESCAPE XXX, TABCHAR XXXHRC101DK 00917590
  950. * LINESIZE NNN, ATTN XXX, APL XXX, TEXT XXX, MODE XX, HILIGHT XHRC101DK 00918180
  951. * AUTOCR XXX, MORE NNN NNN, HOLD XXX, TIMESTAMP XXX HRC101DK 00918770
  952. *+ |...+....1....+....2....+....3....+....4....+....5....+....6HRC101DK 00919360
  953. *. 00920000
  954. SPACE 2 00921000
  955. QRYTERM EQU * @V200930 00922000
  956. LA R0,8 SIZE OF BUFFER AREA @V387398 00923000
  957. CALL DMKFREE HAVE DMKFREE GET IT FOR USE @V200930 00924000
  958. LR R3,R1 REMEMBER ITS ADDRESS @V200930 00925000
  959. USING TERMLINE,R3 ADDRESSABILITY @V200930 00926000
  960. MVC TERMLINE(L'TERMSG),TERMSG @V60A6B6 00927000
  961. SPACE 00929000
  962. L R7,VMTLEND LOAD "LINEND/LINEDEL/CHARDEL/ESCA@V200820 00930000
  963. * "LINEND/LINEDEL/CHARDEL/ESCAPE" 00931000
  964. L R6,=C' OFF' STANDARD VALUE @V200930 00932000
  965. STCM R7,8,TERMLINE+8 ASSUME CHAR IS VALID @V200930 00933000
  966. STCM R7,4,TERMLINE+21 ASSUME CHAR IS LINE DELETE @V200930 00934000
  967. STCM R7,2,TERMLINE+34 ASSUME CHAR IS CHAR DELETE @V200930 00935000
  968. STCM R7,1,TERMLINE+46 ASSUME CHAR IS ESCAPE CHAR @V200930 00936000
  969. CLI VMTLEND,X'00' IS LINEND CHARACTER DEFINED ? @V200820 00937000
  970. BNE *+8 YES - @V200820 00938000
  971. STCM R6,7,TERMLINE+7 STORE "OFF" @V200930 00939000
  972. CLI VMTLDEL,X'00' IS LINE DELETE CHARACTER DEFINED @V200820 00940000
  973. BNE *+8 YES - @V200820 00941000
  974. STCM R6,7,TERMLINE+20 STORE "OFF" @V200930 00942000
  975. CLI VMTCDEL,X'00' IS CHARACTER DELETE DEFINED ? @V200820 00943000
  976. BNE *+8 YES - @V200820 00944000
  977. STCM R6,7,TERMLINE+33 STORE "OFF" @V200930 00945000
  978. CLI VMTESCP,X'00' IS ESCAPE CHARACTER DEFINED ? @V200820 00946000
  979. BNE *+8 YES - @V200820 00947000
  980. STCM R6,7,TERMLINE+45 STORE "OFF" @V200930 00948000
  981. SPACE 00948150
  982. CLI VMGRFTAB,X6A IS TABCHAR EQUAL TO "ON" VALUE? @V60A6B6 00948300
  983. BE WRTERMLN YES, ALL SET TO WRITE THE LINE @V60A6B6 00948450
  984. CLI VMGRFTAB,X00 IS TABCHAR DEFINED ? @V60A6B6 00948600
  985. BNE TABCMOVE YES, GO PUT IT INTO THE OUTPUT @V60A6B6 00948750
  986. STCM R6,B'0111',TERMLINE+58 STORE "OFF" @V60A6B6 00948900
  987. B WRTERMLN AND GO TO WRITE THE LINE @V60A6B6 00949050
  988. TABCMOVE MVC TERMLINE+59(1),VMGRFTAB MOVE IN TABCHAR VALUE @V60A6B6 00949200
  989. MVI TERMLINE+58,X40 CLEAR THE REST OF THE TABCHAR @V60A6B6 00949350
  990. SPACE 00949500
  991. WRTERMLN LA R0,L'TERMSG SET MSG LNG @V60A6B6 00949650
  992. LA R1,TERMLINE AND ALSO ITS ADDRESS @V200930 00950000
  993. CALL DMKQCNWT,PARM=NORET @V200930 00951000
  994. MVC TERMLINE(L'TERMSG2),TERMSG2 HRC101DK 00952990
  995. SPACE 00955000
  996. L R8,VMTERM PICK UP TERMINAL RDEVBLOK @V200820 00956000
  997. LTR R8,R8 IS THERE ON RIGHT NOW ? @V200820 00957000
  998. BNP QRYTRMF NO -- GO FRET THE BUFFER AND EXIT@V200820 00958000
  999. USING RDEVBLOK,R8 @V200820 00959000
  1000. CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM IS CLASS TERMINAL 00960000
  1001. BNE *+12 NO, BYPASS TEST FOR BISYNC LINE 00961000
  1002. CLI RDEVTYPE-RDEVBLOK(R8),TYPBSC IS THIS A LINE 00962000
  1003. BE QRYTRMS YES, GET RESOURCE ID. 00963000
  1004. CLI RDEVTYPC,CLASSPEC IS THIS A 3705-BASED TERMINA@V200820 00964000
  1005. BE QRYTRMS YES - NEED TO FIND NICBLOK @V200820 00965000
  1006. SR R1,R1 CLEAR REG 1 @V200930 00966000
  1007. IC R1,RDEVLLEN INSERT TERMINAL LINE LENGHT @V200930 00967000
  1008. CALL DMKCVTBD AND CONVERT IT TO DECIMAL @V200930 00968000
  1009. STCM R1,7,TERMLINE+9 STORE IN MSG LINE @V200930 00969000
  1010. TM RDEVTFLG,RDEVATOF IS ATTN OFF ? HRC101DK 00970490
  1011. BZ *+8 IF ON BIT = 0 @V200930 00971000
  1012. STCM R6,7,TERMLINE+19 STORE "OFF" @V200930 00972000
  1013. TM RDEVTMCD,RDEVAPLP IS APL-CODE BIT ON ? (X'08'@V200820 00973000
  1014. BO *+8 YES -- @V200820 00974000
  1015. STCM R6,7,TERMLINE+28 STOR "OFF" @V200930 00975000
  1016. TM RDEVTMCD,RDEVTEXT IS TEXT-CODE BIT ON ? @V387398 00976000
  1017. BO TEXTON YES -- @V387398 00977000
  1018. STCM R6,7,TERMLINE+38 STORE "OFF" @V387398 00978000
  1019. TEXTON EQU * @V387398 00979000
  1020. B QRYTRME GO FIGURE OUT ENVIRONMENT @V200820 00983000
  1021. QRYTRMS EQU * PROCESS SECOND LINE FOR 3705 TERM@V200820 00984000
  1022. LH R7,VMTRMID 370X NCP RESOURCE REFERENCE @V200820 00985000
  1023. N R7,F4095 STRIP OFF THE DEVICE CODE @V200820 00986000
  1024. MH R7,=AL2(NICSIZE*8) CONVERT TO NICLIST INDEX @V200820 00987000
  1025. AL R7,RDEVNICL GR7 = NICBLOK ADDRESS @V200820 00988000
  1026. USING NICBLOK,R7 ... @V200820 00989000
  1027. MVC SAVEWRK8(1),NICTMCD SAVE TERMINAL STATE @V387398 00990000
  1028. MVI SAVEWRK8+1,X'FF' INDICATE NICTMCD SAVED @V387398 00991000
  1029. SLR R1,R1 @V200820 00992000
  1030. IC R1,NICLLEN LINE LENGTH IN BYTES @V200820 00993000
  1031. CALL DMKCVTBD @V200820 00994000
  1032. STCM R1,7,TERMLINE+9 SET IN OUTPUT LINE @V200820 00995000
  1033. CLI RDEVTYPC,CLASTERM IS THIS A REMOTE 3270 ? @VM03094 00999000
  1034. BNE NOAPL NO, CONTINUE @VM03094 01000000
  1035. TM NICTMCD,NICAPL IS APL ON ? @VM03094 01001000
  1036. BO *+8 YES, BYPASS OFF INDICATOR @VM03094 01002000
  1037. STCM R6,7,TERMLINE+28 STORE "OFF" @V387398 01003000
  1038. TM NICTMCD,NICTEXT IS 'TEXT' ON? @V387398 01004000
  1039. BO TSTATTN YES, BYPASS OFF INDICATOR @V387398 01005000
  1040. STCM R6,7,TERMLINE+38 STORE "OFF" HRC101DK 01006490
  1041. B TSTATTN @V387398 01007000
  1042. NOAPL EQU * @VM03094 01008000
  1043. STCM R6,7,TERMLINE+28 APL IS 'OFF' FOR 3705 @V200820 01009000
  1044. STCM R6,7,TERMLINE+38 TEXT IS 'OFF' FOR 3705 @V387398 01010000
  1045. TSTATTN CLI RDEVTYPC,CLASTERM IS THIS A BISYNC LINE @V387398 01011000
  1046. BE *+12 YES, ATTN IS OFF 01012000
  1047. TM NICFLAG,NICATOF IS ATTN ON OR OFF ? @V200820 01013000
  1048. BZ *+8 'ON' -- @V200820 01014000
  1049. STCM R6,7,TERMLINE+19 STORE "OFF" HRC101DK 01015490
  1050. QRYTRME EQU * TERMINAL ENVIRONMENT SETTING @V200820 01016000
  1051. TM VMMLEVEL,VMMCPENV ENVIR CP ?? @V200930 01017000
  1052. BO *+10 YES, OK @V200930 01018000
  1053. MVC TERMLINE+48(2),=C'VM' FLAG VM MODE HRC101DK 01019190
  1054. TM VMMLVL2,VMMHLITE HIGHLIGHT ON HRC101DK 01019380
  1055. BO WRTLINE2 YES, OK HRC101DK 01019570
  1056. STCM R6,7,TERMLINE+60 STORE OFF HRC101DK 01019760
  1057. WRTLINE2 EQU * HRC101DK 01019950
  1058. LA R0,L'TERMSG2 LENGTH OF OUTPUT LINE HRC101DK 01020140
  1059. LA R1,TERMLINE AND ALSO ITS ADDRESS @V200930 01021000
  1060. CALL DMKQCNWT,PARM=NORET GO PRINT IT @V200930 01022000
  1061. QRYTRMF EQU * RETURN THE BUFFER TO FREE STORAGE@V200820 01023000
  1062. MVC TERMLINE(L'TERMSG3),TERMSG3 HRC101DK 01023040
  1063. TM VMMLVL2,VMMAUTCR AUTOCR ON HRC101DK 01023080
  1064. BO *+8 YES, OK HRC101DK 01023120
  1065. STCM R6,7,TERMLINE+7 STORE OFF HRC101DK 01023160
  1066. SR R1,R1 CLEAR R1 HRC101DK 01023200
  1067. IC R1,VMMOREBP GET BEEP TIME HRC101DK 01023240
  1068. CALL DMKCVTBD CONVERT IT HRC101DK 01023280
  1069. STCM R1,7,TERMLINE+17 STORE IT HRC101DK 01023320
  1070. SR R1,R1 CLEAR R1 HRC101DK 01023360
  1071. IC R1,VMMORECL GET CLEAR TIME HRC101DK 01023400
  1072. CALL DMKCVTBD CONVERT IT HRC101DK 01023440
  1073. STCM R1,7,TERMLINE+21 STORE IT HRC101DK 01023480
  1074. TM VMMLVL2,VMMNHOLD NO HOLD ON ? HRC101DK 01023520
  1075. BNO *+8 NO, OK HRC101DK 01023560
  1076. STCM R6,7,TERMLINE+31 STORE OFF HRC101DK 01023600
  1077. TM VMMLEVEL,VMMSTMP TIME STAMP ON ? HRC101DK 01023640
  1078. BO WRTLINE3 HRC101DK 01023680
  1079. STCM R6,7,TERMLINE+46 STORE OFF HRC101DK 01023720
  1080. WRTLINE3 EQU * HRC101DK 01023760
  1081. LA R0,L'TERMSG3 LENGTH OF OUTPUT LINE HRC101DK 01023800
  1082. LA R1,TERMLINE AND ALSO ITS ADDRESS HRC101DK 01023840
  1083. CALL DMKQCNWT,PARM=NORET GO PRINT IT HRC101DK 01023880
  1084. LR R1,R3 SET UP R0 AND R1 TO @V200930 01024000
  1085. LA R0,8 "FRET" THIS BUFFER @V387398 01025000
  1086. CALL DMKFRET @V200930 01026000
  1087. DROP R3,R7,R8 @V200820 01027000
  1088. B QRYEXIT RETURN TO DMKCFM @V200930 01028000
  1089. SPACE 2 01028200
  1090. X00 EQU X'00' @V60A6B6 01028400
  1091. X40 EQU X'40' @V60A6B6 01028600
  1092. X6A EQU X'6A' @V60A6B6 01028800
  1093. EJECT 01029000
  1094. * @V4075A0 01030000
  1095. * QUERY AFFINITY CLASS A + E USERS ONLY @V4075A0 01031000
  1096. * @V4075A0 01032000
  1097. * COMMAND FORMAT @V4075A0 01033000
  1098. * @V4075A0 01034000
  1099. * +---------+-------------------------+ @V4075A0 01035000
  1100. * | QUERY | AFFINITY (USERID) | @V4075A0 01036000
  1101. * +---------+-------------------------+ @V4075A0 01037000
  1102. * @V4075A0 01038000
  1103. * RESPONSE: @V4075A0 01039000
  1104. * @V4075A0 01040000
  1105. * USERID PROCESSOR AFFINITY @V4075A0 01041000
  1106. * .... ... @V4075A0 01042000
  1107. * @V4075A0 01043000
  1108. * METHOD OF OPERATION @V4075A0 01044000
  1109. * 1. IF USERID SPECIFIED, CALL DMKSCNAU @V4075A0 01045000
  1110. * 2. IF NOT FOUND, ISSUE DMKCQR045 & EXIT @V4075A0 01046000
  1111. * 3. ISSUE HEADER MESSAGE @V4075A0 01047000
  1112. * 4. GET SPACE FOR DATA MESSAGES @V4075A0 01048000
  1113. * 5. IF SINGLE USER, FILL IN HIS USERID AND AFFINITY ST@V4075A0 01049000
  1114. * WRITE RESPONSE, FREE BUFFER & EXIT @V4075A0 01050000
  1115. * 6. ELSE, SET FLAG FOR NONE FOUND @V4075A0 01051000
  1116. * 7. DO 8+9 FOR EACH USER IN THE VMBLOK CHAIN @V4075A0 01052000
  1117. * 8. TEST VMAFFON FOR AFFINITY SET @V4075A0 01053000
  1118. * 9. IF AFFINITY SET, FILL IN USERID AND PROCESSOR ADDR@V4075A0 01054000
  1119. * WRITE MESSAGE, AND SET FLAG FOR AFFINITY FOUND @V4075A0 01055000
  1120. * 10. IF FLAG SHOWS NO AFFINITY FOUND, WRITE MESSAGE 'NO@V4075A0 01056000
  1121. * 11. FREE BUFFER AND EXIT @V4075A0 01057000
  1122. * @V4075A0 01058000
  1123. * REGISTER USAGE: @V4075A0 01059000
  1124. * @V4075A0 01060000
  1125. * R3 - INTERNAL LINKAGE @V4075A0 01061000
  1126. * R5 - BUFFER POINTER @V4075A0 01062000
  1127. * R6 - AFFINITY FLAG FOUNK @V4075A0 01063000
  1128. * R10 - VMBLOK POINTER OF QUERIED USER @V4075A0 01064000
  1129. * @V4075A0 01065000
  1130. QRYAFF EQU * @V4075A0 01066000
  1131. SR R10,R10 SECONDARY VMBLOK POINTER @V4075A0 01067000
  1132. CALL DMKSCNFD R0 = LEN, R1 -> FIELD. INPUT TO US @V4075A0 01068000
  1133. BNZ AFFALL NO MORE PARMS, DO FOR EVERYBODY @V4075A0 01069000
  1134. CALL DMKSCNAU USE PARM AS USERID, FIND HIS VMBLOK @V4075A0 01070000
  1135. BNZ CQR026 PARM IS NOT A USERID. TOO BAD @V4075A0 01071000
  1136. LR R10,R1 SAVE VMBLOK POINTER @V4075A0 01072000
  1137. AFFALL LA R0,L'AFFHDR @V4075A0 01073000
  1138. LA R1,AFFHDR START WITH HEADER MESSAGE @V4075A0 01074000
  1139. CALL DMKQCNWT,PARM=NORET @V4075A0 01075000
  1140. LA R0,3 A LITTLE DYNAMIC BUFFER SPACE @V4075A0 01076000
  1141. CALL DMKFREE @V4075A0 01077000
  1142. LR R5,R1 SAVE ITS NAME @V4075A0 01078000
  1143. LTR R10,R10 WAS IT ALL USERS? OR ONLY ONE? @V4075A0 01079000
  1144. BZ AFFORALL ALL USERS @V4075A0 01080000
  1145. BAL R3,DOMSG DO FOR 1 USER @V4075A0 01081000
  1146. AFFEX LR R1,R5 FIRST RETURN THE DYNAMIC BUFFER @V4075A0 01082000
  1147. LA R0,3 @V4075A0 01083000
  1148. CALL DMKFRET @V4075A0 01084000
  1149. B QRYEXIT THEN RETURN @V4075A0 01085000
  1150. SPACE 2 @V4075A0 01086000
  1151. AFFORALL EQU * @V4075A0 01087000
  1152. SR R6,R6 SET TO NO AFFINITY FOUND @V4075A0 01088000
  1153. LR R10,R11 @V4075A0 01089000
  1154. ******** MAY HAVE TO ADD SOME INSTRUCTIONS HERE @V4075A0 01090000
  1155. AFFLOOP TM VMAFF-VMBLOK(R10),VMAFFON DOES THIS USER HAVE@V4075A0 01091000
  1156. BZ AFFNEXT SKIP HIM IF NOT @V4075A0 01092000
  1157. BAL R3,DOMSGA SEND MESSAGE DESCRIBING HIS AFFINI@V4075A0 01093000
  1158. LA R6,1(R6) SET TO AFFINITY FOUND @V4075A0 01094000
  1159. AFFNEXT L R10,VMPNT-VMBLOK(R10) POINT TO NEXT USER @V4075A0 01095000
  1160. CR R11,R10 HAVE WE COME FULL CIRCLE? @V4075A0 01096000
  1161. BNE AFFLOOP NO -> KEEP GOING AROUND @V4075A0 01097000
  1162. LTR R6,R6 DID ANYBODY HAVE AFFINITY? @V4075A0 01098000
  1163. BNZ AFFEX YES, GO FREE SPACE AND EXIT @V4075A0 01099000
  1164. MVC AFFSTATE-AFFRESP(4,R5),=C'NONE' TELL OPERATOR @V4075A0 01100000
  1165. MVC AFFUSID-AFFRESP(8,R5),BLANKS @V4075A0 01101000
  1166. BAL R3,AFFWR THERE IS NO AFFINITY @V4075A0 01102000
  1167. B AFFEX THEN CLOSE DOWN @V4075A0 01103000
  1168. SPACE 2 @V4075A0 01104000
  1169. USING AFFRESP,R5 @V4075A0 01105000
  1170. DOMSG TM VMAFF-VMBLOK(R10),VMAFFON DOES USER HAVE AFF? @V4075A0 01106000
  1171. BO DOMSGA YES @V4075A0 01107000
  1172. MVC AFFSTATE,=C'NONE' ONLY GO THROUGH HERE FOR 1 U@V4075A0 01108000
  1173. B AFFUSER SO WE CAN DESTROY BUFFER CONTENTS @V4075A0 01109000
  1174. SPACE 1 @V4075A0 01110000
  1175. DOMSGA IC R1,VMAFF-VMBLOK(R10) GET PROCESSOR ADDR @V4075A0 01111000
  1176. N R1,=F'63' ELIMINATE FLAG BIT IN FIELD @V4075A0 01112000
  1177. CALL DMKCVTBD CONVERT TO EBCDIC OUTPUT FORMAT @V4075A0 01113000
  1178. STCM R1,3,AFFSTATE PICK UP TWO DIGIT MAXIMUM @V4075A0 01114000
  1179. MVC AFFSTATE+2(2),BLANKS NICE FORMATTING @V4075A0 01115000
  1180. SPACE 1 @V4075A0 01116000
  1181. AFFUSER MVC AFFUSID,VMUSER-VMBLOK(R10) PUT IN HIS USERID @V4075A0 01117000
  1182. AFFWR LA R0,LAFFRESP @V4075A0 01118000
  1183. MVC AFFUSID+8(2),BLANKS UNFILLED FIELD (FORMATTING)@V4075A0 01119000
  1184. LR R1,R5 @V4075A0 01120000
  1185. CALL DMKQCNWT,PARM=NORET @V4075A0 01121000
  1186. BR R3 @V4075A0 01122000
  1187. DROP R5 @V4075A0 01123000
  1188. SPACE 3 @V4075A0 01124000
  1189. AFFHDR DC C' USERID PROCESSOR AFFINITY' @V4075A0 01125000
  1190. AFFRESP DSECT @V4075A0 01126000
  1191. AFFUSID DS CL8 THIS IS WHAT WE OUTPUT @V4075A0 01127000
  1192. DS CL2 UNDER THE HEADER @V4075A0 01128000
  1193. AFFSTATE DS CL4 @V4075A0 01129000
  1194. LAFFRESP EQU *-AFFRESP @V4075A0 01130000
  1195. DMKCQR CSECT @V4075A0 01131000
  1196. EJECT @V4075A0 01132000
  1197. HELDMSG DC C'HOLD : NO RDR, NO PRT, NO PUN' @V3E7466 01133000
  1198. TERMSG DC C'LINEND X , LINEDEL X , CHARDEL X , ESCAPE X , TABC+01133600
  1199. HAR ON ' @V60A6B6 01134200
  1200. TERMSG2 DC C'LINESIZE NNN, ATTN ON , APL ON , TEXT ON , MODE CP, HI*01135190
  1201. LIGHT ON ' HRC101DK 01135380
  1202. TERMSG3 DC C'AUTOCR ON , MORE 050 010, HOLD ON , TIMESTAMP ON ' *01135570
  1203. NEW FUNCTION HRC101DK 01135760
  1204. CPUMSG DC C'CPUID = FF' @V3E7466 01136000
  1205. LCPUMSG EQU 24 MESSAGE LENGTH @V3E7466 01137000
  1206. SPACE 1 01138000
  1207. CQR020 LA R2,RC20 ERROR RETURN CODE = 20 @V3E7466 01139000
  1208. B NOPARM ERROR MESSAGE @V200930 01140000
  1209. SPACE 01141000
  1210. CQR026 LA R2,RC26 ERROR RETURN CODE = 26 @V3E7466 01142000
  1211. B NOPARM ERROR MESSAGE @V200930 01143000
  1212. SPACE 01144000
  1213. CQR028 LA R2,RC28 ERROR RETURN CODE = 28 @V3E7466 01145000
  1214. B NOPARM ERROR MESSAGE @V200930 01146000
  1215. SPACE 01147000
  1216. CQR045 LA R2,RC45 ERROR RETURN CODE = 45 @V3E7466 01148000
  1217. LM R0,R1,SAVER0 GET PARMS @V200930 01149000
  1218. B CALLERM ERROR MESSAGE @V200930 01150000
  1219. SPACE 01151000
  1220. NOPARM SR R1,R1 NO ERROR PARMS @V200930 01152000
  1221. CALLERM ICM R0,14,MODID+3 GET MODULE ID @V200930 01153000
  1222. CALL DMKERMSG WRITE ERROR MESSAGE @V200930 01154000
  1223. SPACE 01155000
  1224. * DMKERMSG WILL EXIT AND NOT RETURN HERE .... 01156000
  1225. * 01157000
  1226. SPACE 01158000
  1227. RC20 EQU 20 ERROR RETURN CODE = 20 @V3E7466 01159000
  1228. RC26 EQU 26 ERROR RETURN CODE = 26 @V3E7466 01160000
  1229. RC28 EQU 28 ERROR RETURN CODE = 28 @V3E7466 01161000
  1230. RC45 EQU 45 ERROR RETURN CODE = 45 @V3E7466 01162000
  1231. LTORG @V200930 01163000
  1232. SPACE 01164000
  1233. HELDFILE DSECT @V200930 01165000
  1234. DS 0CL64 @V200930 01166000
  1235. SPACE 01167000
  1236. TERMLINE DSECT @V200930 01168000
  1237. DS 0CL64 @V60A6B6 01169000
  1238. SPACE 01170000
  1239. SETHDR DSECT @V200930 01171000
  1240. DS 0CL64 @V200930 01172000
  1241. EJECT 01173000
  1242. PSA , @V306638 01174000
  1243. COPY DEVTYPES @V306638 01175000
  1244. COPY EQU @V306638 01176000
  1245. COPY NETWORK @V306638 01177000
  1246. COPY RBLOKS @V306638 01178000
  1247. COPY SAVE @V306638 01179000
  1248. COPY SPOOL @V306638 01180000
  1249. COPY VBLOKS @V306638 01181000
  1250. COPY VMBLOK @V306638 01182000
  1251. END DMKCQR 01183000
ibm/vm370-lib/cp/dmkcqr.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator