Type ASSEMBLE
Source Lines : 2,028
Fixes Applied : 3
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R12931DS]
Module
DMSVIP - CMS VSAM INTERFACE PROCESSOR *
Function
DMSVIP PERFORMS THE FOLLOWING: *
1. LOADS THE DOS DCSS (VSAM OPTION SPECIFIED). *
2. ISSUES ALL NECESSARY DOS ASSGN COMMANDS FOR THE OS *
USER. * * 3. MAPS ALL OS VSAM MACRO REQUESTS TO DOS SPECIFICATIONS * (INCLUDING MODIFICATION OF VSAM CONTROL BLOCKS AND * USER PARAMETER LISTS). * * 4. PERFORMS SIMULATION FOR OS ASYNCHRONOUS VSAM DATA * MANAGEMENT REQUESTS. * * 5. MAPS DOS VSAM MACRO RETURN CODES AND ERROR CODES TO OS * EQUIVALENTS WHERE NECESSARY. * * 6. TRAPS ALL TRANSFERS OF CONTROL BETWEEN VSAM AND THE OS * USER AND SETS THE APPROPRIATE OPERATING ENVIRONMENT FLAGS.* * *
Attributes
EXECUTES IN CMS VSAM DCSS, REENTRANT *
Operation
INITIALIZATION- *
UPON FIRST CALL TO THE INTERFACE, A 'SET DOS ON (VSAM '*
COMMAND IS ISSUED TO LOAD THE DOS SEGMENT. THEN, THE * CHAIN OF DOSCB'S IS SEARCHED AND DOS ASSGN COMMANDS * ARE ISSUED FOR THE OS USER. * * OPEN (SVC19)- * * ALL OS ACB'S ARE REARRANGED TO DOS FORMAT PRIOR TO * OPEN. IN ADDITION, ANY EXIT LISTS POINTED TO BY THE * ACB'S ARE REARRANGED IF NECESSARY. THE ADDRESSES OF * EXIT ROUTINES CONTAINED THEREIN ARE REPLACED BY THE * ADDRESS OF DMSVIP3 TO ALLOW VIP TO GAIN CONTROL * PRIOR TO THE USER EXIT (SEE BELOW). * * A DOS OPEN IS THEN ISSUED VIA DOS SVC 2 TO $$BOPEN. * ANY DOS ERROR CODES THAT DO NOT EXIST IN OS ARE * MAPPED TO OS EQUIVALENTS. THE A(DMSVIP2) (ACTION MACRO * ENTRY POINT) IS STORED IN ALL SUCCESSFULLY OPENED * ACB'S, AND CONTROL IS RETURNED TO THE CALLER (DMSSOP). * * CLOSE (SVC20), TCLOSE(SVC23)- * * THESE REQUESTS ARE MADE VIA DOS SVC 2 TO $$BCLOSE. * FOR TCLOSE, A FLAG IS SET IN THE NUCLEUS TO DIRECT * $$BCLOSE TO CALL $$BTCLOS AFTER PROCESSING THE SVC * PLIST. * * THE A(IKQVSM) (VSAM DATA MGT REQUEST DRIVER) IS STORED * IN ALL ACB'S PRIOR TO THE SUPERVISOR CALL. ON RETURN, * THE A(DMSVIP2) IS RESTORED IN THE ACB UNCONDITIONALLY * FOR TCLOSE REQUESTS, AND IN UNSUCCESSFULLY CLOSED ACB'S* FOR CLOSE REQUESTS. CONTROL IS RETURNED TO THE CALLER. * * NOTE THAT FOR OPEN, CLOSE AND TCLOSE REQUESTS, AN ACB * LIST IS BUILT IN FREE STORAGE FROM THE USER'S PLIST * AND PASSED TO DOS. THE LIST IS DMSFRET'D UPON RETURN * FROM VSAM. * * * GET, PUT, POINT, ENDREQ, ERASE- * * THE REQUEST CODE IN REGISTER ZERO IS MAPPED TO THE * EQUIVALENT DOS REQUEST CODE. NEXT, THE RPL (OR CHAIN * OF RPL'S) IS REARRANGED TO DOS FORMAT IF NOT PREVIOUSLY* DONE. IF THE USER HAS PROVIDED AN ECB ADDRESS IN THE * OS RPL, A FLAG IS SET IN THE NEW DOS RPL AND THE ECB * ADDRESS IS SAVED AT THE END OF THE BLOCK. ASYNCHRONOUS * PROCESSING IS SIMULATED BY THE SETTING OF ANY ACTIVE * EXIT RTNS INACTIVE WITHIN THE USER EXLST (WITH THE * EXCEPTION OF A JRNAD EXIT WHICH IS NOT AN ERROR EXIT). * THIS PREVENTS VSAM FROM TAKING AN ERROR EXIT AND ALLOWS* SUCH AN EXIT TO BE DEFERRED UNTIL A CHECK IS ISSUED * (SEE BELOW). * * THE DOS MACRO IS THEN ISSUED VIA A BALR TO IKQVSM. * * ALL DOS ERROR CODES IN THE RPL FDBK FIELD THAT DO NOT * EXIST IN OS ARE MAPPED TO OS EQUIVALENTS. * IF THE USER HAS SPECIFIED SYNCHRONOUS PROCESSING, THE * RETURN CODE IS PASSED UNCHANGED IN REGISTER 15. * * FOR ASYNCHRONOUS PROCESSING, ANY RETURN CODE IS * CLEARED BEFORE RETURN AND PREVIOUSLY SET INACTIVE * EXIT ROUTINES ARE RESTORED TO ACTIVE STATUS IN THE * EXLST. (SEE DESCRIPTION OF CHECK MACRO, BELOW, FOR * FURTHER COMMENTS). ALL ECB'S ARE SET TO 'WAITING' * STATUS. * * CHECK- * * THE RPL FDBK FIELD IS EXAMINED FOR THE RESULTS OF THE * PREVIOUS I/O OPERATION ON THE VSAM DATA SET. CONTROL * IS PASSED TO THE APPROPRIATE EXIT ROUTINE, IF AN * ACTIVE ONE HAS BEEN PROVIDED. ALSO, ALL 'WAITING' * ECB'S ARE POSTED WITH AN EQUIVALENT COMPLETION CODE. * * IF NO ACTIVE EXIT ROUTINE EXISTS, OR IF AN EXIT ROUTINE* 'RETURNS TO VSAM', THE RETURN CODE IS SET IN REGISTER * 15, AND CONTROL IS RETURNED TO THE USER INSTRUCTION * FOLLOWING THE CHECK. * * GENCB- * * FOR GENCB BLK=ACB OR BLK=EXLST, A DOS GENCB REQUEST * IS ISSUED VIA BALR TO IKQGEN. THE PLIST IS UNCHANGED. * * IF THE GENCB IS FOR AN RPL, AND THE USER HAS SPECIFIED * THE ECB KEYWORD, THE PLIST IS REARRANGED TO EXCLUDE * THE ECB ELEMENT, SINCE IT IS NOT SUPPORTED IN DOS. * A DOS GENCB IS THEN ISSUED AND, IF THE USER HAS * PROVIDED A WORKAREA, THE ADDRESS OF THE ECB IS STORED * AT THE END OF THE RPL AND A FLAG IS SET IN THE RPL. * THE PLIST IS RESTORED BEFORE CONTROL IS RETURNED TO * THE USER. * * MODCB, SHOWCB, TESTCB- * * IF A MODCB IS ISSUED FOR AN OS ACB, RPL OR EXLST, * THE CONTROL BLOCK IS REARRANGED TO DOS FORMAT BEFORE * A BALR TO IKQTMS. THE ECB KEYWORD IS NOT ALLOWED ON * A MODCB, SHOWCB OR TESTCB. * * IF THE REQUEST IS FOR TESTCB IO=COMPLETE, A 'NOT EQUAL'* OR 'WAITING' RESULT IS UNCONDITIONALLY RETURNED TO THE * USER. ALL OTHER SUPPORTED TESTCB REQUESTS ARE PASSED * TO DOS, AND THE USER CAN RELY ON THE PSW CONDITION CODE* TO INDICATE THE RESULTS OF THE TEST. * * IF AN ERET EXIT IS PROVIDED FOR TESTCB, THE A(DMSVIP4) * IS SUBSTITUTED IN THE PLIST TO ALLOW VIP TO GAIN CONTROL PRIOR TO ERET ENTRY AND SET THE PROPER SVC BIT (DOS BIT* OFF). THE ERET ADDRESS IS RESTORED TO THE PLIST PRIOR TO RETURN TO THE USER FOLLOWING THE TESTCB. * * VSAM EXIT TO USER EXIT RTN- * * ENTRY TO THE INTERFACE IS MADE AT DMSVIP3 FOR ALL * VSAM ERROR EXITS DURING I/O. THE DOS SVC BIT IS TURNED * OFF AND USER STORAGE KEY IS RESTORED. * * THE ADDRESS OF THE USER ROUTINE IS RECOVERED FROM * THE SAVED LIST (EITHER THE PRIMARY LIST IN THE WORK AREA OR FROM AN OVERFLOW LIST- OEXLSA). * * CONTROL IS THEN PASSED DIRECTLY TO THE EXIT ROUTINE. * IF THE ROUTINE 'RETURNS TO VSAM', VIP3 RESETS THE * ENVIRONMENT FLAGS, AND BRANCHES BACK TO VSAM. * * NOTE THAT THE INTERFACE IS CAPABLE OF SAVING UP TO * 128 DISTINCT EXIT ROUTINE ADDRESSES DURING A RUN UNIT. * * VSAM EXIT TO USER ERET RTN- * * ENTRY TO THE INTERFACE IS MADE AT DMSVIP4 FOR ALL * VSAM EXITS TO A USER ERET ROUTINE DURING TESTCB MACRO * REQUESTS. THE DOS SVC BIT IS TURNED OFF AND USER * STORAGE KEY RESTORED. * * THE ADDRESS OF THE ERET ROUTINE IS RECOVERED FROM THE * WORK AREA AND CONTROL IS PASSED TO THE ROUTINE. * * NOTE THAT THE ERET ROUTINE IS RESTRICTED FROM RETURNING* CONTROL TO VSAM. * * NOTE - PROGRAMMER CODE = @V305174 * *
Calls to Other Routines
IKQGEN, IKQVSM, IKQTMS, $$BOPEN, $$BCLOSE *