/********************************************************************/ 00260000 /* @Y30LB11*/ 00262000 /* PROCEDURE NAME - SCRCOPY @Y30LB11*/ 00270000 /* @Y30LB11*/ 00280000 /* FUNCTION - THE PRINCIPLE FUNCTION OF THIS ROUTINE IS TO @Y30LB11*/ 00290000 /* SCRATCH AN MSS COPY VOLUME. @Y30LB11*/ 00292000 /* @Y30LB11*/ 00298400 /* IDC0088I CARTRIDGES CSN (CSN) SCRATCHED FOR @Y30LB11*/ 00310800 /* COPY YYDDD. @Y30LB11*/ 00311600 /* @Y30LB11*/ 00312000 /* IDC0098I ** LOCATION OF VOLUME: (LOCATION) @Y30LB11*/ 00312800 /* @Y30LB11*/ 00313600 /* IDC2076I ** CART CSN (CSN) NOT IN MSF FOR @Y30LB11*/ 00313700 /* COPY YYDDD. @Y30LB11*/ 00314500 /* @Y30LB11*/ 00314900 /* IDC2087I ** CART CSN (CSN) NOT SCRATCHED FOR @Y30LB11*/ 00315600 /* COPY YYDDD. @Y30LB11*/ 00317600 /* @Y30LB11*/ 00321500 /* INPUT - A PARAMETER CONSISTING OF A SINGLE BYTE. THE @Y30LB11*/ 00323500 /* FIRST BIT OF THE BYTE IS SET TO '1' BY SCRCOPY @Y30LB11*/ 00325500 /* AN ERROR OCCURS UPDATING THE INVENTORY. @Y30LB11*/ 00327500 /* @Y30LB11*/ 00329500 /* THE COPY RECORD MUST HAVE BEEN READ AND THE @Y30LB11*/ 00331500 /* COPYV MAPPING MACRO BASED ON THE RECORD PRIOR TO @Y30LB11*/ 00333500 /* THE CALL TO SCRCOPY. FURTHER, THE DEFLIST @Y30LB11*/ 00335500 /* MUST HAVE BEEN INCLUDED PRIOR TO THE CALL TO @Y30LB11*/ 00337500 /* SCRCOPY. @Y30LB11*/ 00339500 /* @Y30LB11*/ 00341500 /* OUTPUT - FIRST BIT OF INPUT BYTE SET IF INVENTORY ERROR. @Y30LB11*/ 00343500 /* RETURN CODE IN REGISTER 15 @Y30LB11*/ 00345500 /* @Y30LB11*/ 00345900 /* 0 - CARTRIDGE OR CARTRIDGES FOR COPY VOLUME @Y30LB11*/ 00346300 /* SCRATCHED SUCCESSFULLY. @Y30LB11*/ 00346400 /* @Y30LB11*/ 00346700 /* 4 - CARTRIDGES NOT IN LIBRARY, OR DSM FAILURE @Y30LB11*/ 00346800 /* OCCURRED. @Y30LB11*/ 00346900 /* @Y30LB11*/ 00347000 /* 8 - USSC UMACRO COULD NOT OBTAIN STORAGE @Y30LB11*/ 00347100 /* FOR ECB/MESSAGE AREA. @Y30LB11*/ 00347200 /* @Y30LB11*/ 00353400 /********************************************************************/ 00356300 00359200 SCRCOPY: /*@Y30LB11*/ 00362100 PROCEDURE(SCINPUT); /*@Y30LB11*/ 00365000 DCL SCCMPTR PTR(31); /* PTR TO ECB/MSG AREA @Y30LB11*/ 00367900 DCL SCECBCD FIXED(8); /* SCRCOPY ECB CODE @Y30LB11*/ 00371900 DCL SCRCOND FIXED(15); /* SCRCOPY COND CODE @Y30LB11*/ 00372800 DCL SCMSGCD PTR(31); /* SSCMSG REASON CODE @Y30LB11*/ 00373700 DCL SCMSGPTR PTR(31); /* MESSAGE AREA POINTER @Y30LB11*/ 00374600 DCL SCDEFLST CHAR(LENGTH(DEFLIST));/* SCRCOPY DEFLIST @Y30LB11*/ 00375000 DCL SCDEFPTR PTR(31); /* DEFLIST POINTER @Y30LB11*/ 00375400 DCL SCDDSTRU PTR(31); /* DARGLIST POINTER @Y30LB11*/ 00375500 /* DARGLIST WITH UP TO 3 INSERTS @Y30LB11*/ 00377300 DCL SCDARG CHAR(LENGTH(DARGLIST)+2*(LENGTH(DARGARY))); /*@Y30LB11*/ 00377700 00378200 DCL 1 SCINPUT BIT(8), /* PARAMETER LIST @Y30LB11*/ 00379100 2 SCERRFLG BIT(1), /* RETURNED FLAG @Y30LB11*/ 00380000 2 * BIT(7); /* UNUSED @Y30LB11*/ 00390000 00390100 /* CONSTANT SECTION DECLARATIONS FOR SCRCOPY @Y30LB11*/ 00390200 00390300 DCL 1 SCBLANKS CHAR(30) STATIC LOCAL,/* BLANK FIELD @Y30LB11*/ 00391700 2 * (30) CHAR(1) INIT((30)'40'X); /*@Y30LB11*/ 00393700 00395200 DCL SCCSN2# FIXED(15) CONSTANT(1);/* CSN2 INSERT @Y30LB11*/ 00395600 DCL SCDATE# FIXED(15) CONSTANT(2);/* DATE INSERT @Y30LB11*/ 00395800 DCL SCECBLEN FIXED(15) CONSTANT(4);/* ECB LENGTH @Y30LB11*/ 00395900 DCL SCNOCSNS BIT(8) CONSTANT('23'X);/* NEITHER CSN FOUND @Y30LB11*/ 00396200 DCL SCNOCSN1 BIT(8) CONSTANT('26'X);/* CSN1 NOT FOUND @Y30LB11*/ 00396400 DCL SCNOCSN2 BIT(8) CONSTANT('2A'X);/* CSN2 NOT FOUND @Y30LB11*/ 00396500 DCL SCCOMMSG CHAR(3) CONSTANT('CM0');/* STATIC TEST MOD @Y30LB11*/ 00396900 DCL SCM0088I PTR(8) CONSTANT(18);/* CARTS SCRATCHED @Y30LB11*/ 00397300 DCL SCM0098I PTR(8) CONSTANT(2);/* LOCATION OF VOLUME @Y30LB11*/ 00397700 DCL SCM2076I PTR(8) CONSTANT(30);/* CART NOT SCRATCHED @Y30LB11*/ 00398100 DCL SCM2087I PTR(8) CONSTANT(19);/* CARTS NOT IN LIBRARY @Y30LB11*/ 00398500 @EJECT; /*@Y30LB11*/ 00398600 00398700 /* TRACE AT ENTRY TO SCRCOPY PROCEDURE @Y30LB11*/ 00400700 00401100 UTRACE='SCSC'; /*@Y30LB11*/ 00401500 00401900 /* INITIALIZATION CONSISTS OF ZEROING THE RETURN CODE, ZEROING 00402800 THE DEFLIST, AND THE PRINT ARGUMENT LIST. @Y30LB11*/ 00403200 00405800 SCRCOND=0; /*@Y30LB11*/ 00407200 00412600 SCDDSTRU=ADDR(SCDARG); /*@Y30LB11*/ 00412700 SCDEFPTR=ADDR(SCDEFLST); /*@Y30LB11*/ 00413100 SCDEFLST=NULLAREA; /*@Y30LB11*/ 00413500 SCDARG=NULLAREA; /*@Y30LB11*/ 00413600 SCDDSTRU->DARGSMOD=SCCOMMSG;/* COMMON MESSAGE MODULE @Y30LB11*/ 00413700 00414000 /* INDICATE AN INACTIVE VOLUME IS TO BE SCRATCHED AND PICK 00414100 UP THE CSN1 FROM THE COPY RECORD. @Y30LB11*/ 00415600 00418000 SCDEFPTR->DEFVELTR=ON; /*@Y30LB11*/ 00419700 SCDEFPTR->DEFVCSN1=COPCSN1; /*@Y30LB11*/ 00421200 00423000 /* FULL REGION DUMP BEFORE EXECUTING THE ICBDEFV MACRO. @Y30LB11*/ 00423400 00423800 UDUMP(GDTTBL,'SCDF'); /*@Y30LB11*/ 00423900 00424000 /* THE USSC MACRO IS ISSUED TO EXECUTE THE ICBDEFV MACRO @Y30LB11 00424200 TO SCRATCH THE COPY. @Y30LB11*/ 00425700 00427200 USSC(GDTTBL,DEFINE,SCDEFPTR,SCMSGCD,SCECBCD,SCMSGPTR); /*@Y30LB11*/ 00428700 USAVERC; /*@Y30LB11*/ 00430200 00431700 @EJECT; /*@Y30LB11*/ 00432800 /* A RETURN CODE OF 0 OR 12 INDICATES THAT THE MACRO WAS EXECUTED 00433200 SUCCESSFULLY. @Y30LB11*/ 00434700 00436200 IF TESTRC=RCOK|TESTRC=RCVVIERR THEN /*@Y30LB11*/ 00437700 DO; /*@Y30LB11*/ 00439200 00440700 /* IF A RETURN CODE OF 12 IS PASSED, SCERRFLG IS SET ON 00442200 TO INDICATE THAT THE INVENTORY RECORD WAS NOT UPDATED. 00443700 @Y30LB11*/ 00445200 00446700 IF TESTRC=RCVVIERR THEN /*@Y30LB11*/ 00448200 SCERRFLG=ON; /*@Y30LB11*/ 00449700 00451200 /* THE MESSAGE: CARTRIDGES CSN (CSN) SCRATCHED FOR COPY YYDDD, 00452700 IS ISSUED. @Y30LB11*/ 00454200 00455700 SCCMPTR=SCMSGPTR+SCECBLEN; /*@Y30LB11*/ 00457200 SCDDSTRU->DARGSENT=SCM0088I; /*@Y30LB11*/ 00458700 SCDDSTRU->DARGDBP=ADDR(SCCMPTR->CMCSN1); /*@Y30LB11*/ 00460200 SCDDSTRU->DARGILP=LENGTH(CMCSN1); /*@Y30LB11*/ 00461700 SCDDSTRU->DARGCNT=2; /*@Y30LB11*/ 00463200 SCDDSTRU->DARGINS(1)=SCCSN2#; /*@Y30LB11*/ 00464700 SCDDSTRU->DARGINL(1)=LENGTH(CMCSN2); /*@Y30LB11*/ 00467700 SCDDSTRU->DARGDTM(1)=ADDR(SCCMPTR->CMCSN2); /*@Y30LB11*/ 00469200 SCDDSTRU->DARGINS(2)=SCDATE#; /*@Y30LB11*/ 00470700 SCDDSTRU->DARGINL(2)=LENGTH(COPDATE); /*@Y30LB11*/ 00472200 SCDDSTRU->DARGDTM(2)=ADDR(COPDATE); /*@Y30LB11*/ 00473700 UPRINT(GDTTBL,PRTFILE,SCDDSTRU); /*@Y30LB11*/ 00475200 00476700 /* BECAUSE THE MESSAGE AREA POINTER IS SET, AND THE ICBDEFV 00478200 MACRO IS SUCCESSFUL, THE UFSPACE IS ISSUED TO FREE THE 00479700 ECB/MESSAGE AREA GOTTEN BY THE ICBDEFV MACRO. @Y30LB11*/ 00481200 00482700 UFSPACE(GDTTBL,SCMSGPTR); /*@Y30LB11*/ 00484200 END; /*@Y30LB11*/ 00485700 00487200 @EJECT; /*@Y30LB11*/ 00487600 /* A RETURN CODE OF 4 OR 8 INDICATES THAT THE MACRO WAS NOT 00489200 EXECUTED SUCCESSFULLY. @Y30LB11*/ 00491200 00493200 ELSE /*@Y30LB11*/ 00495500 DO; /*@Y30LB11*/ 00495600 00498900 /* A RETURN CODE OF 8 FROM THE ICBDEFV MACRO INDICATES 00500900 THAT NO CORE WAS AVAILABLE FOR THE ECB/MESSAGE AREA. 00501300 THE MESSAGE: ** CART CSN (CSN) NOT SCRATCHED COPY 00501700 YYDDD, IS ISSUED AND THE RETURN CODE IS SET TO 8. 00502100 @Y30LB11*/ 00502200 00502300 IF TESTRC=RCNOCOR THEN /*@Y30LB11*/ 00502400 DO; /*@Y30LB11*/ 00505700 SCDDSTRU->DARGSENT=SCM2087I; /*@Y30LB11*/ 00507700 SCDDSTRU->DARGDBP=ADDR(COPCSN1); /*@Y30LB11*/ 00525700 SCDDSTRU->DARGILP=LENGTH(COPCSN1); /*@Y30LB11*/ 00526500 SCDDSTRU->DARGCNT=2; /*@Y30LB11*/ 00527700 SCDDSTRU->DARGINS(1)=SCCSN2#; /*@Y30LB11*/ 00529700 SCDDSTRU->DARGINL(1)=LENGTH(COPCSN2); /*@Y30LB11*/ 00531700 SCDDSTRU->DARGDTM(1)=ADDR(COPCSN2); /*@Y30LB11*/ 00533700 SCDDSTRU->DARGINS(2)=SCDATE#; /*@Y30LB11*/ 00534100 SCDDSTRU->DARGINL(2)=LENGTH(COPDATE); /*@Y30LB11*/ 00534500 SCDDSTRU->DARGDTM(2)=ADDR(COPDATE); /*@Y30LB11*/ 00534900 UPRINT(GDTTBL,PRTFILE,SCDDSTRU); /*@Y30LB11*/ 00537400 00540600 /* SET THE RETURN CODE TO 8 INDICATING THAT THE USSC 00542600 UMACRO COULD NOT OBTAIN STORAGE FOR THE ECB/MESSAGE 00543400 AREA. @Y30LB11*/ 00543800 00544200 SCRCOND=RCNOCOR; /*@Y30LB11*/ 00544500 END; /*@Y30LB11*/ 00547700 00550900 /* A RETURN CODE OF 4 INDICATES THAT THE ICBDEFV MACRO WAS 00554100 EXECUTED, BUT FAILED. @Y30LB11*/ 00557300 00560500 ELSE /*@Y30LB11*/ 00563700 DO; /*@Y30LB11*/ 00566900 00570100 /* THE SSCMSG ROUTINE IS CALLED TO PRINT COMMON MESSAGES 00573300 FROM IDCTSSS0 AND IDCTSSS1 AS DIRECTED BY THE REASON 00583300 CODE PASSED BACK FROM THE ICBDEFV MACRO. @Y30LB11*/ 00583400 00583500 CALL SSCMSG(SCMSGCD); /*@Y30LB11*/ 00603400 00623300 /* IF EITHER OR BOTH CARTRIDGES ARE NOT IN THE MSF 00625300 A MESSAGE INDICATING THAT SITUATION IS PRINTED. @Y30LB11*/ 00627300 00629300 IF SCMSGCD=SCNOCSN1 | /*@Y30LB11*/ 00633300 SCMSGCD=SCNOCSN2 | /*@Y30LB11*/ 00635300 SCMSGCD=SCNOCSNS THEN /*@Y30LB11*/ 00637300 DO; /*@Y30LB11*/ 00639300 00641300 /* SET UP TO ISSUE MESSAGE THAT CARTS ARE OUT 00641700 . OF THE MSF. @Y30LB11*/ 00641800 00641900 SCDDSTRU->DARGSENT=SCM2076I; /*@Y30LB11*/ 00642900 00643100 /* INSERT COPYDATE FROM COPY RECORD @Y30LB11*/ 00643300 00643400 SCDDSTRU->DARGINS(1)=SCDATE#; /*@Y30LB11*/ 00649200 SCDDSTRU->DARGINL(1)=LENGTH(COPDATE); /*@Y30LB11*/ 00656600 SCDDSTRU->DARGDTM(1)=ADDR(COPDATE); /*@Y30LB11*/ 00658600 00660600 /* IF 2 CARTS OUT OF LIBRARY, INSERT 2 CSNS @Y30LB11*/ 00661100 00661900 IF SCMSGCD=SCNOCSNS THEN 00662800 DO; /*@Y30LB11*/ 00662900 SCDDSTRU->DARGDBP=ADDR(COPCSN1); /*@Y30LB11*/ 00663400 SCDDSTRU->DARGILP=LENGTH(COPCSN1); /*@Y30LB11*/ 00663800 SCDDSTRU->DARGCNT=2; /*@Y30LB11*/ 00664000 SCDDSTRU->DARGINS(2)=SCCSN2#; /*@Y30LB11*/ 00664100 SCDDSTRU->DARGINL(2)=LENGTH(COPCSN2); /*@Y30LB11*/ 00664300 SCDDSTRU->DARGDTM(2)=ADDR(COPCSN2); /*@Y30LB11*/ 00664400 END; /*@Y30LB11*/ 00664500 00667200 /* IF CSN1 OUT OF LIBRARY, INSERT CSN1 @Y30LB11*/ 00667400 00667500 IF SCMSGCD=SCNOCSN1 THEN 00667600 DO; /*@Y30LB11*/ 00668000 SCDDSTRU->DARGDBP=ADDR(COPCSN1); /*@Y30LB11*/ 00668100 SCDDSTRU->DARGILP=LENGTH(COPCSN1); /*@Y30LB11*/ 00668200 SCDDSTRU->DARGCNT=1; /*@Y30LB11*/ 00668300 END; /*@Y30LB11*/ 00669000 00669300 /* IF CSN2 OUT OF LIBRARY, INSERT CSN2 @Y30LB11*/ 00669700 00670100 IF SCMSGCD=SCNOCSN2 THEN 00670200 DO; /*@Y30LB11*/ 00670300 SCDDSTRU->DARGDBP=ADDR(COPCSN2); /*@Y30LB11*/ 00670700 SCDDSTRU->DARGILP=LENGTH(COPCSN2); /*@Y30LB11*/ 00671100 SCDDSTRU->DARGCNT=1; /*@Y30LB11*/ 00678000 END; /*@Y30LB11*/ 00706000 00712900 /* ISSUE THE UPRINT MACRO TO PRINT THE MESSAGE */ 00713300 /*@Y30LB11*/ 00713700 00714100 UPRINT(GDTTBL,PRTFILE,SCDDSTRU); /*@Y30LB11*/ 00714900 00715000 /* IF THE LOCATION OF THE VOLUME HAS BEEN DETERMINED 00715200 THE MESSAGE: ** LOCATION OF VOLUME: (LOCATION), IS 00717500 ISSUED. @Y30LB11*/ 00719800 00722100 IF COPDEST^=SCBLANKS THEN /*@Y30LB11*/ 00724400 DO; /*@Y30LB11*/ 00726700 SCDARG=NULLAREA; /*@Y30LB11*/ 00729000 SCDDSTRU->DARGSENT=SCM0098I; /*@Y30LB11*/ 00733600 SCDDSTRU->DARGSMOD=SCCOMMSG; /*@Y30LB11*/ 00735600 SCDDSTRU->DARGDBP=ADDR(COPDEST); /*@Y30LB11*/ 00735900 SCDDSTRU->DARGILP=LENGTH(COPDEST); /*@Y30LB11*/ 00738200 UPRINT(GDTTBL,PRTFILE,SCDDSTRU); /*@Y30LB11*/ 00740500 END; /*@Y30LB11*/ 00742800 END; /*@Y30LB11*/ 00758900 00760100 /* A RETURN CODE OF 4 FROM THE ICBDEFV MACRO INDICATES 00762900 THAT THE ICBDEFV MACRO FAILED. A MESSAGE INDICATING 00763300 THAT COPY VOLUMES WERE NOT SCRATCHED, IS PRINTED. @Y30LB11*/ 00763700 00764100 ELSE 00765300 DO; /*@Y30LB11*/ 00766500 SCDDSTRU->DARGSENT=SCM2087I; /*@Y30LB11*/ 00767700 SCDDSTRU->DARGDBP=ADDR(COPCSN1); /*@Y30LB11*/ 00768900 SCDDSTRU->DARGILP=LENGTH(COPCSN1); /*@Y30LB11*/ 00770100 SCDDSTRU->DARGCNT=2; /*@Y30LB11*/ 00771300 SCDDSTRU->DARGINS(1)=SCCSN2#; /*@Y30LB11*/ 00772500 SCDDSTRU->DARGINL(1)=LENGTH(COPCSN2); /*@Y30LB11*/ 00774100 SCDDSTRU->DARGDTM(1)=ADDR(COPCSN2); /*@Y30LB11*/ 00774500 SCDDSTRU->DARGINS(2)=SCDATE#; /*@Y30LB11*/ 00774900 SCDDSTRU->DARGINL(2)=LENGTH(COPDATE); /*@Y30LB11*/ 00775000 SCDDSTRU->DARGDTM(2)=ADDR(COPDATE); /*@Y30LB11*/ 00775100 UPRINT(GDTTBL,PRTFILE,SCDDSTRU); /*@Y30LB11*/ 00778300 END; /*@Y30LB11*/ 00781300 00785500 /* INDICATE THAT SCRCOPY FAILED WITH A RETURN CODE OF 4. */ 00787500 /*@Y30LB11*/ 00790000 00790100 SCRCOND=RCFAIL; /*@Y30LB11*/ 00790200 END; /*@Y30LB11*/ 00792200 END; /*@Y30LB11*/ 00794400 00798600 /* RETURN TO SCRCOPY CALLER @Y30LB11*/ 00802800 00807000 RETURN CODE(SCRCOND); /*@Y30LB11*/ 00811200 END SCRCOPY; /*@Y30LB11*/ 00861200