VIB TITLE 'DMSVIB (CMS) VM/370 - RELEASE 6' 00001000
*********************************************************************** 00002000
* * 00003000
* * 00004000
* MODULE NAME: * 00005000
* * 00006000
* DMSVIB - CMS VSAM INTERFACE BOOTSTRAP ROUTINE * 00007000
* * 00008000
* * 00009000
* FUNCTION: * 00010000
* * 00011000
* TO LOAD THE CMS VSAM SAVED SYSTEM (IF NOT ALREADY DONE) * 00012000
* AND TO PASS CONTROL TO THE CMS VSAM INTERFACE ROUTINE * 00013000
* (DMSVIP). * 00014000
* * 00015000
* ATTRIBUTES: * 00016000
* * 00017000
* NUCLEUS RESIDENT, REENTRANT * 00018000
* * 00019000
* ENTRY POINTS: * 00020000
* * 00021000
* DMSVIB - SEE FUNCTION DESCRIPTION * 00022000
* * 00023000
* ENTRY CONDITIONS: * 00024000
* * 00025000
* BALR'D TO BY USER PROGRAM DURING FIRST EXECUTION OF OS * 00026000
* VSAM MACROS GENCB, TESTCB, SHOWCB, OR MODCB, OR DURING * 00027000
* OPEN BY CMS OPEN ROUTINE (DMSSOP) * 00028000
* * 00029000
* EXIT CONDITIONS: * 00030000
* * 00031000
* NORMAL - CONTROL IS PASSED TO CMS INTERFACE ROUTINE (DMSVIP).* 00032000
* REGISTERS ARE UNCHANGED, EXCEPT FOR REGISTER 15 WHICH 00033000
* CONTAINS THE BRANCH ADDRESS. * 00034000
* * 00035000
* ERROR - CONTROL IS PASSED TO CMS ABEND ROUTINE (DMSABN) * 00036000
* FOR THE FOLLOWING ERROR CONDITIONS: * 00037000
* SYSTEM DOES NOT EXIST, SYSTEM PREVIOUSLY SAVED IN * 00038000
* NUCLEUS STORAGE RATHER THAN USER AREA, OR PAGING * 00039000
* I/O ERRORS ENCOUNTERED. * 00040000
* FOR EACH OF THE ABOVE CASES, PROGRAM EXECUTION * 00041000
* IS TERMINATED. * 00042000
* * 00043000
* CALLS TO OTHER ROUTINES: * 00044000
* * 00045000
* DMSVIP - (UPON EXIT) PROCESS VSAM REQUESTS * 00046000
* * 00047000
* EXTERNAL REFERENCES: * 00048000
* * 00049000
* DMSKEY - FOR CORRECT PROTECT KEY * 00050000
* DMSERR - FOR CMS ERROR MESSAGES * 00051000
* DMSFREE - FOR NUCLEUS FREE STORAGE * 00052000
* DMSABN - FOR ABNORMAL TERMINATION OF RUN * 00053000
* REGEQU - FOR SYMBOLIC REGISTER NAMES * 00054000
* NUCON - FOR NUCLEUS STORAGE AREA DSECT * 00055000
* SYSNAMES - FOR SAVED SYSTEM NAMES DSECT * 00056000
* * 00057000
* TABLES/WORK AREAS: * 00058000
* * 00059000
* NONE * 00060000
* * 00061000
* REGISTER USAGE: * 00062000
* * 00063000
* GPR0 - NUCLEUS DSECT * 00064000
* GPR1, GPR2, GPR3, GPR5 - WORK REGS * 00065000
* GPR12 - DMSVIB ADDRESSABILITY * 00066000
* GPR15 - TEMP ADDRESSABILITY UPON ENTRY * 00067000
* * 00068000
* NOTES: * 00069000
* IN ORDER TO ALLOW DMSVIB TO GET CONTROL AFTER OS GENCB, * 00070000
* TESTCB, MODCB, OR SHOWCB MACRO EXECUTION, THE VIB ADCON * 00071000
* MUST BE AT RELATIVE LOCATION 12(C). * 00072000
* THE FOLLOWING OS VSAM MACRO EXPANSION LOADS THE ENTRY POINT * 00073000
* ADDRESS SET IN THE SIMULATED CVT AT INITIAL PROGRAM * 00074000
* LOAD: * 00075000
* * 00076000
* + L 15,16 POINT TO CVT * 00077000
* + L 15,256(,15) POINT TO AMCBS * 00078000
* + L 15,12(,15) POINT TO CB MANIPULATION ROUTINE 00079000
* XX REPRESENTS VARIOUS *VA12931 00080000
* ENTRY POINTS 0 TO 80 *VA12931 00080300
* + BAL 14,XX(,15) BRANCH TO ROUTINE *VA12931 00080600
* * 00081000
* OPERATION: * 00082000
* * 00083000
* DMSVIB ISSUES A 'FINDSYS' TO DETERMINE WHETHER OR NOT * 00084000
* THE VSAM SAVED SYSTEM EXISTS, AND IF SO, HAS BEEN * 00085000
* LOADED. IF NOT, A 'LOADSYS' IS ISSUED TO LOAD THE * 00086000
* VSAM SYSTEM INTO THE USER AREA. * 00087000
* * 00088000
* UPON SUCCESSFUL COMPLETION, THE ADDRESS OF THE VSAM * 00089000
* INTERFACE ROUTINE (DMSVIP) IS STORED AT CVT+256 SO THAT * 00090000
* SUBSEQUENT VSAM REQUESTS CAN BALR DIRECTLY TO THE LOADED * 00091000
* INTERFACE ROUTINE RATHER THAN TO THE BOOTSTRAP. * 00092000
* * 00093000
* A REGISTER SAVE/WORK AREA IS RESERVED IN NUCLEUS FREE * 00094000
* STORAGE VIA A DMSFREE REQUEST FOR USE BY THE INTERFACE * 00095000
* ROUTINE AND ITS ADDRESS IS STORED IN THE NUCLEUS (AVIPWORK). * 00096000
* * 00097000
* CONTROL IS THEN PASSED TO DMSVIP. * 00098000
* * 00099000
*********************************************************************** 00100000
EJECT 00101000
DMSVIB START , @V305174 00102000
* 00103000
* THE FOLLOWING CODE FROM *XX TO *XY MUST REMAIN INTACT (SEE NOTES) 00104000
* 00105000
*XX 00106000
USING NUCON,R0 @V305174 00107000
BALR R15,0 SET ADDRESSABILITY *VA12931 00108000
USING *,R15 *VA12931 00109000
L R15,ADMSVIB1 SET TEMP BASE REG *VA12931 00110000
BR R15 BRANCH AROUND ADCON *VA12931 00111000
ORG DMSVIB+12 MUST BE AT DISPLACEMENT 12 *VA12931 00112000
DROP R15 @V305174 00114000
*********************************************************************** 00115000
* * 00116000
* VIB ADCON - MUST BE AT RELATIVE LOCATION 12(C) - SEE NOTES * 00117000
* * 00118000
*********************************************************************** 00119000
ADMSVIB1 DC A(DMSVIB1) SECOND MACRO ENTRY POINT *VA12931 00120000
SPACE 2 *VA12931 00120020
* *VA12931 00120040
* ENHANCED OS/VS VSAM CONTROL BLOCK MANIPULATION MACROS USE *VA12931 00120060
* BRANCH TABLE ENTRIES TO SUPPORT THE APPROPRIATE VSAM FUNC- *VA12931 00120080
* TION. THE FOLLOWING TABLE SUPPORTS BRANCH TABLE ENTRY. *VA12931 00120100
* *VA12931 00120120
DMSVIB1 DS 0H VSAM MACRO SECOND ENTRY ADDR *VA12931 00120140
USING DMSVIB1,R15 *VA12931 00120160
SPACE 2 *VA12931 00120180
B DMSVIB2 + 0 *VA12931 00120200
B DMSVIB2 + 4 *VA12931 00120220
B DMSVIB2 + 8 GENCB = ACB *VA12931 00120240
B DMSVIB2 + 12 GENCB = RPL *VA12931 00120260
B DMSVIB2 + 16 GENCB = EXLST *VA12931 00120280
B DMSVIB2 + 20 ** RESERVED ** *VA12931 00120300
B DMSVIB2 + 24 MODCB AN ACB *VA12931 00120320
B DMSVIB2 + 28 MODCB AN RPL *VA12931 00120340
B DMSVIB2 + 32 MODCB AN EXLST *VA12931 00120360
B DMSVIB2 + 36 ** RESERVED ** *VA12931 00120380
B DMSVIB2 + 40 SHOWCB = ACB *VA12931 00120400
B DMSVIB2 + 44 SHOWCB = RPL *VA12931 00120420
B DMSVIB2 + 48 SHOWCB = EXLST *VA12931 00120440
B DMSVIB2 + 52 ** RESERVED ** *VA12931 00120460
B DMSVIB2 + 56 TESTCB AN ACB *VA12931 00120480
B DMSVIB2 + 60 TESTCB AN RPL *VA12931 00120500
B DMSVIB2 + 64 TESTCB AN EXLST *VA12931 00120520
B DMSVIB2 + 68 ** RESERVED ** *VA12931 00120540
B DMSVIB2 + 72 SHOWCB/TESTCB (KEYWORDS) *VA12931 00120560
B DMSVIB2 + 76 SHOWCB (RECLEN OF RPL) *VA12931 00120580
B DMSVIB2 + 80 MODCB (RECLEN OF RPL) *VA12931 00120600
SPACE 2 *VA12931 00120620
DMSVIB2 DS 0H *VA12931 00120640
DMSKEY NUCLEUS GET NUCLEUS STORAGE KEY *VA12931 00120660
DROP R15 *VA12931 00120680
*********************************************************************** 00121000
*XY 00122000
STM R0,R14,BALRSAVE SAVE USER'S REGS *VA12931 00123000
BALR R12,0 SET ADDRESSABILITY *VA12931 00123600
USING *,R12 *VA12931 00124200
* 00125000
L R5,ASYSNAMS ADDRESS SYSTEM NAMES LIST @V305174 00126000
USING SYSNAMES,R5 @V305174 00127000
LA R2,CMSVSAM POINT AT SAVED SYSTEM NAME @V305174 00128000
LA R3,FINDSYS AND USE 'FINDSYS' CODE @V305066 00129000
DC X'83230064' FIND SAVED SYSTEM @V305174 00130000
BC 8,LOADED CC=0, ALREADY LOADED @V305174 00131000
BC 4,LOADIT CC=1, EXISTS BUT NOT LOADED @V305174 00132000
SPACE 1 00133000
ERRORS CH R3,FORTY4 RC = 44? @V305174 00134000
BE ERR400S IF SO, NO SUCH SYSTEM @V305174 00135000
B ERR410S OTHERWISE, PAGING I/O ERRORS@V305174 00136000
SPACE 1 00137000
LOADIT C R2,VMSIZE OVERLAY VM STOR IF LOADSYS? @V305174 00138000
BL ERR401S YES, ERROR @V305174 00139000
LA R2,CMSVSAM POINT TO NAME AGAIN @V305174 00140000
XR R3,R3 R3=0 FOR SHARED COPY @V305174 00141000
DC X'83230064' LOAD THE SHARED SYSTEM @V305174 00142000
BC 2,ERRORS ERRORS (SHOULDN'T HAPPEN) @V305174 00143000
DROP R5 @V305174 00144000
SPACE 1 00145000
LOADED EQU * @V305174 00146000
OI VSAMFLG1,VSAMRUN VSAM LOADED @V305174 00147000
ST R2,AVSAMSYS VSAM DCSS ADDR IN NUCON @V305174 00148000
L R2,12(,R2) INTFC ADDR FRM VSAM DCSS@V305174 00149000
L R5,ACMSCVT POINT TO SIMULATED CVT @V305174 00150000
LA R5,256(,R5) PT TO VSAM INTFC ADDR CELL @V305174 00151000
ST R2,0(,R5) STORE ADDR OF DMSVIP @V305174 00152000
* 00153000
* RESERVE A WORK AREA IN NUCLEUS FREE STORAGE FOR USE BY DMSVIP 00154000
* 00155000
LA R0,CON37 LOAD SIZE OF AREA (NO. DWORDS@V305174 00156000
DMSFREE DWORDS=(0),TYPE=NUCLEUS,ERR=ERR109S @V305174 00157000
ST R1,AVIPWORK SAVE ADDR OF AREA IN NUCLEUS @V305174 00158000
XC 0(256,R1),0(R1) INITIALIZE WORK AREA @V305174 00159000
XC 256(40,R1),256(R1) @V305174 00160000
* 00161000
DMSKEY RESET @V305174 00162000
* 00163000
* EXIT TO DMSVIP 00164000
* 00165000
LR R15,R2 LOAD BRANCH REG @V305174 00166000
LM R0,R14,BALRSAVE RESTORE USER'S REGS @V305174 00167000
BR R15 EXIT TO VSAM INTERFACE RTN @V305174 00168000
EJECT 00169000
ERR400S EQU * @V305174 00170000
DMSERR MF=(E,'SYS'),NUM=400,LET=S,SUB=(CHARA,(R2)), @V305174*00171000
TEXT='SYSTEM ''........'' DOES NOT EXIST' @V305174 00172000
B ABEND @V305174 00173000
SPACE 2 00174000
ERR401S EQU * @V305106 00175000
L R5,ASYSNAMS ADDR SYSTEM NAMES LIST @V305174 00176000
USING SYSNAMES,R5 @V305174 00177000
DMSERR MF=(E,'SYS'),LET=S,NUM=401,SUB=(HEXA,VMSIZE,CHARA,CMSVS*00178000
AM,HEX,(R2)),TEXT='V.M. SIZE (......) CANNOT EXCEED ''..*00179000
......'' START ADDRESS (......)' @VA04739 00180100
DROP R5 @V305174 00181000
LA R3,ABEND104 ABEND CODE @V305066 00182000
B ABEND @V305174 00183000
ERR109S DMSERR NUM=109,LET=S,TEXT='VIRTUAL STORAGE CAPACITY EXCEEDED' 00184000
LA R3,ABEND177 ABEND CODE @V305066 00185000
B ABEND @V305174 00186000
EJECT 00187000
ERR410S EQU * @V305174 00188000
DMSERR LET=S,NUM=410,SUB=(DEC,(R3)),TEXT='CONTROL PROGRAM ERRO*00189000
R INDICATION ''....''' @V305174 00190000
LA R3,ABEND174 ABEND CODE @V305066 00191000
ABEND DMSABN (R3),TYPCALL=SVC @V305174 00192000
SPACE 2 00193000
DS 0D @V305174 00194000
FORTY4 DC H'44' CP RC FOR 'SYSTEM NOT FOUND'@V305174 00195000
SPACE 2 00196000
* EQUATES 00197000
SPACE 2 00198000
FINDSYS EQU 12 FINDSYS CODE @V305066 00199000
CON37 EQU 37 @V305066 00200000
ABEND104 EQU X'104' ABEND CODE @V305066 00201000
ABEND177 EQU X'177' ABEND CODE @V305066 00202000
ABEND174 EQU X'174' ABEND CODE @V305066 00203000
EJECT 00204000
REGEQU @V305174 00205000
NUCON @V305174 00206000
SYSNAMES @V305174 00207000
END 00208000