User Tools

Site Tools


ibm:vm370-lib:cp:dmkcqg.assemble_src

DMKCQG Source

References

Source Listing

DMKCQG.ASSEMBLE.txt
  1. CQG TITLE 'DMKCQG (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - 00005000
  6. * DMKCQG 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * TO RETURN TO THE REQUESTOR INFORMATION FOR YHE FOLLOWING 00009000
  10. * QUERY FUNCTIONS : 00010000
  11. * QUERY VIRTUAL (DASD TAPE UR ETC. ) 00011000
  12. * 00013000
  13. * ATTRIBUTES - 00014000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00015000
  15. * 00016000
  16. * ENTRY POINTS - 00017000
  17. * DMKCQGEN - TO INTERROGATE THE VIRTUAL 00018000
  18. * MACHINE AS PER THE USERS REQUEST. 00019000
  19. * DMKCQGFI - TO GET NUMBER OF READER, PRINTER, AND 00020000
  20. * PUNCH FILES. 00021000
  21. * DMKCQGLG - TO OUTPUT THE MESSAGES IN THE LOG MESSAGE BLOKS. 00022000
  22. * 00023000
  23. * 00024000
  24. * ENTRY CONDITIONS - 00025000
  25. * GPR6 - BRANCH TABLE INDEX VALUE 00026000
  26. * GPR9 - ADDRESS OF THE COMMAND LINE BUFFER 00027000
  27. * GPR11 - ADDRESS OF THE VMBLOK 00028000
  28. * GPR12 - ADDRESS OF THE ENTRY POINT 00029000
  29. * GPR13 - ADDRESS OF THE STANDARD SAVE AREA 00030000
  30. * 00031000
  31. * EXIT CONDITIONS - 00032000
  32. * NORMAL - 00033000
  33. * GPR2 = 0 00034000
  34. * 00035000
  35. * ERROR - 00036000
  36. * GPR2 = ERROR MESSAGE CODE NUMBER 00037000
  37. * 00038000
  38. * CALLS TO OTHER ROUTINES - 00039000
  39. * DMKSCNFD - TO LOCATE THE NEXT ARGUMENT IN THE COMMAND BUFFER 00040000
  40. * DMKSCNAU - TO FIND THE VMBLOK FOR A SPECIFIC USERID 00041000
  41. * DMKSCNVU - TO FIND CONTROL BLOKS FOR A VIRTUAL DEVICE 00042000
  42. * DMKCVTHB - TO CONVERT HEXADECIMAL ADDRESS TO BINARY 00043000
  43. * DMKCVTDB - TO CONVERT A DECIMAL NUMBER TO BINARY 00044000
  44. * DMKCVTBD - TO CONVERT A BINARY NUMBER TO DECIMAL 00045000
  45. * DMKCVTBH - TO CONVERT A BINARY NUMBER TO HEXADECIMAL 00046000
  46. * DMKFREE - TO OBTAIN STORAGE FOR REGISTER SAVE 00047000
  47. * DMKFRET - TO RETURN STORAGE TO THE SYSTEM 00048000
  48. * DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00049000
  49. * DMKSCNRN - TO GET REAL DEVICE NAME 00050000
  50. * DMKERMSG - TO OUTPUT ERROR MESSAGES TO THE TERMINAL. 00051000
  51. * DMKSCNRD - TO GET THE ADDRESS OF A DEVICE. 00052000
  52. * DMKSCNVN - TO GET A DEVICE NAME. 00053000
  53. * DMKCVTDT - TO GET THE DATE AND TIME. 00054000
  54. * DMKCFCSC - SCAN OPERAND FOR RANGE OF ADDRESSES 00054100
  55. * 00055000
  56. *EXTERNAL REFERENCES - 00056000
  57. * NONE 00057000
  58. * 00058000
  59. * TABLES/WORKAREAS - 00059000
  60. * NONE 00060000
  61. * 00061000
  62. * REGISTER USAGE - 00062000
  63. * GPR0 - LENGTH OF ARGUMENT IN LINE BUFFER(RETURNED BY DMKSCNFD 00063000
  64. * GPR1 - ADDRESS OF NEXT ARGUMENT(RETURNED BY DMKSCNFD) 00064000
  65. * GPR2 - PARAMETERS PASSED TO CALLED ROUTINES 00065000
  66. * GPR3 - WORK REG AND INDEX FOR BXLE'S 00066000
  67. * GPR4 - WORK REG AND INCREMENT REG FOR BXLE'S 00067000
  68. * GPR5 - WORK REGISTER AND COMPARAND REG FOR BXLE'S 00068000
  69. * GPR6 - ADDRESS OF RCHBLOK OR VCUBLOK 00069000
  70. * GPR7 - ADDRESS OF RCUBLOK OR VCUBLOK 00070000
  71. * GPR8 - ADDRESS OF RDEVBLOK OR VDEVBLOK 00071000
  72. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00072000
  73. * GPR10 - WORK REGISTER 00073000
  74. * GPR11 - ADDRESS OF THE VMBLOK 00074000
  75. * GPR12 - MODULE BASE REGISTER 00075000
  76. * GPR13 - SAVEAREA BASE 00076000
  77. * GPR14 - LINKAGE REGISTER 00077000
  78. * GPR15 - LINKAGE REGISTER 00078000
  79. * 00079000
  80. EJECT 00080000
  81. * COMMAND FORMAT - 00081000
  82. * 00082000
  83. * 00083000
  84. * CLASS G 00084000
  85. * 00085000
  86. * 00086000
  87. * +---------+-----------------------------------+ 00087000
  88. * | QUERY | VIRTUAL DASD | 00088000
  89. * | Q | TAPES | 00091000
  90. * | | LINES | 00094000
  91. * | | UR | 00095000
  92. * | | GRAF | 00096000
  93. * | | STORAGE | 00097000
  94. * | | ALL | 00098000
  95. * | | VADDR | 00099000
  96. * | | VADDR1-VADDR2 | 00099100
  97. * | | CHANNELS | 00100000
  98. * | | | 00101000
  99. * | | DASD | 00102000
  100. * | | TAPES | 00103000
  101. * | | LINES | 00104000
  102. * | | UR | 00105000
  103. * | | GRAF | 00106000
  104. * | | STORAGE | 00107000
  105. * | | ALL | 00108000
  106. * | | VADDR | 00109000
  107. * | | VADDR1-VADDR2 | 00109100
  108. * | | CHANNELS | 00110000
  109. * | | | 00111000
  110. * | | CONS | 00112000
  111. * | | | 00113000
  112. * +---------+-----------------------------------+ 00114000
  113. * 00115000
  114. * 00125000
  115. * OPERATION - 00126000
  116. * 00127000
  117. * 1. ISSUE SVC 16 TO RETURN THE SAVEAREA, THUS, WHEN EXIT 00128000
  118. * WILL RETURN DIRECTLY TO DMKCFM COMMAND PROCESSING INSTEAD 00129000
  119. * OF RETURNING TO DMKCFMQU. 00130000
  120. * 2. THE PROPER ROUTINE IS ENTERED VIA A BRANCH TABLE. 00131000
  121. * REGISTER 6 IS SET UP BY DMKCFMQU TO INDEX TO THE PROPER 00132000
  122. * BRANCH INSTRUCTION. 00133000
  123. * 3. EACH ROUTINE SCANS THE APPROPRIATE CONTROL BLOKS TO 00134000
  124. * PICK UP THE INFORMATION NEEDED FOR THE REQUEST AND FORMATS 00135000
  125. * THE MESSAGE TO BE RETURNED TO THE USER. 00136000
  126. * STEPS 4,5,6,7,8, AND 9 DELETED. MOVED TO DMKCQR. 00136100
  127. * 10. VIRTUAL - CALL DMKSCNFD TO LOCATE THE TYPE OF VIRTUAL 00138000
  128. * REQUEST. IF NONE FOUND, ASSUME ALL. MATCH THE REQUEST TO 00139000
  129. * A LIST OF VALID VIRTUAL REQUEST. THE CLASS CODE IN THE 00140000
  130. * LIST WILL BE USED IN SETTING UP THE VARIOUS MESSAGES. 00141000
  131. * IF STORAGE WAS REQUESTED, THE STORAGE SIZE FROM THE 00142000
  132. * VMBLOK IS CONVERTED TO PRINTABLE CHARACTERS AND DMKQCNWT 00143000
  133. * IS CALLED TO OUTPUT THE STORAGE MESSAGE. FOR THE I/O 00144000
  134. * REQUESTS, THE VIRTUAL DEVICE BLOKS ARE SCANNED. WHEN THE 00145000
  135. * CLASS OF DEVICE MATCHES THE REQUEST, THE FORMAT ROUTINE 00146000
  136. * BUILDS AN APPROPRIATE MESSAGE ACCORDING TO THE DEVICE 00147000
  137. * TYPE AND ITS STATUS. THEN A CALL TO DMKQCNWT IS MADE TO 00148000
  138. * SEND THE MESSAGE TO THE TERMINAL. THIS CONTINUES UNTIL ALL 00149000
  139. * DEVICES HAVE BEEN SCANNED. IF THE ARGUMENT DOESN'T COMPARE 00150000
  140. * TO ANY ENTRY IN THE LIST, IT IS ASSUMED TO BE A VIRTUAL 00151000
  141. * ADDRESS. A CALL IS MADE TO DMKCFCSC TO SCAN OPERAND TO 00152000
  142. * SEE IF IT IS A RANGE OF ADDRESSES. IF YES, THE 00152100
  143. * ADDRESSES ARE VALIDITY CHECKED, CONVERTED TO BINARY 00152200
  144. * (DMKCVTHB) AND SAVED FOR LATER USE. IF ONLY A SINGLE 00152300
  145. * ADDRESS HAS BEEN SPECIFIED, A CALL TO DMKCVTHB IS 00152400
  146. * MADE TO CONVERT THE ADDRESS TO BINARY. IF THE CONVERT 00152500
  147. * IS BAD, CALL DMKERMSG TO SEND ERROR MESSAGE DMKCQG022E. 00152600
  148. * FOR A GOOD CONVERT, CALL DMKSCNVU TO LOCATE THE VIRTUAL 00152700
  149. * DEVICE BLOCKS. IF THE BLOCKS ARE NOT FOUND, CALL 00152800
  150. * DMKERMSG TO SEND ERROR MESSAGE DMKCQG040E. IF THE 00152900
  151. * DEVICE IS FOUND, FORMAT THE RESPONSE ACCORDING TO THE 00153000
  152. * DEVICE TYPE, CALL DMKQCNWT TO SEND THE RESPONSE AND EXIT. 00153100
  153. * 12. STEP 12 DELETED, MOVED TO CQH 00160000
  154. * 13. IF THE REQUEST IS NOT FOUND IN THE LIST, ASSUME THE 00175000
  155. * REQUEST TO BE A VADDR OR USERID. FIRST CHECK IF IT IS 00176000
  156. * A VALID DEVICE ADDRESS. A CALL IS MADE TO DMKCFCSC TO 00177000
  157. * SCAN OPERAND TO SEE IF IT IS A RANGE OF ADDRESSES. 00177100
  158. * IF YES, THE ADDRESSES ARE VALIDITY CHECKED, CONVERTED 00177200
  159. * TO BINARY (DMKCVTHB) AND SAVED FOR LATER USE. IF ONLY 00177300
  160. * A SINGLE ADDRESS HAS BEEN SPECIFIED, A CALL TO DMKCVTHB 00177400
  161. * IS MADE TO CONVERT THE ADDRESS TO BINARY. IN BOTH CASES, 00177500
  162. * THE RESPONSE IS FORMATTED ACCORDING TO THE DEVICE TYPE, 00177600
  163. * AND A CALL IS MADE TO DMKQCNWT TO SEND THE RESPONSE. 00177700
  164. * IF NOT A DEVICE ADDRESS, ASSUME A USERID. CALL DMKSCNAU 00177800
  165. * TO LOCATE THE USERID VMBLOK ADDRESS. IF NOT FOUND, CALL 00177900
  166. * DMKERMSG TO SEND ERROR MESSAGE DMKCQG045E. IF OK, FORMAT 00178000
  167. * THE USERID AND LINE ADDRESS, CALL DMKQCNWT TO SEND THE 00178100
  168. * RESPONSE AND EXIT. WHEN PROCESSING A RANGE OF ADDRESSES, 00178200
  169. * A SEPARATE RESPONSE IS FORMATTED AND ISSUED FOR EACH 00178300
  170. * ADDRESS IN THE RANGE. 00178400
  171. * 00184000
  172. * RESPONSES - 00185000
  173. * 00186000
  174. * THE FOLLOWING ARE TYPICAL RESPONSES FOR THE QUERY COMMANDS 00187000
  175. * COVERED IN THIS MODULE. XXX DENOTES A VIRTUAL ADDRESS AND 00188000
  176. * YYY A REAL ADDRESS. 00189000
  177. * 00190000
  178. * QUERY DASD 00191000
  179. * DASD XXX ON DASD YYY 00192000
  180. * DASD XXX 2314 VOLID R/O NNN CYL 00193000
  181. * DASD XXX 3330 (TEMP) R/W NNN CYL 00194000
  182. * 00195000
  183. * QUERY LINES 00196000
  184. * LINE XXX ON LINE YYY 00197000
  185. * LINE XXX ENABLED 00198000
  186. * LINE XXX DISABLED 00199000
  187. * 00200000
  188. * QUERY GRAF 00201000
  189. * GRAF XXX ON GRAF YYY 00202000
  190. * 00203000
  191. * QUERY VIRTUAL ALL - 00204000
  192. * STORAGE = NNNNNK 00205000
  193. * TAPE XXX ON TAPE YYY 00206000
  194. * TYPE XXX ON TYPE YYY 00207000
  195. * CONS XXX ON TYPE YYY TERM STOP 00208000
  196. * GRAF XXX ON GRAF YYY 00209000
  197. * RDR XXX CL X CONT HOLD READY NOEOF 00210000
  198. * PRT XXX CL X CONT HOLD READY COPY NN 00211000
  199. * XXX TO XXXXXXXX DIST DDDDDDDD FLASHC FF 00211300
  200. * XXX FLASH FFFF CHAR CCCC MDFY CCCC FCB FFFF 00211600
  201. * PUN XXX CL X CONT HOLD READY COPY NN 00212000
  202. * PUN XXX TO USERID DIST DISTCODE 00213000
  203. * DASD XXX 2314 VOLID R/O NNN CYL 00214000
  204. * LINE XXX ENABLED 00215000
  205. * DEV XXX PSEUDO TIMER 00216000
  206. * DASD XXX 3330 (TEMP) R/W NNN CYL 00217000
  207. * CHANNELS XXX 00218000
  208. * MSC XXX ON DEV YYY 00218100
  209. * 00219000
  210. * 00220000
  211. * 00235000
  212. * 00236000
  213. * 00237000
  214. * 00238000
  215. * 00239000
  216. * ERROR MESSAGES - 00240000
  217. * DMKCQG022E VADDR MISSING OR INVALID 00242000
  218. * DMKCQG026E OPERAND MISSING OR INVALID 00242100
  219. * DMKCQG040E DEV (ADDR) DOES NOT EXIST 00244000
  220. * DMKCQG045E (USERID) NOT LOGGED ON 00246000
  221. * 00247000
  222. *. 00248000
  223. EJECT 00249000
  224. DMKCQG CSECT 00250000
  225. MODID DC CL8'DMKCQG' @V200930 00251000
  226. USING PSA,R0 00252000
  227. USING VMBLOK,R11 00253000
  228. USING SAVEAREA,R13 00254000
  229. SPACE 00255000
  230. EXTRN DMKCVTDT 00256000
  231. EXTRN DMKCVTDB 00257000
  232. EXTRN DMKSCNVU 00258000
  233. EXTRN DMKCVTBD 00259000
  234. EXTRN DMKCVTBH 00260000
  235. EXTRN DMKSCNAU 00261000
  236. EXTRN DMKCVTHB 00262000
  237. EXTRN DMKSCNFD 00263000
  238. EXTRN DMKERMSG 00264000
  239. EXTRN DMKSCNVN 00265000
  240. EXTRN DMKSCNRN @V200930 00266000
  241. EXTRN DMKSCNRD 00267000
  242. EXTRN DMKCFCSC RANGE SCAN @V407466 00267100
  243. SPACE 00268000
  244. ENTRY DMKCQGEN 00269000
  245. EJECT 00270000
  246. * THIS ROUTINE IS CALLED BY DMKCFMQU. SINCE THERE IS NO NEED 00271000
  247. * TO RETURN TO CFMQU, THE SAVEAREA POINTED TO BY REGISTER 13 00272000
  248. * WILL BE RELEASED. THUS, WHEN THIS ROUTINE RETURNS IT WIL 00273000
  249. * GO DIRECTLY BACK TO CFM TO SCAN FOR THE NEXT COMMAND. 00274000
  250. * UPON ENTRY GPR6 HAS BEEN SET UP BY CFMQU TO INDEX INTO THE 00275000
  251. * LIST OF BRANCHES ACCORDING TO ARGUMENT FOUND,THEREFORE THE 00276000
  252. * ORDER OF BRANCHES MUST BE THE SAME AS THE LIST IN CFMQU. 00277000
  253. SPACE 2 00278000
  254. USING *,R12 00279000
  255. DMKCQGEN SVC 16 GIVE UP SAVEAREA - USE CFMQU SAVEAREA 00280000
  256. SL R12,=A(DMKCQGEN-DMKCQG) SET ADDRESSING @V200930 00281000
  257. USING DMKCQG,R12 @V200930 00282000
  258. STM R0,R1,SAVER0 SAVE REG 0-1 IN NEW SAVE AREA. 00283000
  259. MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA 00284000
  260. SLR R2,R2 CLEAR R2 @V407466 00284100
  261. ST R2,SAVER2 ZERO RETURN CODE @V407466 00284200
  262. EX 0,QUERYGN(R6) GR6 = TABLE INDEX SET BY DMKCFM @VM08820 00285000
  263. B QRYSCAN GO FORMAT DEVICE-CLASS QUERY @VM08820 00286000
  264. SPACE 2 00287000
  265. QUERYGN DS 0H ACTION TABLE FOR DMKCQGEN @VM08820 00288000
  266. B QRYADDR QUERY VADDR / USERID @VM08820 00289000
  267. B QRYEXIT RESERVED @VA13360 00290000
  268. B QRYEXIT RESERVED @VA13360 00291000
  269. B QRYEXIT RESERVED @VA13360 00292000
  270. B QRYVIRT QUERY VIRTUAL XXX @VM08820 00293000
  271. MVI SAVEWRK1,CLASDASD QUERY DASD @VM08820 00294000
  272. MVI SAVEWRK1,CLASTAPE QUERY TAPE @VM08820 00295000
  273. MVI SAVEWRK1,CLASTERM QUERY LINES @VM08820 00296000
  274. MVI SAVEWRK1,CLASURI+CLASURO QUERY UR @VM08820 00297000
  275. B QRYCORE QUERY STORAGE @VM08820 00298000
  276. B QRYVALL QUERY ALL @VM08820 00299000
  277. MVI SAVEWRK1,CLASGRAF QUERY GRAF @VM08820 00300000
  278. MVI SAVEWRK1,CLASTERM+X'01' QUERY CONSOLE @VM08820 00301000
  279. B QRYCHAN QUERY CHANNELS @VA01771 00302000
  280. SPACE 3 00303000
  281. QRYWRIT EQU * WRITE A SINGLE RESPONSE LINE @VM08820 00304000
  282. CALL DMKQCNWT,PARM=NORET GR0, GR1 ALL SET @VM08820 00305000
  283. SPACE 00306000
  284. QRYEXIT EQU * RETURN TO DMKCFM @VM08820 00307000
  285. EXIT @VM08820 00308000
  286. EJECT 00309000
  287. QRYVIRT EQU * QUERY VIRTUAL XXX @VM08820 00310000
  288. CALL DMKSCNFD SCAN FOR ANOTHER OPERAND @VM08820 00311000
  289. BNZ QRYVALL 'QUERY VIRTUAL ALL' = DEFAULT @VM08820 00312000
  290. CL R0,F8 IS THE OPERAND VALID ? @VM08820 00313000
  291. BH CQG022 NO -- ERROR MESSAGE @VM08820 00314000
  292. LR R2,R0 OPERAND LENGTH TO GR2 @VM08820 00315000
  293. BCTR R2,0 DECREMENT FOR COMPARE @VM08820 00316000
  294. LA R3,QRYTABL START OF OPERAND TABLE @VM08820 00317000
  295. LA R4,QRYTLEN . . .ENTRY LENGTH @VM08820 00318000
  296. LA R5,QRYTEND . . .END OF TABLE @VM08820 00319000
  297. QRYTYPE EQU * VALIDATE SECOND OPERAND @VM08820 00320000
  298. CLM R2,1,8(R3) LONG ENOUGH FOR THIS ONE ? @VM08820 00321000
  299. BL QRYBXLE NO -- SKIP TO NEXT ENTRY @VM08820 00322000
  300. EX R2,QRYCOMP COMPARE FOR OPERAND MATCH @VM08820 00323000
  301. BNE QRYBXLE NO -- SKIP TO NEXT ENTRY @VM08820 00324000
  302. SLR R2,R2 @VM08820 00325000
  303. IC R2,9(0,R3) PICK UP ACTION TABLE INDEX @VM08820 00326000
  304. EX 0,QUERYGN(R2) SET FLAGS OR BRANCH @VM08820 00327000
  305. B QRYSCAN FORMAT CLASS QUERY OUTPUT @VM08820 00328000
  306. SPACE 00329000
  307. QRYBXLE EQU * @VM08820 00330000
  308. BXLE R3,R4,QRYTYPE SEARCH THE OPERAND TABLE @VM08820 00331000
  309. SPACE 2 00332000
  310. QRYADDR EQU * QUERY VIRTUAL XXX / QUERY XXX @VM08820 00333000
  311. TM VMCLEVEL,VMCLASSG CLASS G USER 00334000
  312. BZ CQG026 NO - NOT ALLOWED 00335000
  313. STM R0,R1,SAVEWRK8 SAVE POINTERS FOR ERROR MSG @VM08820 00336000
  314. CL R0,F7 MORE THAN 7 CHARACTERS @V407466 00337000
  315. BH QRYUSER YES, TRY USERID @V407466 00337010
  316. LA R2,DASH PREPARE FOR RANGE SCAN @V407466 00337020
  317. CALL DMKCFCSC SEE IF RANGE SPECIFIED @V407466 00337030
  318. BZ NORANGE NO '-' FOUND IN OPERAND @V407466 00337040
  319. CR R1,R2 INVALID IF '-' FIRST CHAR. @V407466 00337050
  320. BNL QRYUSER TREAT AS USERID @V407466 00337060
  321. LR R3,R2 ... @V407466 00337070
  322. SR R3,R1 LENGTH OF RADDR1 FIELD @V407466 00337080
  323. LR R4,R0 ENTIRE OPERAND LENGTH @V407466 00337090
  324. LR R0,R3 RADDR1 LENGTH @V407466 00337100
  325. MVI 0(R2),BLANK REPLACE '-' WITH BLANK @V407466 00337110
  326. CALL DMKCVTHB CONVERT TO BINARY @V407466 00337120
  327. LR R0,R4 OPERAND LENGTH @V407466 00337130
  328. MVI 0(R2),CHARDASH PUT DASH BACK IN OPERAND @V407466 00337140
  329. BNZ QRYUSER TREAT AS USERID @V407466 00337150
  330. STH R1,RADDR1 SAVE FIRST ADDR IN RANGE @V407466 00337160
  331. LA R1,1(,R2) PT TO SECOND RADDR IN RANGE @V407466 00337170
  332. LR R2,R4 ENTIRE OPERAND LENGTH @V407466 00337180
  333. SR R2,R3 RADDR2 LENGTH @V407466 00337190
  334. BCTR R2,0 MINUS ONE FOR '-' @V407466 00337200
  335. CL R2,F3 MORE THAN THREE CHARACTERS @VA09175 00337203
  336. BH QRYUSER NOT A VALID ADDRESS @VA09175 00337206
  337. LR R0,R2 TO R0 @V407466 00337210
  338. CALL DMKCVTHB CONVERT SEC. ADDR IN RANGE @V407466 00337220
  339. LR R0,R4 ENTIRE OPERAND LENGTH @V407466 00337230
  340. BNZ QRYUSER TREAT AS USERID @V407466 00337240
  341. LH R4,RADDR1 FIRST ADD IN RANGE @V407466 00337250
  342. CR R1,R4 RADDR2 > RADDR1 @V407466 00337260
  343. BNH QRYUSER TREAT AS USERID @V407466 00337270
  344. STH R1,RADDR2 STORE RADDR2 IN SAVEWRK7+2 @V407466 00337280
  345. OI QRYBITS,RANGE INDICATE PROCESSING RANGE @V407466 00337290
  346. LH R1,RADDR1 FIRST RADDR IN RANGE @V407466 00337300
  347. ST R1,SAVEWRK6 SAVE FOR LATER @V407466 00337310
  348. B MAXDEVB SEE IF EXCEED MAX VIRT. DEVICE @V407466 00337320
  349. NORANGE CL R0,F3 ARG. TOO BIG FOR ADDR? @V407466 00337330
  350. BH QRYUSER . . .BUT IT MIGHT BE A USERID @VM08820 00338000
  351. CALL DMKCVTHB IF NOT IN LIST, MUST BE VADDR @VM08820 00339000
  352. BNZ QRYUSER NOT AN ADDRESS - TRY USERID @VM08820 00340000
  353. MAXDEVB LR R3,R1 SAVE DEVICE ADDRESS FOR NOW @V407466 00341000
  354. LA R0,15(0) ACQUIRE 15 DWDS WORK AREA @V407466 00341050
  355. CALL DMKFREE ACQUIRE STORAGE @V407466 00341100
  356. LR R9,R1 BUFFER ADDR TO R9 @V407466 00341150
  357. LR R1,R3 RESTORE DEVICE ADDRESS @V407466 00341200
  358. TM QRYBITS,RANGE RANGE PROCESSING? @V407466 00341250
  359. BZ MAXDEV NO, DON'T SET RANGE BIT @V407466 00341300
  360. OI QRYBITS,PASS1 INDICATE STORAGE ACQUIRED @V407466 00341350
  361. MAXDEV MAXDV R15 GET MAX VALID ADDR IN GR15 @V407466 00341400
  362. CR R1,R15 IS THIS A VALID ADDRESS ? @VM08820 00342000
  363. LA R2,22 ERROR MESSAGE NUMBER = 22E @V407466 00343000
  364. BH CQG022A TST FOR RANGE BEFORE MSG @V407466 00343100
  365. LR R3,R1 SAVE THE BINARY VALUE @VM08820 00344000
  366. CALL DMKSCNVU TRY TO FIND THE VDEVBLOK @VM08820 00345000
  367. LA R2,40 ERROR MESSAGE NUMBER = 40E @V407466 00346000
  368. BNZ CQG040A VIRTUAL DEVICE DOES NOT EXIST @V407466 00346100
  369. MVI SAVEWRK1+1,X'FF' DEVICE BLOCKS ALREADY FOUND @VM08820 00347000
  370. B SKIPSTOR STORAGE ALREADY ACQUIRED @V407466 00348000
  371. SPACE 00349000
  372. QRYCOMP CLC 0(*-*,R1),0(R3) QUERY VIRTUAL COMPARE @VM08820 00350000
  373. DASH DC C'-' RANGE DELIMITER @V407466 00350100
  374. CHARDASH EQU C'-' RANGE DELIMITER @V407466 00350200
  375. EJECT 00351000
  376. QRYUSER NI QRYBITS,X'FF'-RANGE TURN OFF RANGE @V407466 00352000
  377. LTR R6,R6 WAS IT QUERY VIRTUAL XXX ? @VM08820 00353000
  378. BNZ CQG022 YES - VADDR MISSING OR INVALID @VM08820 00354000
  379. LM R0,R1,SAVEWRK8 PICK UP OPERAND POINTERS @VM08820 00355000
  380. CALL DMKSCNAU IS THE USER LOGGED ON NOW ? @VM08820 00356000
  381. BNZ CQG045 NOPE - ERROR MESSAGE @VM08820 00357000
  382. LR R11,R1 TEMPORARILY SWITCH VMBLOK'S @VM08820 00358000
  383. MVC SAVEWRK2(8),VMUSER MOVE IN THE USERID @VM08820 00359000
  384. MVC SAVEWRK4(6),=C' - DSC' PERHAPS DISCONNECTED @VM08820 00360000
  385. TM VMOSTAT,VMDISC HOW DO WE STAND NOW ? @VM08820 00361000
  386. BO QRYUDSC ALL SET AS IS @VM08820 00362000
  387. ICM R8,B'1111',VMTERM IS THERE ANYTHING? @VA10569 00363300
  388. BZ QRYUDSC NO...BRANCH. @VA10569 00363600
  389. CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM IS CLASS TERMINAL 00364000
  390. BNE *+12 NO, BYPASS TEST FOR BISYNC LINE 00365000
  391. CLI RDEVTYPE-RDEVBLOK(R8),TYPBSC IS THIS A LINE 00366000
  392. BE QRYUNCP YES, GET RESOURCE ID. 00367000
  393. CLI RDEVTYPC-RDEVBLOK(R8),CLASSPEC NCP TERM ? @VM08820 00368000
  394. BE QRYUNCP YES -- @VM08820 00369000
  395. TM RDEVADD-RDEVBLOK(R8),RDEVLDEV Is this an LDEV? HRC065DK 00369100
  396. BO QRYLDEV Yes HRC065DK 00369200
  397. CALL DMKSCNRD GET 'CCU' ADDRESS IN GR1 @VM08820 00370000
  398. CALL DMKCVTBH CONVERT IT FOR OUTPUT @VM08820 00371000
  399. STCM R1,B'0111',SAVEWRK4+3 INSERT ADDRESS IN MSG @VM08820 00372000
  400. B QRYUDSC GO TYPE THE MESSAGE @VM08820 00373000
  401. SPACE 00374000
  402. QRYLDEV EQU * HRC065DK 00374100
  403. LH R1,RDEVADD-RDEVBLOK(,R8) Get the LDEV address HRC065DK 00374200
  404. N R1,F4095 Keep only the dev num HRC065DK 00374300
  405. CALL DMKCVTBH Make it displayable HRC065DK 00374400
  406. STCM R1,7,SAVEWRK4+3 Put dev addr in message HRC065DK 00374500
  407. MVI SAVEWRK4+2,C'L' Move in LDEV indicator HRC065DK 00374600
  408. B QRYUDSC Go display msg HRC065DK 00374700
  409. * 00374800
  410. QRYUNCP EQU * FORMAT OUTPUT FOR NCP TERMINAL @VM08820 00375000
  411. LH R1,VMTRMID NCP RESOURCE REFERENCE @VM08820 00376000
  412. CALL DMKCVTBH CONVERT IT FOR OUTPUT @VM08820 00377000
  413. STCM R1,15,SAVEWRK4+2 INSERT ADDRESS IN MSG @VM08820 00378000
  414. SPACE 00379000
  415. QRYUDSC EQU * SETUP FOR MESSAGE OUTPUT @VM08820 00380000
  416. L R11,SAVER11 BACK TO CALLER'S VMBLOK @VM08820 00381000
  417. LA R1,SAVEWRK2 START OF RESPONSE LINE @VM08820 00382000
  418. LA R0,14(0) . . .AND IT'S LENGTH @VM08820 00383000
  419. B QRYWRIT SEND SINGLE MESSAGE AND EXIT @VM08820 00384000
  420. EJECT 00385000
  421. QRYVALL EQU * QUERY ALL / QUERY VIRTUAL ALL @VM08820 00386000
  422. OI SAVEWRK1,VIRTALL FORMAT ALL DEVICES @VM08820 00387000
  423. SPACE 00388000
  424. QRYCORE EQU * QUERY (VIRTUAL) STORAGE @VM08820 00389000
  425. L R1,VMSTOR VIRTUAL MACHINE STOR SIZE @V304635 00390000
  426. SRL R1,10 MAKE SIZE = K 00391000
  427. CALL DMKCVTBD CONVERT SIZE TO DECIMAL 00392000
  428. STCM R1,15,SAVEWRK4+3 STORE LOW FOUR BYTES 00393000
  429. STC R0,SAVEWRK4+2 STORE HIGH BYTE 00394000
  430. MVC SAVEWRK2(7),STORAGE SET UP REST OF MESSAGE 00395000
  431. MVC SAVEWRK3+3(3),=C' = ' . . . 00396000
  432. MVI SAVEWRK5+3,C'K' . . . 00397000
  433. LA R0,16 MESSAGE SIZE 00398000
  434. LA R1,SAVEWRK2 SET BUFFER ADDRESS @V200930 00399000
  435. BAL R3,STACK STACK OUTPUT @V200930 00400000
  436. TM SAVEWRK1,VIRTALL WAS 'ALL' REQUESTED ? @VM08820 00401000
  437. BZ QRYEXIT NO -- ALL DONE @VM08820 00402000
  438. SPACE 1 00403000
  439. QRYCHAN MVC SAVEWRK2(14),=C'CHANNELS = BMX' ASSUME BMX CHAN.@VA01771 00404000
  440. LA R0,14 MESSAGE LENGTH @VA01771 00405000
  441. LA R1,SAVEWRK2 SET BUFFER ADDRESS @VA01771 00406000
  442. TM VMFSTAT,VMFBMX ARE THEY BMX CHANNELS @VA01771 00407000
  443. BO *+10 YES - MESSAGE ALL SET. @VA01771 00408000
  444. MVC SAVEWRK2+11(3),=C'SEL' CHANGE TO SELECTOR @VA01771 00409000
  445. BAL R3,STACK STACK OUTPUT LINE. @VA01771 00410000
  446. TM SAVEWRK1,VIRTALL WAS 'ALL' REQUESTED ? @VA01771 00411000
  447. BZ QRYEXIT NO - ALL DONE @VA01771 00412000
  448. SPACE 2 00413000
  449. * THE FOLLOWING CODE SCANS FOR ACTIVE VIRTUAL DEVICES FOR BOTH 00414000
  450. * VIRTUAL ALL REQUEST AND SPECIFIC CLASS REQUEST. QRYVSCAN IS 00415000
  451. * THE ENTRY FOR SPECIFIC CLASS REQUEST. IF ALL HAS BEEN 00416000
  452. * REQUESTED, WOULD HAVE COME HERE VIA LABEL QRYVALL. 00417000
  453. * 00418000
  454. SPACE 2 00419000
  455. QRYSCAN EQU * QUERY BY DEVICE CLASS @VM08820 00420000
  456. TM QRYBITS,RANGE RANGE PROCESSING? @V407466 00421000
  457. BZ GETSTOR NO, ACQUIRE MSG BUFFER STORAGE @V407466 00421100
  458. TM QRYBITS,PASS1 FIRST PASS @V407466 00421200
  459. BO SKIPSTOR NO, STORAGE ALREADY ACQUIRED @V407466 00421300
  460. OI QRYBITS,PASS1 INDICATE NOT FIRST PASS @V407466 00421400
  461. GETSTOR LA R0,15(0) GET 15 DBL-WD WORK BUFFER @V407466 00421500
  462. CALL DMKFREE GET CORE FOR REGISTER SAVE 00422000
  463. LR R9,R1 POINT R9 TO GOTTEN CORE 00423000
  464. USING REGSAVE,R9 00424000
  465. SKIPSTOR XC REGSAVE(32),REGSAVE ZERO FIRST PART OF MSG BUFF @V407466 00424100
  466. CLI SAVEWRK1+1,X'00' IS A FULL SCAN REQUIRED ? @VM08820 00425000
  467. BE SRCHAN YES - START WITH CHANNELS @VM08820 00426000
  468. BAL R10,QRYVFMT YES, FORMAT DEVICE LINE @V200930 00427000
  469. TM QRYBITS,RANGE RANGE PROCESSING @V407466 00428000
  470. BZ QRYVFRET NO, FRET BUFFER AND EXIT @V407466 00428100
  471. USING REGSAVE,R9 ESTABLISH ADDRESSABILITY @V407466 00428200
  472. NEXTADDR XC REGSAVE(32),REGSAVE CLEAR FIRST PART OF BUFFER @V407466 00428300
  473. L R1,SAVEWRK6 CURRENT ADDRESS @V407466 00428400
  474. LA R1,1(,R1) UP BY ONE @V407466 00428500
  475. CH R1,RADDR2 END OF RANGE? @V407466 00428600
  476. BH QRYVFRET YES, RELEASE STORAGE BUFFER @V407466 00428700
  477. ST R1,SAVEWRK6 SAVE NEW CURRENT ADDRESS @V407466 00428800
  478. B MAXDEV VER NEXT ADDR NOT > MAX VIRT ADDR@V407466 00428900
  479. EJECT 00429000
  480. SRCHAN DS 0H @V200930 00430000
  481. SR R1,R1 ZERO CHANNEL INDEX 00431000
  482. LA R4,2 LOAD INCREMENT REGISTER 00432000
  483. LA R5,30 LOAD END OF INDEX TABLE 00433000
  484. QRYVNCH LH R6,VMCHTBL(R1) LOAD INDEX TO NEXT VIRT CHANNEL 00434000
  485. LTR R6,R6 CHANNEL EXIST ? 00435000
  486. BM QRYVCHI NO, TRY NEXT 00436000
  487. A R6,VMCHSTRT POINT R6 TO VCHBLOK 00437000
  488. USING VCHBLOK,R6 00438000
  489. SR R2,R2 ZERO CU TABLE INDEX 00439000
  490. QRYVNCU LH R7,VCHCUTBL(R2) LOAD INDEX TO NEXT VIRT CU 00440000
  491. LTR R7,R7 DOES IT EXIST ? 00441000
  492. BM QRYVCUI NO TRY NEXT 00442000
  493. A R7,VMCUSTRT LOAD VCUBLOK IN R7 00443000
  494. USING VCUBLOK,R7 00444000
  495. SR R3,R3 ZERODEVICE TABLE INDEX 00445000
  496. QRYVNDV LH R8,VCUDVTBL(R3) LOAD INDEX TO NEXT VDEVBLOK 00446000
  497. LTR R8,R8 DOES DEVICE EXIST ? 00447000
  498. BM QRYVDVI NO TRY NEXT 00448000
  499. A R8,VMDVSTRT POINT R8 TO VDEVBLOK 00449000
  500. USING VDEVBLOK,R8 00450000
  501. TM SAVEWRK1,VIRTALL IS THIS VIRT ALL REQUEST ? @VM08820 00451000
  502. BO QRYVSAVE YES GO FORMAT AND SEND REPLY 00452000
  503. SLR R0,R0 @VM08820 00453000
  504. ICM R0,8,SAVEWRK1 PICK UP DEVICE CLASS @VM08820 00454000
  505. N R0,VDEVTYPC IS THIS THE CORRECT CLASS ? @VM08820 00455000
  506. BZ QRYVDVI NO -- SKIP TO NEXT DEVICE @VM08820 00456000
  507. TM SAVEWRK1,X'01' LOOKING FOR CONSOLE @VA02423 00457000
  508. BZ QRYVSAVE NO, GO ON @VA02423 00458000
  509. CLI VDEVTYPE,TYP3210 YES, IS THIS IT @VA02423 00459000
  510. BNE QRYVDVI NO, THEN KEEP LOOKING @VA02423 00460000
  511. QRYVSAVE STM R1,R8,REGSAVE SAVE INDEX REGISTERS @V200930 00461000
  512. MVI SAVEWRK1+1,X'FF' HAVE FOUND AN ACTIVE UNIT @VM08820 00462000
  513. BAL R10,QRYVFMT GO FORMAT MESSAGE AND SEND REPLY 00463000
  514. LM R1,R8,REGSAVE RESTORE INDEX REGISTERS @V200930 00464000
  515. QRYVDVI BXLE R3,R4,QRYVNDV INCREMENT THRU DEVICES 00465000
  516. QRYVCUI BXLE R2,R4,QRYVNCU INCREMENT THRU CONTROL UNITS 00466000
  517. QRYVCHI BXLE R1,R4,QRYVNCH INCREMENT THRU CHANNELS 00467000
  518. SPACE 00468000
  519. * WHEN FALL THRU HAVE SCANNED ALL DEVICES 00469000
  520. EJECT 00470000
  521. QRYVFRET LA R0,15 BUFFER SIZE @V200930 00471000
  522. LR R1,R9 SET UP R1 FOR FRET 00472000
  523. CALL DMKFRET GIVE BACK CORE 00473000
  524. DROP R6,R7,R8,R9 00474000
  525. SPACE 00475000
  526. CLI SAVEWRK1+1,X'00' WAS A DEVICE FOUND ? @VM08820 00476000
  527. BNE QRYEXIT YES - ALL DONE @VM08820 00477000
  528. TM QRYBITS,RANGE RANGE BEING PROCESSED? @V407466 00477100
  529. BO QRYEXIT YES, ALL DONE @V407466 00477200
  530. MVC SAVEWRK3(16),=C' DO NOT EXIST ' RESPONSE @VM08820 00478000
  531. LA R0,18(0) LENGTH OF FAILURE RESPONSE @VM08820 00479000
  532. LA R1,SAVEWRK2 START FOR MESSAGE OUTPUT @VM08820 00480000
  533. MVC SAVEWRK2(5),DASD MAYBE IT WAS DASD @VM08820 00481000
  534. CLI SAVEWRK1,CLASDASD CORRECT ? @VM08820 00482000
  535. BE QRYWRIT YES -- @VM08820 00483000
  536. MVC SAVEWRK2(5),TAPES MAYBE IT WAS TAPES @VM08820 00484000
  537. CLI SAVEWRK1,CLASTAPE CORRECT ? @VM08820 00485000
  538. BE QRYWRIT YES -- @VM08820 00486000
  539. MVC SAVEWRK2(5),GRAF MAYBE IT WAS GRAF @VM08820 00487000
  540. CLI SAVEWRK1,CLASGRAF CORRECT ? @VM08820 00488000
  541. BE QRYWRIT YES -- @VM08820 00489000
  542. MVC SAVEWRK2(5),SPOOL MAYBE IT WAS UR @VM08820 00490000
  543. CLI SAVEWRK1,CLASURI+CLASURO CORRECT ? @VM08820 00491000
  544. BE QRYWRIT YES -- @VM08820 00492000
  545. MVC SAVEWRK2(5),LINES MAYBE IT WAS LINES @VM08820 00493000
  546. CLI SAVEWRK1,CLASTERM CORRECT ? @VM08820 00494000
  547. BE QRYWRIT YES -- @VM08820 00495000
  548. MVC SAVEWRK2(4),CONS MAYBE IT WAS CONSOLE @VM08820 00496000
  549. MVI SAVEWRK3,X'40' . . . @VM08820 00497000
  550. CLI SAVEWRK1,CLASTERM+X'01' CORRECT ? @VM08820 00498000
  551. BE QRYWRIT YES -- @VM08820 00499000
  552. MVC SAVEWRK2(4),=C'DEVS' MUST HAVE BEEN 'ALL' @VM08820 00500000
  553. B QRYWRIT . . . @VM08820 00501000
  554. EJECT 00502000
  555. * 00503000
  556. * THE FOLLOWING IS THE SUBROUTINE TO FORMAT THE MESSAGES 00504000
  557. * ACCORDING TO THE CLASS OF THE DEVICE 00505000
  558. * 00506000
  559. * 00507000
  560. SPACE 2 00508000
  561. USING VCHBLOK,R6 00509000
  562. USING VCUBLOK,R7 00510000
  563. USING VDEVBLOK,R8 00511000
  564. USING REGSAVE,R9 @V200930 00512000
  565. QRYVFMT MVC DATAREC(8),BLANKS CLEAR @V200930 00513000
  566. MVC DATAREC+1(DATARECL-1),DATAREC @V200930 00514000
  567. LH R1,VDEVADD LOAD DEVICE ADDRESS 00515000
  568. LH R0,VCUADD LOAD CONTOL UNIT ADDRESS 00516000
  569. OR R1,R0 COMBINE CU AND DEV ADDRESSES 00517000
  570. AH R1,VCHADD COMPLETE ADDRESS 00518000
  571. CALL DMKCVTBH CONVERT TO PRINT FORM 00519000
  572. STCM R1,7,DATAREC+5 DEV ADDR @V200930 00520000
  573. CALL DMKSCNVN GET DEVICE NAME IN EBCDIC 00521000
  574. ST R1,DATAREC MSG HEADER @V200930 00522000
  575. TM VDEVSTAT,VDEVDED IS THE DEVICE DEDICATED ? 00523000
  576. BO DEDICATE YES - 'DEV CCU ON DEV CCU' 00524000
  577. TM VDEVTYPC,CLASURI+CLASURO UNIT REC. DEVICE 00525000
  578. BNZ QRYVURIO YES,, TAKE THE BR. 00526000
  579. CLI VDEVTYPC,CLASDASD IS IT A DASD 00527000
  580. BE QRYVDASD YES 00528000
  581. CLI VDEVTYPC,CLASTERM IS IT A TERMINAL ? 00529000
  582. BE QRYVTERM YES 00530000
  583. B QRYVSPEC 00531000
  584. SPACE 2 00532000
  585. QRYVURIO TM VDEVTYPC,CLASURO IS IT OUTPUT DEVICE ?? @V200930 00533000
  586. BO QRYVURI YES, SKIP TIMER TEST @V200930 00534000
  587. TM VDEVTYPE,TYPTIMER IS IT PSEUDO TIMER ? 00535000
  588. BZ QRYVURI NO,, BRANCH 00536000
  589. MVC DATAREC+9(12),=C'PSEUDO TIMER' @V200930 00537000
  590. LA R0,21 GET LNG ON LINE 00538000
  591. B WRTVIRT PRINT IT 00539000
  592. EJECT 00540000
  593. QRYVURI MVC DATAREC+9(2),=C'CL' @V200930 00541000
  594. MVC DATAREC+12(1),VDEVCLAS SET CLASS @V200930 00542000
  595. MVC DATAREC+15(6),=CL6'NOCONT' @V200930 00543000
  596. TM VDEVSFLG,VDEVCONT CONTINUOUS SPOOLING ?? 00544000
  597. BZ NOCONT NO,, BRANCH 00545000
  598. MVC DATAREC+15(2),BLANKS @V200930 00546000
  599. NOCONT MVC DATAREC+22(6),=CL6'NOHOLD' @V200930 00547000
  600. TM VDEVSFLG,VDEVHOLD IS UR BEING BEING HELD ?? 00548000
  601. BZ NOHOLD IF NOT,, BRANCH 00549000
  602. MVC DATAREC+22(2),BLANKS @V200930 00550000
  603. NOHOLD MVC DATAREC+37(8),=C'NOTREADY' FLAG NOT READY @V200930 00551000
  604. TM VDEVSTAT,VDEVNRDY TST IF NOT READY @V200930 00552000
  605. BO NOTRDY YES, OK @V200930 00553000
  606. MVC DATAREC+37(3),BLANKS MARK READY @V200930 00554000
  607. NOTRDY DS 0H @V200930 00555000
  608. TM VDEVTYPC,CLASURI READER ????? 00556000
  609. BO NOHOLDRD YES -- BYPASS COPIES-- 00557000
  610. LH R1,VDEVCOPY PICK UP COPIES ASKED FOR 00558000
  611. CALL DMKCVTBD CONVERT 00559000
  612. STCM R1,3,DATAREC+34 SET COPIES @V200930 00560000
  613. MVC DATAREC+29(4),=C'COPY' MOVE IN LITERAL @VA09683 00561010
  614. L R1,VDEVEXTN XBLOK ADDRESSIBILITY @VMI0058 00561100
  615. USING VSPXBLOK,R1 ADDRESSIBILITY @VMI0058 00561200
  616. TM VSPXFLG1,VSPXCPYF SPEC. COPY FLAG ON? @VMI0058 00561300
  617. BZ NOTON XFER IF NOT @VMI0058 00561400
  618. MVC DATAREC+29(5),=C'CPY *' SQUEEZE IN INLINE DUP@VA09683 00561510
  619. DROP R1 NO LONGER NEEDED @VMI0058 00561600
  620. NOTON LA R0,50 DATA SIZE @VMI0058 00561700
  621. LA R1,DATAREC DATA AREA POINTER @V407466 00562100
  622. TM QRYBITS,RANGE RANGE PROCESSING? @V407466 00562200
  623. BZ STACKIT2 NO, DO NOT ADJUST DATA POINTER @V407466 00562300
  624. LA R1,DATAREC-1 ADJUST FOR SPECIAL FLAG @V407466 00562400
  625. STACKIT2 BAL R3,STACK PLACE MSG BUFFER ON STACK @V407466 00562500
  626. MVC DATAREC(4),BLANKS FORMAT NEXT LINE @V200930 00565000
  627. MVI DATAREC+9,C' ' CLEAR AREA @V200930 00566000
  628. MVC DATAREC+10(50),DATAREC+9 .. @V200930 00567000
  629. MVC DATAREC+9(3),=C'FOR' SET FOR @V200930 00568000
  630. MVC DATAREC+13(8),VMUSER SET USERID @V200930 00569000
  631. L R1,VDEVEXTN XBLOK ADDRESS @V293598 00570000
  632. TM VDEVSFLG,VDEVXFER+VDEVFOR IS IT TO OR FOR @V200930 00571000
  633. BZ NOTXFER NO, CONT @V200930 00572000
  634. MVC DATAREC+13(8),VSPXXUSR-VSPXBLOK(R1) SET USERID @V293598 00573000
  635. TM VDEVSFLG,VDEVFOR IS IT FOR USERID ?? @V200930 00574000
  636. BO NOTXFER YES, CONT @V200930 00575000
  637. MVC DATAREC+9(3),=C'TO ' SET TO USERID @V200930 00576000
  638. NOTXFER MVC DATAREC+22(4),=C'DIST' SET DIST @V200930 00577000
  639. MVC DATAREC+27(8),VMDIST ASSUME 'FOR' OFF @V293598 00578000
  640. TM VDEVSFLG,VDEVFOR IS IT OFF ?? @V293598 00579000
  641. BZ FLCNT IF YES, BRANCH @V60B9BA 00580000
  642. MVC DATAREC+27(8),VSPXDIST-VSPXBLOK(R1) MOVE IN @VA10878 00581010
  643. * DIST CODE 00581020
  644. FLCNT TM VDEVTYPE,TYPPRT PRINTER ? @V60B9BA 00581050
  645. BZ SETWRT XFER IF NOT @V60B9BA 00581100
  646. MVC DATAREC+37(6),=C'FLASHC' FLASH COUNT FOR 3800 @V60B9BA 00581150
  647. LR R2,R1 NEW POINTER FOR VSPXBLOK @V60B9BA 00581200
  648. USING VSPXBLOK,R2 ADDRESSIBILITY @V60B9BA 00581250
  649. SR R1,R1 GET THE FLASH COUNT @V60B9BA 00581300
  650. IC R1,VSPXFLSH ... @V60B9BA 00581350
  651. CALL DMKCVTBD CONVERT TO EBCDIC @V60B9BA 00581400
  652. STCM R1,B'0011',DATAREC+44 PUT IT IN DATA AREA @V60B9BA 00581450
  653. LA R0,55 DATA SIZE @V60B9BA 00581500
  654. LA R1,DATAREC DATA AREA POINTER @V60B9BA 00581550
  655. TM QRYBITS,RANGE RANGE PROCESSING ? @V60B9BA 00581600
  656. BZ STACKIT3 XFER IF NOT @V60B9BA 00581650
  657. LA R1,DATAREC-1 ADJUST FOR SPECIAL FLAG @V60B9BA 00581700
  658. STACKIT3 BAL R3,STACK PLACE MSG BUFFER ON STACK @V60B9BA 00581750
  659. L R2,VDEVEXTN RETORE VSPXBLOK ADDRESS @V60B9BA 00581800
  660. MVI DATAREC+9,C' ' CLEAR THE MESSAGE AREA @V60B9BA 00581850
  661. MVC DATAREC+10(60),DATAREC+9 .... @V60B9BA 00581900
  662. MVC DATAREC+9(5),=C'FLASH' FLASH NAME @V60B9BA 00581950
  663. MVC DATAREC+15(4),VSPXOVLY ... @V60B9BA 00582000
  664. OC DATAREC+15(4),BLANKS MAKE IT PRINTABLE @V60B9BA 00582050
  665. MVC DATAREC+21(4),=C'CHAR' CHAR VALUE @V60B9BA 00582100
  666. MVC DATAREC+26(4),VSPXCHAR ... @V60B9BA 00582150
  667. OC DATAREC+26(4),BLANKS MAKE IT PRINTABLE @V60B9BA 00582200
  668. MVC DATAREC+32(4),=C'MDFY' MODIFY VALUE @V60B9BA 00582250
  669. MVC DATAREC+37(4),VSPXCMOD ... @V60B9BA 00582300
  670. OC DATAREC+37(4),BLANKS MAKE IT PRINTABLE @V60B9BA 00582350
  671. MVC DATAREC+43(3),=C'FCB' FCB VALUE @V60B9BA 00582400
  672. MVC DATAREC+47(4),VSPXFCB ... @V60B9BA 00582450
  673. OC DATAREC+47(4),BLANKS MAKE IT PRINTABLE @V60B9BA 00582500
  674. DROP R2 NO LONGER NEEDED @V60B9BA 00582550
  675. LA R0,60 DATA SIZE @V60B9BA 00582600
  676. B WRTVIRT STACK LINE @V60B9BA 00582650
  677. NOHOLDRD MVC DATAREC+29(5),=C'NOEOF' @V200930 00583000
  678. TM VDEVSFLG,VDEVEOF INDICATE EOF VIA UE ?? 00584000
  679. BZ SETWRT WRITE IT @V200930 00585000
  680. MVC DATAREC+29(2),BLANKS @V200930 00586000
  681. SETWRT LA R0,45 SIZE @V200930 00587000
  682. B WRTVIRT NOW, PRINT IT 00588000
  683. EJECT 00589000
  684. QRYVDASD EQU * VIRTUAL DASD 00590000
  685. MVC DATAREC+9(4),=C'2305' @V200930 00591000
  686. TM VDEVTYPE,TYP2305 IS IT A 2305 00592000
  687. BO QRYVMINI IF YES, BRANCH 00593000
  688. MVC DATAREC+9(4),=C'3350' @V304498 00594000
  689. CLI VDEVTYPE,TYP3350 IS IT A 3350 ? @V304498 00595000
  690. BE QRYVMINI IF YES BRANCH @V304498 00596000
  691. MVC DATAREC+9(4),=C'3380' HRC011DK 00596200
  692. CLI VDEVTYPE,TYP3380 IS IT A 3380 ? HRC011DK 00596400
  693. BE QRYVMINI IF YES BRANCH HRC011DK 00596600
  694. MVC DATAREC+9(4),=C'3330' @V200930 00597000
  695. TM VDEVTYPE,TYP3330 IS IT ? 00598000
  696. BO QRYVMINI YEP, BRANCH 00599000
  697. MVC DATAREC+9(4),=C'3340' @V2A2029 00600000
  698. TM VDEVTYPE,TYP3340 3340 DEVICE ? @V2A2029 00601000
  699. BO QRYVMINI IF YES BRANCH @V2A2029 00602000
  700. MVC DATAREC+9(4),=C'2314' @V200930 00603000
  701. TM VDEVTYPE,TYP2314 IS IT A 2314 ? 00604000
  702. BO QRYVMINI IF YES, BRANCH 00605000
  703. TM VDEVTYPE,TYP2311 MAYBE A 2311. 00606000
  704. BZ QRYUNSP TREAT AS A SPECIAL DEVICE. @V304498 00607000
  705. TM VDEVFLAG,VDEV231T SPECIAL TYPE 2311 ? @V304498 00608000
  706. BO QRY231T YES, INSERT "T" @V304498 00609000
  707. TM VDEVFLAG,VDEV231B SPECIAL TYPE 2311 ? @V304498 00610000
  708. BZ QRYUNSP TREAT AS A SPECIAL DEVICE @V304498 00611000
  709. MVI DATAREC+12,C'B' INSERT "B" IN DEVTYPE FIELD @V304498 00612000
  710. B QRYVMINI CHECK IF IT'S A "T-DISK" @V304498 00613000
  711. QRY231T MVI DATAREC+12,C'T' INSERT "T" IN DEVTYPE FIELD @V304498 00614000
  712. B QRYVMINI CHECK IF IT'S A "T-DISK" @V304498 00615000
  713. QRYUNSP EQU * @V304498 00616000
  714. MVC DATAREC+9(4),=C'UNSP' @V200930 00617000
  715. QRYVMINI LH R1,VDEVBND SIZE OF MINIDISK(CYL) @VA10879 00618100
  716. CALL DMKCVTBD CONVERT 00622000
  717. STCM R1,15,DATAREC+25 HRC011DK 00623040
  718. MVC DATAREC+14(6),=C'(TEMP)' @VA10879 00623100
  719. TM VDEVFLAG,VDEVTDSK MINI-DISK? @VA10879 00623200
  720. CNOP 0,4 00623301
  721. L R2,VDEVREAL LOAD POINTER TO RDEVBLOK 00624000
  722. USING RDEVBLOK,R2 ADDRESSABILITY 00625000
  723. MVC DATAREC+14(6),RDEVSER @V200930 00626000
  724. DROP R2 00627000
  725. CHKWRT1 EQU * @VA10879 00627100
  726. MVC DATAREC+21(3),=C'R/O' @V200930 00628000
  727. MVC DATAREC+30(3),=C'CYL' HRC011DK 00629590
  728. LA R0,33 GET LNG LEN. HRC011DK 00630180
  729. TM VDEVFLAG,VDEVRDO IS IT R/O MODE ? 00631000
  730. BO WRTVIRT IF YES, LINE IS COMPLETE 00632000
  731. MVI DATAREC+23,C'W' @V200930 00633000
  732. B WRTVIRT NOW PRINT THIS LINE 00634000
  733. EJECT 00635000
  734. QRYVTERM EQU * VIRTUAL TP-TYPE LINE 00636000
  735. CLI VDEVTYPE,TYP3210 IS IT A CONSOLE DEVICE TYPE ? 00637000
  736. BNE NOTERM IF NOT ITS A VIRTUAL 270X LINE . 00638000
  737. TM VMOSTAT,VMDISC IS CONSOLE DISC? @VA01742 00639000
  738. BO USERDISC YES....BRANCH @VA01742 00640000
  739. L R2,VMTERM MUST BE THE CONSOLE FOR THIS VIRT USER. 00641000
  740. CLI RDEVTYPC-RDEVBLOK(R2),CLASTERM IS CLASS TERMINAL 00642000
  741. BNE *+12 NO, BYPASS TEST FOR BISYNC LINE 00643000
  742. CLI RDEVTYPE-RDEVBLOK(R2),TYPBSC IS THIS A LINE 00644000
  743. BE *+12 YES, GET RESOURCE ID. 00645000
  744. CLI RDEVTYPC-RDEVBLOK(R2),CLASSPEC 370X TERM ? @V200820 00646000
  745. BNE FINDRTRM NO -- SAME AS DEDICATED@V200820 00647000
  746. LH R1,VMTRMID RESOURCE IDENTIFICATION FOR 3705 @V200820 00648000
  747. CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V200820 00649000
  748. MVC DATAREC+9(3),=C'ON ' INFORMATION WORD @V200820 00650000
  749. MVC DATAREC+12(4),=C'DEV ' 3705 TERM IS A 'DEV' @V200820 00651000
  750. ST R1,DATAREC+16 STORE FOUR-CHAR R.I.D. @V200820 00652000
  751. B CNTRAIL GO CHECK FOR 'TERM', 'STOP' @V200820 00653000
  752. NOTERM LA R0,17 SET LINE LNG 00654000
  753. MVC DATAREC+9(7),=C'ENABLED' @V200930 00655000
  754. TM VDEVFLAG,VDEVENAB WAS IT ? 00656000
  755. BO WRTVIRT YES, GO PRINT IT 00657000
  756. MVC DATAREC+9(8),=C'DISABLED' @V200930 00658000
  757. B WRTVIRT 00659000
  758. SPACE 00660000
  759. USERDISC MVC DATAREC+9(12),=C'DISCONNECTED' @VA09461 00661100
  760. B CNTRAIL GO CHECK SPOOLING OPTIONS @VA01742 00662000
  761. SPACE 00663000
  762. QRYVSPEC EQU * SPECIAL OR UNKNOWN 00664000
  763. MVC DATAREC+9(4),=C'UNSP' @V200930 00665000
  764. LA R0,14 LENGTH 00666000
  765. CLC VDEVTYPC(2),=AL1(CLASSPEC,TYPCTCA) CTCA ? 00667000
  766. BE QRYVNR YES, SEE IF READY @V200930 00668000
  767. CLI VDEVTYPC,CLASGRAF IS IT GRAF ?? @V200930 00669000
  768. BNE WRTVIRT NO, LET GO @V200930 00670000
  769. QRYVNR MVC DATAREC+9(9),=C'NOT READY' @V200930 00671000
  770. LA R0,18 SIZE @V200930 00672000
  771. TM VDEVSTAT,VDEVNRDY IS THE CTCA COUPLED ? 00675000
  772. BO WRTVIRT NO - MSG AS IS 00676000
  773. ICM R4,15,VDEVREAL LOAD AND TEST CHXBLOK POINTER @VM08569 00677000
  774. BZ WRTVIRT NOT COUPLED AFTER ALL @VM08569 00678000
  775. MVC DATAREC+9(9),=C'COUPLE TO' @V200930 00679000
  776. USING CHXBLOK,R4 00680000
  777. L R2,CHXOTHR VMBLOK OF Y-SIDE USER 00681000
  778. LH R1,CHXYADD VIRT ADDR ON Y-SIDE 00682000
  779. DROP R4 00683000
  780. MVC DATAREC+19(8),VMUSER-VMBLOK(R2) @V200930 00684000
  781. CALL DMKCVTBH CONVERT VADDR 00685000
  782. STCM R1,7,DATAREC+28 @V200930 00686000
  783. LA R0,32 00687000
  784. B WRTVIRT 00688000
  785. EJECT 00689000
  786. DEDICATE L R2,VDEVREAL POINTER TO RDEVBLOK 00690000
  787. USING RDEVBLOK,R2 00691000
  788. FINDRTRM LR R3,R8 SAVE VDEV ADD @VA01081 00692000
  789. LR R8,R2 AND POINT TO RDEV ADD @VA01081 00693000
  790. TM RDEVADD-RDEVBLOK(R8),RDEVLDEV Is this an LDEV? HRC065DK 00693020
  791. BZ LDEV010 No HRC065DK 00693040
  792. LH R1,RDEVADD-RDEVBLOK(,R8) Get the LDEV address HRC065DK 00693060
  793. N R1,F4095 Keep only the dev num HRC065DK 00693080
  794. CALL DMKCVTBH Make it displayable HRC065DK 00693100
  795. STCM R1,7,DATAREC+18 Put dev addr in message HRC065DK 00693120
  796. MVI DATAREC+17,C'L' Move in LDEV indicator HRC065DK 00693140
  797. B LDEV020 Go display msg HRC065DK 00693160
  798. * 00693180
  799. LDEV010 EQU * HRC065DK 00693200
  800. CALL DMKSCNRD FIND THE REAL ADD CCU @VA01081 00694000
  801. CALL DMKCVTBH CONVERT TO PRINT FORM 00695000
  802. STCM R1,7,DATAREC+17 @V200930 00696000
  803. * 00696100
  804. LDEV020 EQU * HRC065DK 00696200
  805. MVC DATAREC+9(3),=C'ON ' @V200930 00697000
  806. CALL DMKSCNRN GET REAL DEVICE NAME @V200930 00698000
  807. STCM R1,15,DATAREC+12 SET DEVICE NAME @V200930 00699000
  808. LR R8,R3 RESTORE VDEVBLOK ADDRESS @V200930 00700000
  809. CLI VDEVTYPE,TYP3210 IS IT A CONSOLE ?? @V200930 00701000
  810. BNE CWRT NO, DEDICATED DONE @V200930 00702000
  811. CNTRAIL EQU * CHECK FOR CONSOLE SPOOLING OPTION@V200820 00703000
  812. MVC DATAREC+22(6),=C'NOTERM' SET NOTERM @V200930 00704000
  813. TM VDEVSFLG,VDEVTERM OUTPUT TO TERM AND SPOOLING ??@V200930 00705000
  814. BZ CSTRT NOTERM IS CORRECT @V200930 00706000
  815. MVC DATAREC+22(2),BLANKS MARK TERM @V200930 00707000
  816. CSTRT MVC DATAREC+29(4),=C'STOP' MARK NO SPOOLING @V200930 00708000
  817. TM VDEVFLAG,VDEVCSPL IS CONSOLE SPOOLING ?? @V200930 00709000
  818. BZ CWRT NO, CONT @V200930 00710000
  819. MVC DATAREC+29(5),=C'START' MARK START @V200930 00711000
  820. CWRT LA R0,35 SIZE @V200930 00712000
  821. TM VDEVSTAT,VDEVDED IS IT A DEDICATED DEVICE ?? @V200930 00713000
  822. BO WRTVIRT YES, WRITE AND RETURN @V200930 00714000
  823. LA R1,DATAREC DATA AREA @V200930 00715000
  824. TM QRYBITS,RANGE RANGE PROCESSING? @V407466 00716000
  825. BZ CWRT2 NO, SEE IF DEDICATED DEVICE @V407466 00716100
  826. LA R1,DATAREC-1 ADJUST MSG BUFFER FOR RANGE FLAG @V407466 00716200
  827. CWRT2 BAL R3,STACK PLACE MSG BUFFER ON STACK @V407466 00716300
  828. MVC DATAREC(4),BLANKS FORMAT NEXT LINE @V200930 00717000
  829. MVI DATAREC+9,C' ' CLEAR PART OF BUFFER @V200930 00718000
  830. MVC DATAREC+10(40),DATAREC+9 ... @V200930 00719000
  831. B QRYVURI NEXT LINE FOR SPOOLING DATA @V200930 00720000
  832. WRTVIRT LA R1,DATAREC SET DATA AREA @V200930 00721000
  833. TM QRYBITS,RANGE RANGE BEING PROCESSED? @V407466 00722000
  834. BZ WRTVIRT2 NO, DO NOT READJUST PTR @V407466 00722100
  835. LA R1,DATAREC-1 MINUS 1 @V407466 00722200
  836. WRTVIRT2 BAL R3,STACK PLACE BUFFER ON STACK @V407466 00722300
  837. BR R10 RETURN @V200930 00723000
  838. DROP R9 @V200930 00724000
  839. EJECT 00725000
  840. * ROUTINE TO STACK OUTPUT LINES ON VMBLOK 00726000
  841. * THE LINES WILL BE PRINTED BY DMKCFM ON RETURN 00727000
  842. * 00728000
  843. STACK LR R4,R0 GET SIZE OF DATA @V200930 00729000
  844. LR R5,R1 SET DATA ADDRESS @V200930 00730000
  845. LA R0,7(R4) ROUND UP TO DOUBLE WORD @V200930 00731000
  846. SRL R0,3 GET SIZE IN DOUBLE WORDS @V200930 00732000
  847. A R0,F1 ONE MORE FOR CHAINING @V200930 00733000
  848. CALL DMKFREE GET BUFFER @V200930 00734000
  849. MVI 0(R1),BIN0 ZERO ERROR INDICATOR @V407466 00734100
  850. STH R4,4(R1) SAVE LINE SIZE @V200930 00735000
  851. STH R0,6(R1) SAVE BUFFER SIZE @V200930 00736000
  852. BCTR R4,R0 DECREMENT FOR EXECUTE @V200930 00737000
  853. TM QRYBITS,RANGE RANGE PROCESSING @V407466 00738000
  854. BZ EXECUTE NO, MOVE MSG TO STACK BUFFER @V407466 00738050
  855. TM 0(R5),QRYERR ERROR MSG BEING STACKED? @V407466 00738100
  856. LA R5,1(,R5) GO PAST INDICATOR @V407466 00738150
  857. BO EXECUTE2 YES, IDENTIFY AS ERROR MESSAGE @V407466 00738200
  858. EXECUTE EX R4,MVCSTK MOVE DATA TO STACK BUFFER @V407466 00738250
  859. CLR0 SR R0,R0 CLEAR R0 @V407466 00738300
  860. STCM R0,B'0111',1(R1) CLEAR PTR @V407466 00738350
  861. LA R2,VMSTKO GET OUTPUT STACK POINTER @V200930 00741000
  862. STKLOOP SLR R4,R4 CLEAR R4 @V407466 00742000
  863. ICM R4,B'0111',1(R2) GET PTR TO STACK BUFFER @V407466 00742100
  864. LTR R4,R4 TEST FOR END OF CHAIN @V200930 00743000
  865. BZ CHAIN FOUND END, CHAIN THIS BUFFER @V200930 00744000
  866. LR R2,R4 POINT TO THIS BUFFER @V200930 00745000
  867. B STKLOOP LOOP TO FIND END @V200930 00746000
  868. CHAIN STCM R1,B'0111',1(R2) CHAIN AT END @V407466 00747000
  869. BR R3 RETURN @V200930 00748000
  870. * 00749000
  871. MVCSTK MVC 8(*-*,R1),0(R5) EXEC FOR STACK BUFFER MOVE @V407466 00750050
  872. SPACE 00750100
  873. EXECUTE2 EQU * @V407466 00750150
  874. MVI 0(R1),QRYERR INDICATE ERROR IN STACK BUFFER @V407466 00750200
  875. EX R4,MVCSTK MOVE MSG TO BUFFER @V407466 00750250
  876. LR R2,R1 SAVE R1 TEMPORARILY @V407466 00750300
  877. LA R0,ERRSZE SIZE OF WORK AREA IN DWDS @V407466 00750350
  878. LR R1,R5 MSG AREA ADDRESS TO R1 FOR 'FRET'@V407466 00750400
  879. BCTR R1,0 DECREM FOR INDICATOR BYTE @V407466 00750450
  880. CALL DMKFRET RELEASE THE AREA @V407466 00750500
  881. LR R1,R2 RESTORE R1 @V407466 00750550
  882. B CLR0 BR TO ABOVE ROUTINE @V407466 00750600
  883. SPACE 3 00751000
  884. QRYTABL DS 0H DECODING TABLE FOR QUERY VIRTUAL @VM08820 00752000
  885. STORAGE DC C'STORAGE ',AL1(3,36) QUERY VIRTUAL STORAGE @VM08820 00753000
  886. DASD DC C'DASD ',AL1(1,20) QUERY VIRTUAL DASD @VM08820 00754000
  887. TAPES DC C'TAPES ',AL1(1,24) QUERY VIRTUAL TAPES @VM08820 00755000
  888. LINES DC C'LINES ',AL1(4,28) QUERY VIRTUAL LINES @VM08820 00756000
  889. SPOOL DC C'UR ',AL1(1,32) QUERY VIRTUAL UR @VM08820 00757000
  890. GRAF DC C'GRAF ',AL1(1,44) QUERY VIRTUAL GRAF @VM08820 00758000
  891. CONS DC C'CONSOLE ',AL1(2,48) QUERY VIRTUAL CONSOLE @VM08820 00759000
  892. CHANNELS DC C'CHANNELS',AL1(3,52) QUERY VIRTUAL CHANNELS @VA01771 00760000
  893. QRYTEND DC C'ALL ',AL1(2,40) QUERY VIRTUAL ALL @VM08820 00761000
  894. QRYTLEN EQU *-QRYTEND ENTRY LENGTH @VM08820 00762000
  895. SPACE 2 00763000
  896. * EQUATES USED IN SAVEWRK1: 00764000
  897. VIRTALL EQU X'02' QUERY VIRTUAL ALL @VM08820 00765000
  898. * EQU X'80' RESERVED 00766000
  899. * EQU X'40' RESERVED 00766800
  900. * EQU X'20' RESERVED 00767600
  901. * EQU X'10' RESERVED 00768400
  902. * EQU X'08' RESERVED 00769200
  903. * EQU X'04' RESERVED 00770000
  904. * EQU X'02' RESERVED 00770800
  905. * EQU X'01' RESERVED 00771600
  906. SPACE 00773100
  907. * EQUATES USED IN SAVEWRK1+2 00773200
  908. RANGE EQU X'80' RANGE PROCESSING @V407466 00773300
  909. PASS1 EQU X'40' FIRST PASS SWITCH @V407466 00773400
  910. * EQU X'20' RESERVED 00773450
  911. SPACE 00773500
  912. * MISCELLANEOUS EQUATES 00773600
  913. QRYERR EQU X'80' ERROR MSG INDICATOR @V407466 00773700
  914. BLANK EQU X'40' DELIMITERS @V407466 00773800
  915. BIN0 EQU X'00' RESET INDICATOR @V407466 00773900
  916. EJECT 00774000
  917. CQG020 LA R2,20 ERROR CODE 00988000
  918. B NOVAR ... 00989000
  919. CQG022B LA R0,15 STORAGE SIZE FOR FRET @VA08527 00989250
  920. LR R1,R9 SET ADDRESS TO FOR FRET @VA08527 00989500
  921. CALL DMKFRET RETURN STORAGE @VA08527 00989750
  922. SPACE 00990000
  923. CQG022 LA R2,22 ERROR CODE 00991000
  924. B NOVAR ... 00992000
  925. CQG022A TM QRYBITS,RANGE RANGE PROCESSING @V407466 00992020
  926. BZ CQG022B NO, REGULAR CQG022 MESSAGE @VA08527 00992040
  927. LA R2,22 ERROR MSG = 022E @V407466 00992060
  928. ST R2,SAVER2 SAVE RETURN CODE = 22 @V407466 00992080
  929. B COMERR BR TO COMMOM ERROR PROCESSING @V407466 00992100
  930. CQG040A TM QRYBITS,RANGE RANGE PROCESSING? @V407466 00992120
  931. BZ CQG040 NO - NO SPECIAL TREATMENT @V407466 00992140
  932. LA R2,40 ERROR RETURN = 40 @V407466 00992160
  933. ST R2,SAVER2 STORE ERROR RETURN = 40 @V407466 00992180
  934. COMERR LA R0,ERRSZE ACQUIRE BUFFER FOR MSG @V407466 00992200
  935. CALL DMKFREE GO GET IT @V407466 00992220
  936. USING MSGERR,R1 ADDRESSABILITY @V407466 00992240
  937. XC MSGERR(ERRSZE3),MSGERR CLEAR AREA @V407466 00992260
  938. C R2,=F'22' ERROR MESSAGE = 022E?? @V407466 00992280
  939. BH ERROR40 NO, MUST BE 040E @V407466 00992300
  940. MVC ERRCODE(L'ERRCODE+L'ERRSEV),=CL4'022E' MSG CODE @V407466 00992320
  941. MVC ERRTEXT(L'MSG22),MSG22 SUBST. APPROP. MSG @V407466 00992340
  942. LA R0,ERRSZE2+L'MSG22 MESSAGE LENGTH @V407466 00992360
  943. COMERR2 MVI ERRIND,QRYERR INDICATE ERROR MESSAGE @V407466 00992380
  944. MVC ERRHDR(L'ERRHDR),=CL6'DMKCQG' HDR PORTION @V407466 00992400
  945. LA R1,MSGERR POINTER TO ERROR MSG @V407466 00992420
  946. BAL R3,STACK PLACE ERROR MSG ON STACK @V407466 00992440
  947. L R1,SAVER2 RESTORE ERROR CODE @VA09138 00992445
  948. C R1,=F'22' IS IT A '022E'? @VA09138 00992450
  949. BE QRYVFRET YES,GET OUT @VA09138 00992455
  950. B NEXTADDR SEE IF MORE ADDRS TO PROCESS @V407466 00992460
  951. ERROR40 MVC ERRTEXT(L'MSG40),MSG40 SUBST. MSG @V407466 00992480
  952. LR R2,R1 SAVE MSG AREA ADDR FOR MINUTE @V407466 00992500
  953. L R1,SAVEWRK6 ADDRESS TO R1 @V407466 00992520
  954. CALL DMKCVTBH CONVERT ADDR TO HEX @V407466 00992540
  955. USING MSGERR,R2 ADDRESSABILITY @V407466 00992560
  956. STCM R1,B'0111',ERRTEXT+4 PLACE IN ERROR @V407466 00992580
  957. MVC ERRCODE(L'ERRCODE+L'ERRSEV),=CL4'040E' CODE+SEV @V407466 00992600
  958. LR R1,R2 RESTORE MSG AREA ADDRESS @V407466 00992620
  959. DROP R2 @V407466 00992640
  960. LA R0,ERRSZE2+L'MSG40 MSG40 LENGTH @V407466 00992660
  961. B COMERR2 CONTINUE COMMON CODE @V407466 00992680
  962. DROP R1 @V407466 00992700
  963. SPACE 00993000
  964. CQG026 LA R2,26 ERROR CODE @V200930 00994000
  965. B NOVAR .... @V200930 00995000
  966. SPACE 00999000
  967. CQG040 LA R2,40 ERROR CODE 01000000
  968. LA R0,15 BUFFER SIZE @VA08527 01000250
  969. LR R1,R9 SET UP R1 FOR FRET @VA08527 01000500
  970. CALL DMKFRET GIVE BACK CORE @VA08527 01000750
  971. LM R0,R1,SAVEWRK8 LOAD ADDRESS AND LENGTH OF BAD USERID 01001000
  972. B CALLERM ... 01002000
  973. SPACE 01003000
  974. SPACE 01007000
  975. CQG045 LA R2,45 ERROR CODE 01008000
  976. LM R0,R1,SAVER0 RESTORE ARGUMENT LENGTH AND ADDRESS 01009000
  977. B CALLERM .... 01010000
  978. SPACE 01011000
  979. NOVAR SR R1,R1 INDICATE NO VARIABLE TO MESSAGE ROTUINE 01012000
  980. CALLERM ICM R0,14,MODID+3 INSERT MODULE IDENTITY 01013000
  981. CALL DMKERMSG GO SEND MESSAGE WITH NO RETURN 01014000
  982. * 01015000
  983. * MESSAGE MODULE WILL RETURN DIRECTLY TO DMKCFM 01016000
  984. * 01017000
  985. SPACE 01017100
  986. MSG22 DC CL24'VADDR MISSING OR INVALID' @V407466 01017200
  987. MSG40 DC CL22'DEV DOES NOT EXIST' @V407466 01017300
  988. SPACE 01017400
  989. EJECT 01018000
  990. LTORG 01019000
  991. SPACE 4 01020000
  992. REGSAVE DSECT 01021000
  993. REG1 DS 1F 01022000
  994. REG2 DS 1F 01023000
  995. REG3 DS 1F 01024000
  996. REG4 DS 1F 01025000
  997. REG5 DS 1F 01026000
  998. REG6 DS 1F 01027000
  999. REG7 DS 1F 01028000
  1000. REG8 DS 1F 01029000
  1001. SPACE 2 01030000
  1002. DATAREC DS 0C @V200930 01031000
  1003. DATARECD DS 0C @V200930 01032000
  1004. XUSER DS CL8 @V200930 01033000
  1005. DS C @V200930 01034000
  1006. XFILID DS CL4 @V200930 01035000
  1007. DS C @V200930 01036000
  1008. XCLAS DS CL1 @V200930 01037000
  1009. DS C @V200930 01038000
  1010. XTYPE DS CL3 @V200930 01039000
  1011. DS C @V200930 01040000
  1012. XRECNO DS CL6 @V200930 01041000
  1013. DS CL2 @V60B9BA 01042000
  1014. XCOPY DS CL2 @V200930 01043000
  1015. DS C @V60B9BA 01044000
  1016. XSTAT DS CL4 @V200930 01045000
  1017. DS C @V200930 01046000
  1018. XDATE DS CL5 @V200930 01047000
  1019. DS C @V200930 01048000
  1020. XTIME DS CL8 @V200930 01049000
  1021. DS C @V200930 01050000
  1022. XFNAME DS CL12 @V200930 01051000
  1023. XFTYPE DS CL8 @V200930 01052000
  1024. DS C @V200930 01053000
  1025. XDIST DS CL8 @V200930 01054000
  1026. SPACE 01054060
  1027. ORG XDATE @V60B9BA 01054120
  1028. XFLASH DS CL4 FLASH NAME @V60B9BA 01054180
  1029. DS CL3 @V60B9BA 01054240
  1030. XCHAR DS CL4 CHARS VALUE @V60B9BA 01054300
  1031. DS CL3 @V60B9BA 01054360
  1032. XFCB DS CL4 FCB VALUE @V60B9BA 01054420
  1033. DS CL2 @V60B9BA 01054480
  1034. XCMOD DS CL4 MODIFY VALUE @V60B9BA 01054540
  1035. DS CL3 @V60B9BA 01054600
  1036. XFLSHC DS CL2 FLASH COUNT @V60B9BA 01054660
  1037. DS CL5 @V60B9BA 01054720
  1038. DS CL2 @V60B9BA 01054780
  1039. ORG 01054840
  1040. DATARECL EQU *-DATAREC @V200930 01055000
  1041. SPACE 01055050
  1042. MSGERR DSECT @V407466 01055100
  1043. ERRIND DS XL1 ERROR MSG INDICATOR @V407466 01055150
  1044. ERRHDR DS CL6 ERROR MSG HEADER 'DMKCQG' @V407466 01055200
  1045. ERRCODE DS CL3 FOR MSG NUMBER @V407466 01055250
  1046. ERRSEV DS CL1 ERROR MSG SEVERITY @V407466 01055300
  1047. DS CL1 DELIMITER @V407466 01055350
  1048. ERRSZE2 EQU *-MSGERR LENGTH OF HEADER PORTION @V407466 01055400
  1049. ERRTEXT DS CL25 MSG TEXT @V407466 01055450
  1050. ERRSZE3 EQU *-MSGERR LENGTH OF FULL MSG @V407466 01055500
  1051. ERRSZE EQU ((*-MSGERR)+7)/8 SIZE OF ERROR MSG IN DWDS @V407466 01055550
  1052. SPACE 2 01056000
  1053. EJECT 01057000
  1054. PSA , @V306638 01058000
  1055. COPY DEVTYPES @V306638 01059000
  1056. COPY EQU @V306638 01060000
  1057. COPY RBLOKS @V306638 01061000
  1058. COPY SAVE @V306638 01062000
  1059. SPACE 01062100
  1060. RADDR1 EQU SAVEWRK7 FIRST ADDR IN RANGE @V407466 01062200
  1061. RADDR2 EQU SAVEWRK7+2 SECOND RADDR IN RANGE @V407466 01062300
  1062. SPACE 01062400
  1063. QRYBITS EQU SAVEWRK1+2 QUERY FLAGS @V407466 01062500
  1064. SPACE 01062600
  1065. *RANGE EQU X'80' RANGE PROCESSING 01062700
  1066. *PASS1 EQU X'40' FIRST PASS SWITCH 01062800
  1067. COPY SPOOL @V306638 01063000
  1068. COPY VBLOKS @V306638 01064000
  1069. COPY VCTCA @V306638 01065000
  1070. COPY VMBLOK @V306638 01066000
  1071. END 01067000
ibm/vm370-lib/cp/dmkcqg.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator