Table of Contents

DMSVIB Source

References

Source Listing

DMSVIB.ASSEMBLE.txt
  1. VIB TITLE 'DMSVIB (CMS) VM/370 - RELEASE 6' 00001000
  2. *********************************************************************** 00002000
  3. * * 00003000
  4. * * 00004000
  5. * MODULE NAME: * 00005000
  6. * * 00006000
  7. * DMSVIB - CMS VSAM INTERFACE BOOTSTRAP ROUTINE * 00007000
  8. * * 00008000
  9. * * 00009000
  10. * FUNCTION: * 00010000
  11. * * 00011000
  12. * TO LOAD THE CMS VSAM SAVED SYSTEM (IF NOT ALREADY DONE) * 00012000
  13. * AND TO PASS CONTROL TO THE CMS VSAM INTERFACE ROUTINE * 00013000
  14. * (DMSVIP). * 00014000
  15. * * 00015000
  16. * ATTRIBUTES: * 00016000
  17. * * 00017000
  18. * NUCLEUS RESIDENT, REENTRANT * 00018000
  19. * * 00019000
  20. * ENTRY POINTS: * 00020000
  21. * * 00021000
  22. * DMSVIB - SEE FUNCTION DESCRIPTION * 00022000
  23. * * 00023000
  24. * ENTRY CONDITIONS: * 00024000
  25. * * 00025000
  26. * BALR'D TO BY USER PROGRAM DURING FIRST EXECUTION OF OS * 00026000
  27. * VSAM MACROS GENCB, TESTCB, SHOWCB, OR MODCB, OR DURING * 00027000
  28. * OPEN BY CMS OPEN ROUTINE (DMSSOP) * 00028000
  29. * * 00029000
  30. * EXIT CONDITIONS: * 00030000
  31. * * 00031000
  32. * NORMAL - CONTROL IS PASSED TO CMS INTERFACE ROUTINE (DMSVIP).* 00032000
  33. * REGISTERS ARE UNCHANGED, EXCEPT FOR REGISTER 15 WHICH 00033000
  34. * CONTAINS THE BRANCH ADDRESS. * 00034000
  35. * * 00035000
  36. * ERROR - CONTROL IS PASSED TO CMS ABEND ROUTINE (DMSABN) * 00036000
  37. * FOR THE FOLLOWING ERROR CONDITIONS: * 00037000
  38. * SYSTEM DOES NOT EXIST, SYSTEM PREVIOUSLY SAVED IN * 00038000
  39. * NUCLEUS STORAGE RATHER THAN USER AREA, OR PAGING * 00039000
  40. * I/O ERRORS ENCOUNTERED. * 00040000
  41. * FOR EACH OF THE ABOVE CASES, PROGRAM EXECUTION * 00041000
  42. * IS TERMINATED. * 00042000
  43. * * 00043000
  44. * CALLS TO OTHER ROUTINES: * 00044000
  45. * * 00045000
  46. * DMSVIP - (UPON EXIT) PROCESS VSAM REQUESTS * 00046000
  47. * * 00047000
  48. * EXTERNAL REFERENCES: * 00048000
  49. * * 00049000
  50. * DMSKEY - FOR CORRECT PROTECT KEY * 00050000
  51. * DMSERR - FOR CMS ERROR MESSAGES * 00051000
  52. * DMSFREE - FOR NUCLEUS FREE STORAGE * 00052000
  53. * DMSABN - FOR ABNORMAL TERMINATION OF RUN * 00053000
  54. * REGEQU - FOR SYMBOLIC REGISTER NAMES * 00054000
  55. * NUCON - FOR NUCLEUS STORAGE AREA DSECT * 00055000
  56. * SYSNAMES - FOR SAVED SYSTEM NAMES DSECT * 00056000
  57. * * 00057000
  58. * TABLES/WORK AREAS: * 00058000
  59. * * 00059000
  60. * NONE * 00060000
  61. * * 00061000
  62. * REGISTER USAGE: * 00062000
  63. * * 00063000
  64. * GPR0 - NUCLEUS DSECT * 00064000
  65. * GPR1, GPR2, GPR3, GPR5 - WORK REGS * 00065000
  66. * GPR12 - DMSVIB ADDRESSABILITY * 00066000
  67. * GPR15 - TEMP ADDRESSABILITY UPON ENTRY * 00067000
  68. * * 00068000
  69. * NOTES: * 00069000
  70. * IN ORDER TO ALLOW DMSVIB TO GET CONTROL AFTER OS GENCB, * 00070000
  71. * TESTCB, MODCB, OR SHOWCB MACRO EXECUTION, THE VIB ADCON * 00071000
  72. * MUST BE AT RELATIVE LOCATION 12(C). * 00072000
  73. * THE FOLLOWING OS VSAM MACRO EXPANSION LOADS THE ENTRY POINT * 00073000
  74. * ADDRESS SET IN THE SIMULATED CVT AT INITIAL PROGRAM * 00074000
  75. * LOAD: * 00075000
  76. * * 00076000
  77. * + L 15,16 POINT TO CVT * 00077000
  78. * + L 15,256(,15) POINT TO AMCBS * 00078000
  79. * + L 15,12(,15) POINT TO CB MANIPULATION ROUTINE 00079000
  80. * XX REPRESENTS VARIOUS *VA12931 00080000
  81. * ENTRY POINTS 0 TO 80 *VA12931 00080300
  82. * + BAL 14,XX(,15) BRANCH TO ROUTINE *VA12931 00080600
  83. * * 00081000
  84. * OPERATION: * 00082000
  85. * * 00083000
  86. * DMSVIB ISSUES A 'FINDSYS' TO DETERMINE WHETHER OR NOT * 00084000
  87. * THE VSAM SAVED SYSTEM EXISTS, AND IF SO, HAS BEEN * 00085000
  88. * LOADED. IF NOT, A 'LOADSYS' IS ISSUED TO LOAD THE * 00086000
  89. * VSAM SYSTEM INTO THE USER AREA. * 00087000
  90. * * 00088000
  91. * UPON SUCCESSFUL COMPLETION, THE ADDRESS OF THE VSAM * 00089000
  92. * INTERFACE ROUTINE (DMSVIP) IS STORED AT CVT+256 SO THAT * 00090000
  93. * SUBSEQUENT VSAM REQUESTS CAN BALR DIRECTLY TO THE LOADED * 00091000
  94. * INTERFACE ROUTINE RATHER THAN TO THE BOOTSTRAP. * 00092000
  95. * * 00093000
  96. * A REGISTER SAVE/WORK AREA IS RESERVED IN NUCLEUS FREE * 00094000
  97. * STORAGE VIA A DMSFREE REQUEST FOR USE BY THE INTERFACE * 00095000
  98. * ROUTINE AND ITS ADDRESS IS STORED IN THE NUCLEUS (AVIPWORK). * 00096000
  99. * * 00097000
  100. * CONTROL IS THEN PASSED TO DMSVIP. * 00098000
  101. * * 00099000
  102. *********************************************************************** 00100000
  103. EJECT 00101000
  104. DMSVIB START , @V305174 00102000
  105. * 00103000
  106. * THE FOLLOWING CODE FROM *XX TO *XY MUST REMAIN INTACT (SEE NOTES) 00104000
  107. * 00105000
  108. *XX 00106000
  109. USING NUCON,R0 @V305174 00107000
  110. BALR R15,0 SET ADDRESSABILITY *VA12931 00108000
  111. USING *,R15 *VA12931 00109000
  112. L R15,ADMSVIB1 SET TEMP BASE REG *VA12931 00110000
  113. BR R15 BRANCH AROUND ADCON *VA12931 00111000
  114. ORG DMSVIB+12 MUST BE AT DISPLACEMENT 12 *VA12931 00112000
  115. DROP R15 @V305174 00114000
  116. *********************************************************************** 00115000
  117. * * 00116000
  118. * VIB ADCON - MUST BE AT RELATIVE LOCATION 12(C) - SEE NOTES * 00117000
  119. * * 00118000
  120. *********************************************************************** 00119000
  121. ADMSVIB1 DC A(DMSVIB1) SECOND MACRO ENTRY POINT *VA12931 00120000
  122. SPACE 2 *VA12931 00120020
  123. * *VA12931 00120040
  124. * ENHANCED OS/VS VSAM CONTROL BLOCK MANIPULATION MACROS USE *VA12931 00120060
  125. * BRANCH TABLE ENTRIES TO SUPPORT THE APPROPRIATE VSAM FUNC- *VA12931 00120080
  126. * TION. THE FOLLOWING TABLE SUPPORTS BRANCH TABLE ENTRY. *VA12931 00120100
  127. * *VA12931 00120120
  128. DMSVIB1 DS 0H VSAM MACRO SECOND ENTRY ADDR *VA12931 00120140
  129. USING DMSVIB1,R15 *VA12931 00120160
  130. SPACE 2 *VA12931 00120180
  131. B DMSVIB2 + 0 *VA12931 00120200
  132. B DMSVIB2 + 4 *VA12931 00120220
  133. B DMSVIB2 + 8 GENCB = ACB *VA12931 00120240
  134. B DMSVIB2 + 12 GENCB = RPL *VA12931 00120260
  135. B DMSVIB2 + 16 GENCB = EXLST *VA12931 00120280
  136. B DMSVIB2 + 20 ** RESERVED ** *VA12931 00120300
  137. B DMSVIB2 + 24 MODCB AN ACB *VA12931 00120320
  138. B DMSVIB2 + 28 MODCB AN RPL *VA12931 00120340
  139. B DMSVIB2 + 32 MODCB AN EXLST *VA12931 00120360
  140. B DMSVIB2 + 36 ** RESERVED ** *VA12931 00120380
  141. B DMSVIB2 + 40 SHOWCB = ACB *VA12931 00120400
  142. B DMSVIB2 + 44 SHOWCB = RPL *VA12931 00120420
  143. B DMSVIB2 + 48 SHOWCB = EXLST *VA12931 00120440
  144. B DMSVIB2 + 52 ** RESERVED ** *VA12931 00120460
  145. B DMSVIB2 + 56 TESTCB AN ACB *VA12931 00120480
  146. B DMSVIB2 + 60 TESTCB AN RPL *VA12931 00120500
  147. B DMSVIB2 + 64 TESTCB AN EXLST *VA12931 00120520
  148. B DMSVIB2 + 68 ** RESERVED ** *VA12931 00120540
  149. B DMSVIB2 + 72 SHOWCB/TESTCB (KEYWORDS) *VA12931 00120560
  150. B DMSVIB2 + 76 SHOWCB (RECLEN OF RPL) *VA12931 00120580
  151. B DMSVIB2 + 80 MODCB (RECLEN OF RPL) *VA12931 00120600
  152. SPACE 2 *VA12931 00120620
  153. DMSVIB2 DS 0H *VA12931 00120640
  154. DMSKEY NUCLEUS GET NUCLEUS STORAGE KEY *VA12931 00120660
  155. DROP R15 *VA12931 00120680
  156. *********************************************************************** 00121000
  157. *XY 00122000
  158. STM R0,R14,BALRSAVE SAVE USER'S REGS *VA12931 00123000
  159. BALR R12,0 SET ADDRESSABILITY *VA12931 00123600
  160. USING *,R12 *VA12931 00124200
  161. * 00125000
  162. L R5,ASYSNAMS ADDRESS SYSTEM NAMES LIST @V305174 00126000
  163. USING SYSNAMES,R5 @V305174 00127000
  164. LA R2,CMSVSAM POINT AT SAVED SYSTEM NAME @V305174 00128000
  165. LA R3,FINDSYS AND USE 'FINDSYS' CODE @V305066 00129000
  166. DC X'83230064' FIND SAVED SYSTEM @V305174 00130000
  167. BC 8,LOADED CC=0, ALREADY LOADED @V305174 00131000
  168. BC 4,LOADIT CC=1, EXISTS BUT NOT LOADED @V305174 00132000
  169. SPACE 1 00133000
  170. ERRORS CH R3,FORTY4 RC = 44? @V305174 00134000
  171. BE ERR400S IF SO, NO SUCH SYSTEM @V305174 00135000
  172. B ERR410S OTHERWISE, PAGING I/O ERRORS@V305174 00136000
  173. SPACE 1 00137000
  174. LOADIT C R2,VMSIZE OVERLAY VM STOR IF LOADSYS? @V305174 00138000
  175. BL ERR401S YES, ERROR @V305174 00139000
  176. LA R2,CMSVSAM POINT TO NAME AGAIN @V305174 00140000
  177. XR R3,R3 R3=0 FOR SHARED COPY @V305174 00141000
  178. DC X'83230064' LOAD THE SHARED SYSTEM @V305174 00142000
  179. BC 2,ERRORS ERRORS (SHOULDN'T HAPPEN) @V305174 00143000
  180. DROP R5 @V305174 00144000
  181. SPACE 1 00145000
  182. LOADED EQU * @V305174 00146000
  183. OI VSAMFLG1,VSAMRUN VSAM LOADED @V305174 00147000
  184. ST R2,AVSAMSYS VSAM DCSS ADDR IN NUCON @V305174 00148000
  185. L R2,12(,R2) INTFC ADDR FRM VSAM DCSS@V305174 00149000
  186. L R5,ACMSCVT POINT TO SIMULATED CVT @V305174 00150000
  187. LA R5,256(,R5) PT TO VSAM INTFC ADDR CELL @V305174 00151000
  188. ST R2,0(,R5) STORE ADDR OF DMSVIP @V305174 00152000
  189. * 00153000
  190. * RESERVE A WORK AREA IN NUCLEUS FREE STORAGE FOR USE BY DMSVIP 00154000
  191. * 00155000
  192. LA R0,CON37 LOAD SIZE OF AREA (NO. DWORDS@V305174 00156000
  193. DMSFREE DWORDS=(0),TYPE=NUCLEUS,ERR=ERR109S @V305174 00157000
  194. ST R1,AVIPWORK SAVE ADDR OF AREA IN NUCLEUS @V305174 00158000
  195. XC 0(256,R1),0(R1) INITIALIZE WORK AREA @V305174 00159000
  196. XC 256(40,R1),256(R1) @V305174 00160000
  197. * 00161000
  198. DMSKEY RESET @V305174 00162000
  199. * 00163000
  200. * EXIT TO DMSVIP 00164000
  201. * 00165000
  202. LR R15,R2 LOAD BRANCH REG @V305174 00166000
  203. LM R0,R14,BALRSAVE RESTORE USER'S REGS @V305174 00167000
  204. BR R15 EXIT TO VSAM INTERFACE RTN @V305174 00168000
  205. EJECT 00169000
  206. ERR400S EQU * @V305174 00170000
  207. DMSERR MF=(E,'SYS'),NUM=400,LET=S,SUB=(CHARA,(R2)), @V305174*00171000
  208. TEXT='SYSTEM ''........'' DOES NOT EXIST' @V305174 00172000
  209. B ABEND @V305174 00173000
  210. SPACE 2 00174000
  211. ERR401S EQU * @V305106 00175000
  212. L R5,ASYSNAMS ADDR SYSTEM NAMES LIST @V305174 00176000
  213. USING SYSNAMES,R5 @V305174 00177000
  214. DMSERR MF=(E,'SYS'),LET=S,NUM=401,SUB=(HEXA,VMSIZE,CHARA,CMSVS*00178000
  215. AM,HEX,(R2)),TEXT='V.M. SIZE (......) CANNOT EXCEED ''..*00179000
  216. ......'' START ADDRESS (......)' @VA04739 00180100
  217. DROP R5 @V305174 00181000
  218. LA R3,ABEND104 ABEND CODE @V305066 00182000
  219. B ABEND @V305174 00183000
  220. ERR109S DMSERR NUM=109,LET=S,TEXT='VIRTUAL STORAGE CAPACITY EXCEEDED' 00184000
  221. LA R3,ABEND177 ABEND CODE @V305066 00185000
  222. B ABEND @V305174 00186000
  223. EJECT 00187000
  224. ERR410S EQU * @V305174 00188000
  225. DMSERR LET=S,NUM=410,SUB=(DEC,(R3)),TEXT='CONTROL PROGRAM ERRO*00189000
  226. R INDICATION ''....''' @V305174 00190000
  227. LA R3,ABEND174 ABEND CODE @V305066 00191000
  228. ABEND DMSABN (R3),TYPCALL=SVC @V305174 00192000
  229. SPACE 2 00193000
  230. DS 0D @V305174 00194000
  231. FORTY4 DC H'44' CP RC FOR 'SYSTEM NOT FOUND'@V305174 00195000
  232. SPACE 2 00196000
  233. * EQUATES 00197000
  234. SPACE 2 00198000
  235. FINDSYS EQU 12 FINDSYS CODE @V305066 00199000
  236. CON37 EQU 37 @V305066 00200000
  237. ABEND104 EQU X'104' ABEND CODE @V305066 00201000
  238. ABEND177 EQU X'177' ABEND CODE @V305066 00202000
  239. ABEND174 EQU X'174' ABEND CODE @V305066 00203000
  240. EJECT 00204000
  241. REGEQU @V305174 00205000
  242. NUCON @V305174 00206000
  243. SYSNAMES @V305174 00207000
  244. END 00208000