Action unknown: copypageplugin__copy
cdc:nos2.source:opl.opl871:deck:sxdest
Deck SXDEST
Library Member Format: MODIFY
Listing Sections
- Deck SXDEST Start
- Deck SXDEST Part 1 (Line 1975)
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M00S00001.sxdest +++|PROC DS$$DOC; 00002 M00S00002.sxdest +++| 00003 M00S00003.sxdest +++|# TITLE DS$$DOC - DESIGN DOCUMENTATION FOR THE DESTAGE PROCESS. # 00004 M00S00004.sxdest +++| 00005 M00S00005.sxdest +++| BEGIN # DS$$DOC # 00006 M00S00006.sxdest +++| 00007 M00S00007.sxdest +++|# 00008 M00S00008.sxdest +++|* D E S T A G I N G O V E R V I E W 00009 M00S00009.sxdest +++|* 00010 M00S00010.sxdest +++|* *SSMOVE* CREATES A FILE CALLED *MVOCOM* (UI = 377760B) WHICH HAS 00011 M00S00011.sxdest +++|* AN ENTRY FOR EACH FILE TO BE DESTAGED OR DESTAGED AND RELEASED. 00012 M00S00012.sxdest +++|* *SSMOVE* ISSUES A *UCP* CALL TO *SSEXEC* TO INDICATE THAT 00013 M00S00013.sxdest +++|* DESTAGING IS TO BE DONE. THE *UCP* REQUEST PROCESSOR *TYP2RP* 00014 M00S00014.sxdest +++|* CALLS *DSSETUP* TO PREPARE FOR FILE DESTAGING. 00015 M00S00015.sxdest +++|* 00016 M00S00016.sxdest +++|* *DSSETUP* COPIES THE DESTAGING ENTRIES (*TDAM* ENTRIES) FROM THE 00017 M00S00017.sxdest +++|* FILE PREPARED BY *SSMOVE* TO EIGHT SCRATCH FILES, ONE PER 00018 M00S00018.sxdest +++|* SUBFAMILY. WHILE DOING THIS COPY, IT CALCULATES THE NUMBER OF AU 00019 M00S00019.sxdest +++|* REQUIRED TO HOLD THE FILES TO BE DESTAGED. THESE REQUIREMENTS 00020 M00S00020.sxdest +++|* ARE USED BY THE ALLOCATOR (*DSALLO*) TO SELECT THE BEST STORAGE 00021 M00S00021.sxdest +++|* MODULE AND CARTRIDGE FOR THE SET OF FILES IN ATTEMPTING TO 00022 M00S00022.sxdest +++|* SATISFY THE DUAL OBJECTIVES OF AVOIDING CARTRIDGE OVERFLOW AND 00023 M00S00023.sxdest +++|* REDUCING CARTRIDGE ACCESS TIME BY PLACING MANY FILES ON THE SAME 00024 M00S00024.sxdest +++|* CARTRIDGE. 00025 M00S00025.sxdest +++|* 00026 M00S00026.sxdest +++|* WHEN THE EIGHT SCRATCH FILES ARE PREPARED, THE FILE FROM *SSMOVE* 00027 M00S00027.sxdest +++|* IS REWOUND AND IS READY TO BE USED TO REPORT BACK TO *SSMOVE* THE 00028 M00S00028.sxdest +++|* IDENTITY OF ALL FILES WHICH COULD NOT BE DESTAGED. THE REASON 00029 M00S00029.sxdest +++|* FOR EACH SUCH FAILURE IS ALSO SUPPLIED. THE VARIABLE *DSC$INIT* 00030 M00S00030.sxdest +++|* IS SET NON-ZERO TO SIGNAL THE MAIN LOOP THAT DESTAGING IS TO BE 00031 M00S00031.sxdest +++|* INITIATED. *MAINLP* CALLS *NEWWORK* WHICH GETS AN *HLRQ* ENTRY 00032 M00S00032.sxdest +++|* AND THEN CALLS *DSNTDAM* TO SELECT A SUBFAMILY AND FILE TO START 00033 M00S00033.sxdest +++|* DESTAGING. 00034 M00S00034.sxdest +++|* 00035 M00S00035.sxdest +++|* IT SHOULD BE NOTED THAT THE STAGING PROCESS CAN PRE-EMPT THE 00036 M00S00036.sxdest +++|* CARTRIDGE OR *HLRQ* ENTRY USED FOR DESTAGING BY SETTING THE 00037 M00S00037.sxdest +++|* *DOSTG* FLAG IN THE *HLRQ* ENTRY. WHEN DESTAGER IS DONE WITH THE 00038 M00S00038.sxdest +++|* CURRENT CARTRIDGE (EXCEPT IN A CARTRIDGE OVERFLOW CONDITION), IT 00039 M00S00039.sxdest +++|* WILL CALL *STNTDAM* TO SELECT A FILE TO BE STAGED FROM THE 00040 M00S00040.sxdest +++|* CURRENT CARTRIDGE USING THE CURRENT *HLRQ* ENTRY. WHEN THIS 00041 M00S00041.sxdest +++|* OCCURS, THE *DSC$INIT* FLAG IS AGAIN SET NON-ZERO TO CAUSE THE 00042 M00S00042.sxdest +++|* DESTAGING PROCESS TO BE RE-INITIATED. 00043 M00S00043.sxdest +++|# 00044 M00S00044.sxdest +++| 00045 M00S00045.sxdest +++| CONTROL EJECT; 00046 M00S00046.sxdest +++| 00047 M00S00047.sxdest +++|# 00048 M00S00048.sxdest +++|* M A J O R R O U T I N E S I N D E S T A G I N G 00049 M00S00049.sxdest +++|* 00050 M00S00050.sxdest +++|* 1) DSSETUP IS CALLED BY *TYP2RP* WHEN *SSMOVE* MAKES A *UCP* 00051 M00S00051.sxdest +++|* REQUEST TO *SSEXEC*. IT COPIES THE *TDAM* ENTRIES FOR FILES TO 00052 M00S00052.sxdest +++|* BE DESTAGED FROM THE *MVOCOM* FILE TO EIGHT SCRATCH FILES, ONE 00053 M00S00053.sxdest +++|* PER SUBFAMILY. 00054 M00S00054.sxdest +++|* 00055 M00S00055.sxdest +++|* 2) DESTAGR IS CALLED BY THE *HLRQ* MONITOR TO DESTAGE A FILE. 00056 M00S00056.sxdest +++|* IT CALLS PROCEDURES 3 AND 5-8 BELOW TO ASSIST IT IN THIS PROCESS. 00057 M00S00057.sxdest +++|* WHEN A FILE HAS BEEN DESTAGED, IT CALLS *DSNTDAM* TO UPDATE THE 00058 M00S00058.sxdest +++|* *HLRQ* ENTRY TO REFLECT THE NEXT FILE TO BE DESTAGED. 00059 M00S00059.sxdest +++|* 00060 M00S00060.sxdest +++|* 3) DSALLO IS CALLED BY *DESTAGR* TO SELECT A STORAGE MODULE 00061 M00S00061.sxdest +++|* AND CARTRIDGE FOR A FILE AND ALSO ASSIGN SOME UNUSED SPACE TO THE 00062 M00S00062.sxdest +++|* FILE BEING DESTAGED. 00063 M00S00063.sxdest +++|* 00064 M00S00064.sxdest +++|* 4) ANLZAST IS A HELPER ROUTINE TO *DSALLO* TO IDENTIFY THE 00065 M00S00065.sxdest +++|* BEST CARTRIDGE FOR A SHORT FILE AND THE BEST CARTRIDGE OR 00066 M00S00066.sxdest +++|* CARTRIDGE GROUP FOR A LONG FILE. 00067 M00S00067.sxdest +++|* 00068 M00S00068.sxdest +++|* 5) HLLOAD IS CALLED BY *DESTAGR* TO INTERFACE WITH THE DRIVER 00069 M00S00069.sxdest +++|* TO CAUSE A CARTRIDGE TO BE MADE AVAILABLE FOR I/O. 00070 M00S00070.sxdest +++|* 00071 M00S00071.sxdest +++|* 6) HLCPYDC IS CALLED BY *DESTAGR* TO COPY SOME FILE DATA FROM 00072 M00S00072.sxdest +++|* DISK TO THE CURRENTLY ASSIGNED M860 VOLUME. 00073 M00S00073.sxdest +++|* 00074 M00S00074.sxdest +++|* 7) HLUNLD IS CALLED BY *DESTAGR* TO INTERFACE WITH THE DRIVER 00075 M00S00075.sxdest +++|* TO UNLOAD A CARTRIDGE WHICH IS NO LONGER NEEDED. 00076 M00S00076.sxdest +++|* 00077 M00S00077.sxdest +++|* 8) RLSVOL IS CALLED BY *DESTAGR* AND *HLCPYDC* (AND OTHER 00078 M00S00078.sxdest +++|* PROCEDURES) TO RELEASE ANY UNUSED AU BY RETURNING THEM TO THE 00079 M00S00079.sxdest +++|* CHAIN OF AVAILABLE AU ON THE CURRENT CARTRIDGE. 00080 M00S00080.sxdest +++|* 00081 M00S00081.sxdest +++|* 9) DSNTDAM IS CALLED BY *DESTAGR* AND *NEWWORK* WHEN AN *HLRQ* 00082 M00S00082.sxdest +++|* ENTRY IS AVAILABLE FOR USE IN DESTAGING A FILE. *DSNTDAM* ISSUES 00083 M00S00083.sxdest +++|* ANY APPROPRIATE MESSAGES ABOUT THE STATUS OF THE FILE JUST 00084 M00S00084.sxdest +++|* DESTAGED AND SELECTS THE NEXT FILE TO BE DESTAGED, TRYING TO PICK 00085 M00S00085.sxdest +++|* ONE WHICH WILL FIT ON THE CURRENTLY LOADED CARTRIDGE. 00086 M00S00086.sxdest +++|* 00087 M00S00087.sxdest +++|* 10) LLRQXXX REPRESENT SEVERAL LOW LEVEL REQUEST MODULES WHICH 00088 M00S00088.sxdest +++|* ARE CALLED BY THE *HLXXXXX* ROUTINES AS NEEDED TO PERFORM 00089 M00S00089.sxdest +++|* CARTRIDGE LOADS, UNLOADS, AND COPIES FROM DISK TO CARTRIDGE. 00090 M00S00090.sxdest +++|# 00091 M00S00091.sxdest +++| 00092 M00S00092.sxdest +++| CONTROL EJECT; 00093 M00S00093.sxdest +++| 00094 M00S00094.sxdest +++|# 00095 M00S00095.sxdest +++|* D E S T A G E O V E R V I E W ( D E T A I L E D ) 00096 M00S00096.sxdest +++|* 00097 M00S00097.sxdest +++|* INPUT TO THE TOTAL DESTAGE PROCESS IS PREPARED BY THE *SSMOVE* 00098 M00S00098.sxdest +++|* UTILITY AND CONSISTS OF ONE FILE WHICH CONTAINS AN ENTRY FOR EACH 00099 M00S00099.sxdest +++|* FILE WHICH IS TO BE DESTAGED. THESE ENTRIES HAVE BEEN ORDERED BY 00100 M00S00100.sxdest +++|* *SSMOVE* TO ASSIST IN REDUCING THE NUMBER OF CARTRIDGE ACCESSES 00101 M00S00101.sxdest +++|* NEEDED TO DESTAGE ALL THE FILES. THE FIRST SET OF ENTRIES IS FOR 00102 M00S00102.sxdest +++|* SUBFAMILY 0, SUBFAMILY 1, ... THROUGH SUBFAMILY 7. WITHIN EACH 00103 M00S00103.sxdest +++|* SUBFAMILY, ENTRIES ARE ORDERED SUCH THAT ALL SHORT FILES OCCUR 00104 M00S00104.sxdest +++|* FIRST AND ALL LONG FILES OCCUR AFTERWARDS. WITHIN THE LIST OF 00105 M00S00105.sxdest +++|* SHORT FILES AND LONG FILES, INDIVIDUAL FILES ARE ORDERED BY 00106 M00S00106.sxdest +++|* DECREASING FILE LENGTH. THE *SSMOVE* UTILITY DECLARES A FILE TO 00107 M00S00107.sxdest +++|* BE SHORT IF ITS LENGTH IS LESS THAN A SITE SPECIFIED VALUE. 00108 M00S00108.sxdest +++|* 00109 M00S00109.sxdest +++|* BY DEFINITION, SHORT FILES ONLY RESIDE ON ONE CARTRIDGE. IF A 00110 M00S00110.sxdest +++|* SHORT FILE IS ENCOUNTERED WHICH DOES NOT FIT ON ONE CARTRIDGE, 00111 M00S00111.sxdest +++|* THE ATTEMPT TO DESTAGE IT IS ABANDONED DUE TO LACK OF SPACE AND 00112 M00S00112.sxdest +++|* DESTAGING CONTINUES WITH THE NEXT FILE. TO REDUCE STAGING DELAYS 00113 M00S00113.sxdest +++|* DUE TO CARTRIDGE POSITIONING TIME, SHORT FILES ARE STORED AT THE 00114 M00S00114.sxdest +++|* FRONT OF A CARTRIDGE. A CARTRIDGE DIVISION POINT PARAMETER TO 00115 M00S00115.sxdest +++|* *SSLABEL* DETERMINES THE END OF THE SHORT FILE AREA. 00116 M00S00116.sxdest +++|* 00117 M00S00117.sxdest +++|* LONG FILES ARE ALLOWED TO OVERFLOW FROM ONE CARTRIDGE TO ANOTHER 00118 M00S00118.sxdest +++|* WITHIN A GROUP OF UP TO 16 CARTRIDGES, ALTHOUGH THE DESTAGER 00119 M00S00119.sxdest +++|* ATTEMPTS TO AVOID OR REDUCE CARTRIDGE OVERFLOW AS MUCH AS 00120 M00S00120.sxdest +++|* POSSIBLE. IF A LONG FILE DOES NOT FIT ON ANY GROUP OF 00121 M00S00121.sxdest +++|* CARTRIDGES, THE ATTEMPT TO DESTAGE IT IS ABANDONED DUE TO LACK OF 00122 M00S00122.sxdest +++|* AVAILABLE SPACE. 00123 M00S00123.sxdest +++|* 00124 M00S00124.sxdest +++|* IF THE FIRST FILE OF THE SEQUENCE OF FILES FOR A SUBFAMILY IS A 00125 M00S00125.sxdest +++|* SHORT FILE, THE ALLOCATOR SELECTS A CARTRIDGE WHICH WILL 00126 M00S00126.sxdest +++|* DEFINITELY HOLD THE FIRST SHORT FILE AND HOPEFULLY WILL HOLD ALL 00127 M00S00127.sxdest +++|* THE SHORT FILES. IF THIS IS POSSIBLE, THE ALLOCATOR WILL FURTHER 00128 M00S00128.sxdest +++|* PICK THE CARTRIDGE WHICH IS ABLE TO HOLD THE MOST LONG FILES. 00129 M00S00129.sxdest +++|* AFTER A CARTRIDGE HAS BEEN SELECTED AND THE FIRST SHORT FILE HAS 00130 M00S00130.sxdest +++|* BEEN DESTAGED, AS MANY OTHER SHORT FILES AS WILL FIT ON THAT 00131 M00S00131.sxdest +++|* CARTRIDGE ARE DESTAGED, AND THEN AS MANY LONG FILES AS WILL FIT 00132 M00S00132.sxdest +++|* ON THAT CARTRIDGE ARE ALSO DESTAGED. ALL FILES WHICH DO NOT FIT 00133 M00S00133.sxdest +++|* ON THE CURRENT CARTRIDGE ARE DEFERRED FOR SUBSEQUENT DESTAGING TO 00134 M00S00134.sxdest +++|* A DIFFERENT CARTRIDGE. THIS IS DONE BY WRITING THE FILES'S 00135 M00S00135.sxdest +++|* *TDAM* ENTRY TO A SCRATCH FILE. WHEN DESTAGING TO THIS FIRST 00136 M00S00136.sxdest +++|* CARTRIDGE HAS BEEN COMPLETED, THE ABOVE PROCESS IS REPEATED USING 00137 M00S00137.sxdest +++|* THE LIST OF DEFERRED FILES AS INPUT INSTEAD OF THE ORIGINAL LIST 00138 M00S00138.sxdest +++|* OF FILES FROM *SSMOVE*. THIS PROCESS CONTINUES ONE CARTRIDGE AT 00139 M00S00139.sxdest +++|* A TIME UNTIL ALL THE SHORT FILES AND AS MANY LONG FILES AS 00140 M00S00140.sxdest +++|* POSSIBLE HAVE BEEN DESTAGED. 00141 M00S00141.sxdest +++|* 00142 M00S00142.sxdest +++|* WHEN ONLY LONG FILES REMAIN TO BE DESTAGED, THE PROCESS CONTINUES 00143 M00S00143.sxdest +++|* AS DESCRIBED ABOVE. HOWEVER, IF AT ANY TIME, THE FIRST FILE ON 00144 M00S00144.sxdest +++|* THE SEQUENCE OF REMAINING FILES WILL NOT FIT ON ONE CARTRIDGE, 00145 M00S00145.sxdest +++|* THEN A GROUP OF CARTRIDGES IS SELECTED AND CARTRIDGES WITHIN THIS 00146 M00S00146.sxdest +++|* GROUP ARE SELECTED ONE AT A TIME UNTIL THE FIRST FILE HAS BEEN 00147 M00S00147.sxdest +++|* COMPLETELY DESTAGED. THE DESTAGE PROCESS THEN CONTINUES BY 00148 M00S00148.sxdest +++|* DESTAGING AS MANY OF THE REMAINING LONG FILES AS POSSIBLE TO THE 00149 M00S00149.sxdest +++|* FINAL CONTINUATION CARTRIDGE AS LONG AS NO FILE HAS TO OVERFLOW 00150 M00S00150.sxdest +++|* TO ANOTHER CARTRIDGE. AGAIN, ANY FILES WHICH DO NOT FIT IN THEIR 00151 M00S00151.sxdest +++|* ENTIRETY ARE DEFERRED FOR DESTAGING TO A SUBSEQUENT CARTRIDGE OR 00152 M00S00152.sxdest +++|* CARTRIDGES BY WRITING THE DESTAGE *TDAM* ENTRY TO A SCRATCH FILE. 00153 M00S00153.sxdest +++|# 00154 M00S00154.sxdest +++| 00155 M00S00155.sxdest +++| CONTROL EJECT; 00156 M00S00156.sxdest +++| 00157 M00S00157.sxdest +++|# 00158 M00S00158.sxdest +++|* D E S T A G E D E T A I L E D F L O W 00159 M00S00159.sxdest +++|* 00160 M00S00160.sxdest +++|* ( N O R M A L C A S E ) 00161 M00S00161.sxdest +++|* 00162 M00S00162.sxdest +++|* THE FOLLOWING SEQUENCE OCCURS WHEN A FILE IS DESTAGED. 00163 M00S00163.sxdest +++|* 00164 M00S00164.sxdest +++|* CASE A) NO CARTRIDGE OVERFLOW. 00165 M00S00165.sxdest +++|* 00166 M00S00166.sxdest +++|* PROCEDURE *DSNTDAM* SELECTS THE SUBFAMILY FOR WHICH FILE 00167 M00S00167.sxdest +++|* DESTAGING IS TO OCCUR. IT THEN SELECTS THE FIRST FILE ON THE 00168 M00S00168.sxdest +++|* LIST OF FILES SUBMITTED BY *SSMOVE*. IF SHORT FILES ARE TO BE 00169 M00S00169.sxdest +++|* DESTAGED, THIS FIRST FILE IS THE LONGEST OF THE SHORT FILES. IF 00170 M00S00170.sxdest +++|* ONLY LONG FILES ARE TO BE DESTAGED, THIS FILE IS THE LONGEST OF 00171 M00S00171.sxdest +++|* THE LONG FILES. 00172 M00S00172.sxdest +++|* 00173 M00S00173.sxdest +++|* PROCEDURE *DSALLO* IS CALLED BY *DESTAGR* TO ALLOCATE SOME 00174 M00S00174.sxdest +++|* CARTRIDGE SPACE FOR THE FILE DATA. SINCE THIS IS THE INITIAL 00175 M00S00175.sxdest +++|* ALLOCATION CALL, IT FIRST SELECTS A STORAGE MODULE THAT CAN BE 00176 M00S00176.sxdest +++|* USED, READS IN THE *AST* FOR THIS STORAGE MODULE, PICKS A 00177 M00S00177.sxdest +++|* CARTRIDGE (OR, IF OVERFLOW IS ANTICIPATED, A GROUP OF CARTRIDGES 00178 M00S00178.sxdest +++|* AND THE INITIAL CARTRIDGE TO BE USED WITHIN THIS GROUP), READS IN 00179 M00S00179.sxdest +++|* THE *FCT* ENTRY FOR THIS CARTRIDGE AND FINALLY ALLOCATES A 00180 M00S00180.sxdest +++|* SEQUENCE OF ALLOCATION UNITS TO BE USED FOR THE FILE DATA. THIS 00181 M00S00181.sxdest +++|* SEQUENCE IS CALLED A VOLUME. 00182 M00S00182.sxdest +++|* 00183 M00S00183.sxdest +++|* THE DESTAGER THEN CALLS *HLLOAD* TO LOAD THE CARTRIDGE SO IT CAN 00184 M00S00184.sxdest +++|* BE ACCESSED AND MAKES A CALL TO *PFM* TO OBTAIN ACCESS TO THE 00185 M00S00185.sxdest +++|* FILE DATA. IT THEN CALLS *HLCPYDC* TO COPY SOME FILE DATA FROM 00186 M00S00186.sxdest +++|* DISK TO THE CARTRIDGE. IF THE ENTIRE FILE IS NOT YET COPIED TO 00187 M00S00187.sxdest +++|* THE CARTRIDGE, CALLS TO ALLOCATE MORE SPACE AND COPY MORE DATA 00188 M00S00188.sxdest +++|* ARE MADE UNTIL THE FILE IS COPIED TO THE CARTRIDGE. AS EACH 00189 M00S00189.sxdest +++|* VOLUME IS COPIED TO THE CARTRIDGE, THE *FCT* ENTRY IS UPDATED IN 00190 M00S00190.sxdest +++|* MEMORY TO REFLECT THE SEQUENCE OF ALLOCATION UNITS THAT ARE USED 00191 M00S00191.sxdest +++|* TO STORE THE FILE DATA. UPON COMPLETION OF THIS ALLOCATE/COPY 00192 M00S00192.sxdest +++|* SEQUENCE, *PFM* IS AGAIN CALLED TO UPDATE THE FILE'S *PFC* ENTRY 00193 M00S00193.sxdest +++|* TO REFLECT THE LOCATION OF THE FILE DATA ON THE ALLOCATED 00194 M00S00194.sxdest +++|* CARTRIDGE. IF DISK SPACE IS TO BE RELEASED, ANOTHER CALL TO 00195 M00S00195.sxdest +++|* *PFM* IS MADE TO ACHIEVE THIS. 00196 M00S00196.sxdest +++|* 00197 M00S00197.sxdest +++|* CASE B) ADDITIONAL FILES ON THE SAME CARTRIDGE. 00198 M00S00198.sxdest +++|* 00199 M00S00199.sxdest +++|* UPON COMPLETION OF THE DESTAGE PROCESS FOR THE FIRST FILE, 00200 M00S00200.sxdest +++|* PROCEDURE *DSNTDAM* IS AGAIN CALLED TO SELECT THE NEXT FILE TO BE 00201 M00S00201.sxdest +++|* DESTAGED. IT SELECTS ONE WHICH WILL FIT ON THE CURRENT 00202 M00S00202.sxdest +++|* CARTRIDGE. IF LONGER FILES EXIST, THEIR DESTAGE ENTRIES ARE 00203 M00S00203.sxdest +++|* STORED ON A SCRATCH FILE TO BE PROCESSED LATER WHEN IT BECOMES 00204 M00S00204.sxdest +++|* NECESSARY TO SWITCH TO A DIFFERENT CARTRIDGE. THE DESTAGER 00205 M00S00205.sxdest +++|* ALLOCATES SPACE VIA *DSALLO*, OBTAINS ACCESS TO THE FILE DATA VIA 00206 M00S00206.sxdest +++|* *PFM* AND COPIES THE FILE TO THE CARTRIDGE USING THE 00207 M00S00207.sxdest +++|* ALLOCATE/COPY SEQUENCE DESCRIBED ABOVE. THE FILE'S *PFC* ENTRY 00208 M00S00208.sxdest +++|* IS UPDATED AND THE DISK SPACE RELEASED AS DESCRIBED ABOVE. 00209 M00S00209.sxdest +++|* 00210 M00S00210.sxdest +++|* CASE C) CARTRIDGE OVERFLOW. 00211 M00S00211.sxdest +++|* 00212 M00S00212.sxdest +++|* THIS DESTAGE PROCESS IS SIMILAR TO CASE A), EXCEPT THAT WHEN THE 00213 M00S00213.sxdest +++|* FIRST CARTRIDGE NO LONGER HAS AVAILABLE SPACE, THE ALLOCATOR 00214 M00S00214.sxdest +++|* SELECTS A CONTINUATION CARTRIDGE. THIS SECOND CARTRIDGE MUST BE 00215 M00S00215.sxdest +++|* IN THE SAME GROUP AS THE FIRST. THE LINKAGE INFORMATION FOR THE 00216 M00S00216.sxdest +++|* FIRST CARTRIDGE IS UPDATED TO POINT TO ANOTHER CARTRIDGE WITHOUT 00217 M00S00217.sxdest +++|* IDENTIFYING A SPECIFIC CARTRIDGE OR INITIAL ALLOCATION UNIT. THE 00218 M00S00218.sxdest +++|* *FCT* ENTRY FOR THE FIRST CARTRIDGE IS THEN WRITTEN TO DISK, AND 00219 M00S00219.sxdest +++|* THE *FCT* ENTRY FOR THE SECOND CARTRIDGE IS THEN READ TO MEMORY. 00220 M00S00220.sxdest +++|* AFTER THE FIRST VOLUME ON THE SECOND CARTRIDGE HAS BEEN WRITTEN, 00221 M00S00221.sxdest +++|* THE *FCT* ENTRY FOR THE SECOND CARTRIDGE IS UPDATED TO REFLECT 00222 M00S00222.sxdest +++|* THE NEW VOLUME AND WRITTEN TO DISK. THE *FCT* ENTRY FOR THE 00223 M00S00223.sxdest +++|* FIRST CARTRIDGE IS READ INTO MEMORY, UPDATED TO LINK TO THE 00224 M00S00224.sxdest +++|* INITIAL ALLOCATION UNIT OF THE FIRST VOLUME ON THE SECOND 00225 M00S00225.sxdest +++|* CARTRIDGE AND THEN WRITTEN BACK TO DISK. THE *FCT* ENTRY FOR THE 00226 M00S00226.sxdest +++|* SECOND CARTRIDGE IS THEN READ BACK TO MEMORY. UPON COMPLETION OF 00227 M00S00227.sxdest +++|* THE ALLOCATE/COPY SEQUENCE, THE FILE'S *PFC* ENTRY IS UPDATED AS 00228 M00S00228.sxdest +++|* BEFORE, AND THE DISK SPACE RELEASED IF APPROPRIATE. 00229 M00S00229.sxdest +++|# 00230 M00S00230.sxdest +++| 00231 M00S00231.sxdest +++| CONTROL EJECT; 00232 M00S00232.sxdest +++| 00233 M00S00233.sxdest +++|# 00234 M00S00234.sxdest +++|* D E S T A G E 00235 M00S00235.sxdest +++|* 00236 M00S00236.sxdest +++|* E R R O R C O N D I T I O N S A N D P R O C E S S I N G 00237 M00S00237.sxdest +++|* 00238 M00S00238.sxdest +++|* THE RESULT OF ANY ERROR ENCOUNTERED IN DESTAGING A FILE IS THAT 00239 M00S00239.sxdest +++|* THE ERROR CAN BE OVERCOME (SUCH AS A DELAY CONDITION), OR THE 00240 M00S00240.sxdest +++|* ERROR WILL CAUSE THE DESTAGE TO BE RETRIED, OR THE ERROR WILL 00241 M00S00241.sxdest +++|* CAUSE THE DESTAGE TO BE ABANDONED. FILE DESTAGES WHICH ARE 00242 M00S00242.sxdest +++|* ABANDONED RESULT IN A DAYFILE AND ACCOUNT FILE MESSAGE WITH AN 00243 M00S00243.sxdest +++|* ERROR CODE. IN ADDITION, *SSMOVE* WILL PRODUCE A NON-CODED 00244 M00S00244.sxdest +++|* DESCRIPTION OF THE REASON FOR THE DESTAGE FAILING IF THE *NW* 00245 M00S00245.sxdest +++|* PARAMETER WAS NOT SELECTED. IF A DESTAGE IS TO BE RETRIED, THE 00246 M00S00246.sxdest +++|* DESTAGE REQUEST IS WRITTEN (BY *DSNTDAM*) TO A SCRATCH FILE. 00247 M00S00247.sxdest +++|* AFTER THE CARTRIDGE CURRENTLY IN USE IS SCHEDULED TO BE UNLOADED, 00248 M00S00248.sxdest +++|* THE ENTRIES ON THE SCRATCH FILE ARE RESCHEDULED FOR ANOTHER 00249 M00S00249.sxdest +++|* DESTAGE ATTEMPT. 00250 M00S00250.sxdest +++|* 00251 M00S00251.sxdest +++|* CASE A) NO CARTRIDGE OVERFLOW. 00252 M00S00252.sxdest +++|* 00253 M00S00253.sxdest +++|* 1) *DSALLO* MAKES AN INITIAL ACCESS TO THE SUBFAMILY CATALOG TO 00254 M00S00254.sxdest +++|* DETERMINE WHICH STORAGE MODULE TO USE. IF THE SUBFAMILY CATALOG 00255 M00S00255.sxdest +++|* IS TEMPORARILY NOT AVAILABLE (BECAUSE *PFDUMP* IS DOING A CATALOG 00256 M00S00256.sxdest +++|* BACKUP DUMP) THE DESTAGE ATTEMPT IS DELAYED BY PLACING THE *HLRQ* 00257 M00S00257.sxdest +++|* ENTRY ON THE DELAY CHAIN FOR A FEW SECONDS. THE CATALOG ACCESS 00258 M00S00258.sxdest +++|* REQUEST IS THEN REPEATED UNTIL THE CATALOG CAN BE ACCESSED. THIS 00259 M00S00259.sxdest +++|* TYPE OF CATALOG ACCESS DELAY SHOULD NEVER OCCUR WITH ANY OTHER 00260 M00S00260.sxdest +++|* CATALOG ACCESS REQUEST ISSUED BY THE REST OF THE DESTAGE PROCESS. 00261 M00S00261.sxdest +++|* IF IT DOES, A FATAL ERROR WILL OCCUR. 00262 M00S00262.sxdest +++|* 00263 M00S00263.sxdest +++|* 2) *DSALLO* LOOKS AT THE SUBFAMILY CATALOG PREAMBLE AND THE UNIT 00264 M00S00264.sxdest +++|* DEVICE TABLE (*UDT*) TO IDENTIFY A STORAGE MODULE WHICH IS USABLE 00265 M00S00265.sxdest +++|* AND WHICH ALSO HAS ENOUGH SPACE FOR THE FILE TO BE DESTAGED. IF 00266 M00S00266.sxdest +++|* NO SUCH STORAGE MODULE CAN BE FOUND, THE DESTAGE REQUEST IS 00267 M00S00267.sxdest +++|* ABANDONED. 00268 M00S00268.sxdest +++|* 00269 M00S00269.sxdest +++|* 3) *DSALLO* THEN READS THE *AST* FOR THE SELECTED STORAGE MODULE 00270 M00S00270.sxdest +++|* SO THE BEST CARTRIDGE OR CARTRIDGE GROUP CAN BE IDENTIFIED. IF A 00271 M00S00271.sxdest +++|* READ ERROR OCCURS WHEN READING THE SUBFAMILY CATALOG, THE DESTAGE 00272 M00S00272.sxdest +++|* IS ABANDONED. ANY OTHER CATALOG ACCESS ERROR CONDITION IS FATAL. 00273 M00S00273.sxdest +++|* 00274 M00S00274.sxdest +++|* 4) *DSALLO* THEN EXAMINES THE *AST*. IF THE FILE IS TOO LONG TO 00275 M00S00275.sxdest +++|* FIT ON ANY CARTRIDGE OR GROUP OF CARTRIDGES, THE DESTAGE IS 00276 M00S00276.sxdest +++|* ABANDONED. 00277 M00S00277.sxdest +++|* 00278 M00S00278.sxdest +++|* 5) *DSALLO* THEN READS IN THE *FCT* ENTRY FOR THE SELECTED 00279 M00S00279.sxdest +++|* CARTRIDGE. A CATALOG ACCESS ERROR RESULTS IN THE DESTAGE BEING 00280 M00S00280.sxdest +++|* ABANDONED. ALSO, IF THE *FCT* ENTRY SAYS THAT THE CARTRIDGE IS 00281 M00S00281.sxdest +++|* NOT TO BE USED FOR ANY MORE FILES, THE *AST* AND PREAMBLE ARE 00282 M00S00282.sxdest +++|* UPDATED, AND A NEW CARTRIDGE IS SELECTED. 00283 M00S00283.sxdest +++|* 00284 M00S00284.sxdest +++|* 6) *DSALLO* THEN ALLOCATES A VOLUME CONSISTING OF A SEQUENCE OF 00285 M00S00285.sxdest +++|* AVAILABLE ALLOCATION UNITS. IF NONE EXIST AND THE CARTRIDGE OR 00286 M00S00286.sxdest +++|* GROUP OF CARTRIDGES WAS CHOSEN FOR THIS FILE, THE DESTAGE IS 00287 M00S00287.sxdest +++|* ABANDONED. IF THIS FILE IS BEING DESTAGED BECAUSE IT SHOULD HAVE 00288 M00S00288.sxdest +++|* BEEN ABLE TO FIT ON A PREVIOUSLY SELECTED CARTRIDGE, THE DESTAGE 00289 M00S00289.sxdest +++|* IS RETRIED. THIS ERROR TYPICALLY OCCURS IF A GREATER THAN 00290 M00S00290.sxdest +++|* EXPECTED NUMBER OF STRIPES ARE DEMARKED WHILE PREVIOUS VOLUMES OF 00291 M00S00291.sxdest +++|* THE FILE WERE BEING WRITTEN. 00292 M00S00292.sxdest +++|* 00293 M00S00293.sxdest +++|* 7) *DSTAGR* CALLS *HLLOAD* TO LOAD THE CARTRIDGE SO DATA CAN BE 00294 M00S00294.sxdest +++|* WRITTEN TO IT. IF ANY PROBLEMS OCCUR, THE DESTAGE ATTEMPT IS 00295 M00S00295.sxdest +++|* RETRIED. ALSO, IF THE CARTRIDGE IS LOST OR IS UNUSABLE DUE TO A 00296 M00S00296.sxdest +++|* LABEL PROBLEM, THE APPROPRIATE FLAGS ARE SET IN THE *FCT* AND 00297 M00S00297.sxdest +++|* EVENTUALLY IN THE *AST* AND PREAMBLE FOR THE SUBFAMILY CATALOG. 00298 M00S00298.sxdest +++|* 00299 M00S00299.sxdest +++|* 8) *DSTAGR* THEN CALLS *PFM* TO ACQUIRE ACCESS TO THE FILE DATA. 00300 M00S00300.sxdest +++|* IF THE REQUEST CAN NOT BE PROCESSED IMMEDIATELY BECAUSE THE 00301 M00S00301.sxdest +++|* CATALOG TRACK IS INTERLOCKED, *DESTAGR* PLACES THE *HLRQ* ENTRY 00302 M00S00302.sxdest +++|* ON A DELAY CHAIN FOR A FEW SECONDS AND RETRIES THE CALL UNTIL IT 00303 M00S00303.sxdest +++|* CAN BE PROCESSED. IF A USER OR SYSTEM ACTION SUCH AS A FILE 00304 M00S00304.sxdest +++|* PURGE OR UPDATE HAS OCCURED SUCH THAT THE REASON FOR SELECTING 00305 M00S00305.sxdest +++|* THE FILE TO BE DESTAGED HAS BEEN INVALIDATED, THE DESTAGE REQUEST 00306 M00S00306.sxdest +++|* IS ABANDONED. 00307 M00S00307.sxdest +++|* 00308 M00S00308.sxdest +++|* 9) *DESTAGR* CALLS *HLCPYDC* TO COPY FILE DATA FROM DISK TO THE 00309 M00S00309.sxdest +++|* CARTRIDGE. A DISK READ ERROR RESULTS IN THE DESTAGE BEING 00310 M00S00310.sxdest +++|* ABANDONED. ANY OTHER ERROR CAUSES THE DESTAGE TO BE RETRIED. IF 00311 M00S00311.sxdest +++|* THE ERROR WAS DUE TO AN UNRECOVERABLE WRITE ERROR (STRIPE DEMARK 00312 M00S00312.sxdest +++|* FAILURE) OR DUE TO EXCESSIVE RECOVERED WRITE ERROS (SUCCESSFUL 00313 M00S00313.sxdest +++|* STRIPE DEMARKS) THE AFFECTED AU(S) ARE MARKED AS FLAWED IN THE 00314 M00S00314.sxdest +++|* *FCT* ENTRY AND WILL NO LONGER BE AVAILABLE FOR ALLOCATION. IF A 00315 M00S00315.sxdest +++|* GENERAL HARDWARE PROBLEM OCCURED, THE CARTRIDGE IS ALSO FORCED TO 00316 M00S00316.sxdest +++|* BE UNLOADED SO ANY FURTHER DESTAGES WILL BEGIN WITH THE SELECTION 00317 M00S00317.sxdest +++|* OF A STORAGE MODULE AND THEN A CARTRIDGE. 00318 M00S00318.sxdest +++|* 00319 M00S00319.sxdest +++|* 10) UPON COMPLETION OF THE COPY SEQUENCE, *DESTAGR* MAKES A 00320 M00S00320.sxdest +++|* CATALOG ACCESS REQUEST TO WRITE THE *FCT* ENTRY TO DISK TO 00321 M00S00321.sxdest +++|* PRESERVE THE STATUS OF THE CARTRIDGE SPACE ALLOCATED TO THE FILE. 00322 M00S00322.sxdest +++|* IT THEN CALLS *PFM* TO UPDATE THE FILE'S *PFC* ENTRY TO REFLECT 00323 M00S00323.sxdest +++|* THE LOCATION OF THE DATA ON THE CARTRIDGE AND MAY CALL *PFM* TO 00324 M00S00324.sxdest +++|* RELEASE THE FILE'S DISK SPACE. A CATALOG ACCESS ERROR RESULTS IN 00325 M00S00325.sxdest +++|* THE DESTAGE BEING ABANDONED. A *PFM* ERROR RESPONSE CAN RESULT 00326 M00S00326.sxdest +++|* IN A DELAY OR MAY RESULT IN THE DESTAGE BEING ABANDONED OR THE 00327 M00S00327.sxdest +++|* DISK SPACE RELEASE NOT BEING DONE. 00328 M00S00328.sxdest +++|* 00329 M00S00329.sxdest +++|* 00330 M00S00330.sxdest +++|* C A R T R I D G E O V E R F L O W E R R O R S 00331 M00S00331.sxdest +++|* 00332 M00S00332.sxdest +++|* 11) *DSALLO* CAN ENCOUNTER A CASE WHERE MORE SPACE IS NEEDED, BUT 00333 M00S00333.sxdest +++|* NONE IS AVAILABLE ON THE CARTRIDGE IN USE. THE DESTAGE IS 00334 M00S00334.sxdest +++|* ABANDONED IF THIS CARTRIDGE DOES NOT HAVE AN OFF CARTRIDGE LINK 00335 M00S00335.sxdest +++|* AVAILABLE OR IF NO OTHER CARTRIDGE IN THE GROUP HAS ANY AVAILABLE 00336 M00S00336.sxdest +++|* SPACE. 00337 M00S00337.sxdest +++|* 00338 M00S00338.sxdest +++|* A D D I T I O N A L N O T E S 00339 M00S00339.sxdest +++|* 00340 M00S00340.sxdest +++|* 1) THE ABILITY OF THE M860 CONTROLLER TO DO WRITE ERROR RECOVERY 00341 M00S00341.sxdest +++|* BY DEMARKING A STRIPE MEANS THAT LESS DATA CAN BE STORED ON AN AU 00342 M00S00342.sxdest +++|* THAN EXPECTED. THEREFORE, A FILE MAY REQUIRE ONE OR POSSIBLY 00343 M00S00343.sxdest +++|* MORE AU THAN ANTICIPATED. BECAUSE OF THIS, *DSALLO* CALCULATES 00344 M00S00344.sxdest +++|* AN AMOUNT OF CONTINGENCY SPACE WHICH IT TRIES TO ALLOCATE IN 00345 M00S00345.sxdest +++|* ADDITION TO THE SPACE NEEDED FOR FILE DATA IF NO STRIPES ARE 00346 M00S00346.sxdest +++|* DEMARKED. 00347 M00S00347.sxdest +++|* 00348 M00S00348.sxdest +++|* 2) IF A FILE DESTAGE IS ABANDONED OR RETRIED, THE DESTAGE 00349 M00S00349.sxdest +++|* PROCESS WILL ATTEMPT TO RELEASE ANY AU ALLOCATED TO THE FILE. IF 00350 M00S00350.sxdest +++|* CARTRIDGE OVERFLOW HAS OCCURED, THIS IS NOT DONE. 00351 M00S00351.sxdest +++|* 00352 M00S00352.sxdest +++|* 3) ANY ERRORS ENCOUNTERED BY THE DRIVER AS IT ATTEMPTS TO UNLOAD 00353 M00S00353.sxdest +++|* A CARTRIDGE ARE IGNORED BY THE DESTAGE PROCESS. 00354 M00S00354.sxdest +++|* 00355 M00S00355.sxdest +++|# 00356 M00S00356.sxdest +++| 00357 M00S00357.sxdest +++| END # DS$$DOC # 00358 M00S00358.sxdest +++| 00359 M00S00359.sxdest +++| TERM 00360 M00S00360.sxdest +++|PROC DESTAGR((HLRQADR)); 00361 M00S00361.sxdest +++| 00362 M00S00362.sxdest +++|# TITLE DESTAGR - DESTAGE FILE FROM DISK TO M860 CARTRIDGE. # 00363 M00S00363.sxdest +++| 00364 M00S00364.sxdest +++| BEGIN # DESTAGR # 00365 M00S00365.sxdest +++| 00366 M00S00366.sxdest +++|# 00367 M00S00367.sxdest +++|* DESTAGR - DESTAGE FILE FROM DISK TO M860 CARTRIDGE. 00368 M00S00368.sxdest +++|* 00369 M00S00369.sxdest +++|* *DESTAGR* COPIES A PERMANENT FILE FROM DISK TO AN M860 00370 M00S00370.sxdest +++|* CARTRIDGE. IT SELECTS THE BEST CARTRIDGE(S) FOR THE FILE, 00371 M00S00371.sxdest +++|* ALLOCATES AVAILABLE AU AS NEEDED TO HOLD THE FILE DATA, 00372 M00S00372.sxdest +++|* ORGANIZES CONSECUTIVE AU INTO VOLUMES AND LINKS THESE 00373 M00S00373.sxdest +++|* VOLUMES INTO A CHAIN THAT DEFINES THE LOCATION OF THE FILE 00374 M00S00374.sxdest +++|* DATA ON THE CARTRIDGE. UPON COMPLETION OF THE COPY, THE 00375 M00S00375.sxdest +++|* *FCT* ON DISK IS UPDATED TO REFLECT THE CHAIN OF AU/VOLUMES AND 00376 M00S00376.sxdest +++|* THE *PFC* ENTRY FOR THE FILE IS UPDATED TO REFLECT THE 00377 M00S00377.sxdest +++|* NEW *ASA* VALUE FOR THE M860 COPY OF THE FILE. DEPENDING UPON 00378 M00S00378.sxdest +++|* AN INPUT PARAMETER FROM *SSMOVE*, THE DISK SPACE FOR THE FILE 00379 M00S00379.sxdest +++|* IS RELEASED UPON SUCCESSFUL COMPLETION OF THE DESTAGE. 00380 M00S00380.sxdest +++|* PERFORMANCE MESSAGES ARE WRITTEN TO THE ACCOUNT FILE IF 00381 M00S00381.sxdest +++|* EXEC WAS CALLED WITH THE TRACE MODE (*TM*) RUN-TIME PARAMETER. 00382 M00S00382.sxdest +++|* 00383 M00S00383.sxdest +++|* PROC DESTAGR((HLRQADR)) 00384 M00S00384.sxdest +++|* 00385 M00S00385.sxdest +++|* ENTRY (HLRQADR) - ADDRESS OF THE *HLRQ* ENTRY CONTAINING 00386 M00S00386.sxdest +++|* THE DESTAGE REQUEST. 00387 M00S00387.sxdest +++|* THE PROCESS STATE FIELD (HLR$HPS) INDICATES THE TYPE 00388 M00S00388.sxdest +++|* OF PROCESSING TO BE DONE ON THIS CALL TO *DESTAGR*. 00389 M00S00389.sxdest +++|* POSSIBLE ACTIONS ARE AS FOLLOWS.. 00390 M00S00390.sxdest +++|* - INITIATE THE DESTAGE PROCESS. 00391 M00S00391.sxdest +++|* - RESUME PROCESSING AFTER INTERFACING WITH THE DRIVER, 00392 M00S00392.sxdest +++|* (TO DO A CARTRIDGE LOAD OR UNLOAD, OR A COPY FROM 00393 M00S00393.sxdest +++|* DISK TO CARTRIDGE.) 00394 M00S00394.sxdest +++|* - RETRY A FUNCTION WHICH COULD NOT BE DONE PREVIOUSLY 00395 M00S00395.sxdest +++|* BECAUSE OF AN INTERLOCK CONDITION. 00396 M00S00396.sxdest +++|* - ACCESS A SUBFAMILY CATALOG 00397 M00S00397.sxdest +++|* - INTERFACE TO *PFM* (ACQUIRE THE FILE TO BE 00398 M00S00398.sxdest +++|* DESTAGED, ENTER A NEW *ASA* VALUE IN THE *PFC*, 00399 M00S00399.sxdest +++|* SET AN ERROR FLAG IN THE *PFC*, OR DROP THE 00400 M00S00400.sxdest +++|* FILES DISK SPACE). 00401 M00S00401.sxdest +++|* EXIT THE PROCESS NAME AND STATE FIELDS ARE SET UP TO 00402 M00S00402.sxdest +++|* IDENTIFY THE NEXT PROCESSING ACTION - WHETHER 00403 M00S00403.sxdest +++|* BY *DESTAGR* OR BY ONE OF ITS HELPER 00404 M00S00404.sxdest +++|* ROUTINES (*HLXXXX*). 00405 M00S00405.sxdest +++|* 00406 M00S00406.sxdest +++|* PROCESSING LOGIC FOR *DESTAGR* HAS BEEN 00407 M00S00407.sxdest +++|* ORGANIZED INTO THE FOLLOWING STEPS. 00408 M00S00408.sxdest +++|* 00409 M00S00409.sxdest +++|* 1. INITIALIZATION. 00410 M00S00410.sxdest +++|* 00411 M00S00411.sxdest +++|* 2. ALLOCATE NEXT VOLUME. 00412 M00S00412.sxdest +++|* 00413 M00S00413.sxdest +++|* 3. UNLOAD CARTRIDGE (IF CARTRIDGE OVERFLOW). 00414 M00S00414.sxdest +++|* 00415 M00S00415.sxdest +++|* 4. LOAD CARTRIDGE (IF NECESSARY). 00416 M00S00416.sxdest +++|* 00417 M00S00417.sxdest +++|* 5. ACQUIRE ACCESS TO THE PERMANENT FILE (VIA *PFM*). 00418 M00S00418.sxdest +++|* 00419 M00S00419.sxdest +++|* 6. COPY DATA TO THE ALLOCATED VOLUME. 00420 M00S00420.sxdest +++|* 00421 M00S00421.sxdest +++|* 7. UPDATE THE *FCT* TO REFLECT A SUCCESSFUL COPY. 00422 M00S00422.sxdest +++|* 00423 M00S00423.sxdest +++|* 8. COMPLETE DESTAGING AND UPDATE THE *FCT* ON 00424 M00S00424.sxdest +++|* DISK, AND THE *PFC* ENTRY FOR THE FILE. 00425 M00S00425.sxdest +++|* 00426 M00S00426.sxdest +++|* 9. RELEASE DISK SPACE (IF REQUESTED). 00427 M00S00427.sxdest +++|* 00428 M00S00428.sxdest +++|* 10. ERROR PROCESSING. 00429 M00S00429.sxdest +++|* 00430 M00S00430.sxdest +++|* 11. PREPARE TO DESTAGE NEXT FILE, OR TERMINATE. 00431 M00S00431.sxdest +++|# 00432 M00S00432.sxdest +++| 00433 M00S00433.sxdest +++| ITEM HLRQADR U; # *HLRQ* ENTRY ADDRESS # 00434 M00S00434.sxdest +++| 00435 M00S00435.sxdest +++|# 00436 M00S00436.sxdest +++|**** PROC DESTAGR - XREF LIST BEGIN. 00437 M00S00437.sxdest +++|# 00438 M00S00438.sxdest +++| 00439 M00S00439.sxdest +++| XREF 00440 M00S00440.sxdest +++| BEGIN 00441 M00S00441.sxdest +++| PROC ADD$LNK; # ADD ENTRY TO CHAIN # 00442 M00S00442.sxdest +++| PROC ACQ$FCT; # ACQUIRE *FCT* ENTRY # 00443 M00S00443.sxdest +++| PROC CKPFETC; # CHECK *UGET* STATUS # 00444 M00S00444.sxdest +++| PROC CFLUSH; # FLUSH SM CATALOG BUFFER # 00445 M00S00445.sxdest +++| PROC CPUTFCT; # UPDATE *FCT* ENTRY # 00446 M00S00446.sxdest +++| PROC CRELSLK; # RELEASE CATALOG INTERLOCKS #
Line S00001 Modification History | |
---|---|
M01 (Added by) | sxdest1 |
Seq # *Modification Id* Act ----------------------------+ 00447 M01S00001.sxdest1 +++| PROC DELAY; # TIMED DELAY # 00448 M00S00447.sxdest +++| PROC DROPDS; # DROP DIRECT FILE DISK SPACE # 00449 M00S00448.sxdest +++| PROC DROPIDS; # DROP INDIRECT FILE DISK SPACE # 00450 M00S00449.sxdest +++| PROC DSALLO; # ALLOCATE SPACE ON SM # 00451 M00S00450.sxdest +++| PROC DSERCAT; # DESTAGE ERROR PROCESSOR # 00452 M00S00451.sxdest +++| PROC DSERPFM; # DESTAGE ERROR PROCESSOR # 00453 M00S00452.sxdest +++| PROC DSNTDAM; # GET NEXT DESTAGE REQUEST # 00454 M00S00453.sxdest +++| PROC HLCPYDC; # CHECK COPY RETURN CODES # 00455 M00S00454.sxdest +++| PROC HLLOAD; # CHECK LOAD RETURN CODES # 00456 M00S00455.sxdest +++| PROC HLLDSET; # SET *HLRQ* INTO *LLRQ* #
Line S00001 Modification History | |
---|---|
M01 (Added by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 00457 M01S00001.mse0009 +++| PROC MSG; # ISSUE DAYFILE MESSAGE # 00458 M00S00456.sxdest +++| PROC MSGAFDF; # ISSUE ACCOUNT-DAYFILE MESSAGE # 00459 M00S00457.sxdest +++| PROC RECALL; # GIVE UP CPU FOR A MOMENT # 00460 M00S00458.sxdest +++| PROC RETERN; # RETURN FILE # 00461 M00S00459.sxdest +++| PROC RLSVOL; # RELEASE UNUSED VOLUME # 00462 M00S00460.sxdest +++| PROC RLS$FCT; # RELEASE *FCT* ENTRY # 00463 M00S00461.sxdest +++| PROC SETASA; # SET ALTERNATE STORAGE ADDRESS # 00464 M00S00462.sxdest +++| PROC UASTPRM; # UPDATE *AST* AND PREAMBLE # 00465 M00S00463.sxdest +++| PROC UATTACH; # UTILITY ATTACH OF FILE # 00466 M00S00464.sxdest +++| PROC UGET; # UTILITY GET OF FILE # 00467 M00S00465.sxdest +++| PROC UPUSAGE; # UPDATE USAGE INFO # 00468 M00S00466.sxdest +++| PROC ZFILL; # ZERO FILL BUFFER # 00469 M00S00467.sxdest +++| PROC ZSETFET; # INITIALIZE A FET # 00470 M00S00468.sxdest +++| END 00471 M00S00469.sxdest +++| 00472 M00S00470.sxdest +++|# 00473 M00S00471.sxdest +++|**** PROC DESTAGR - XREF LIST END. 00474 M00S00472.sxdest +++|# 00475 M00S00473.sxdest +++| 00476 M00S00474.sxdest +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00477 M00S00475.sxdest +++|*CALL,COMBFAS 00478 M00S00476.sxdest +++|*CALL,COMBCHN 00479 M00S00477.sxdest +++|*CALL,COMBCMD 00480 M00S00478.sxdest +++|*CALL,COMBCMS 00481 M00S00479.sxdest +++|*CALL COMBCPR 00482 M00S00480.sxdest +++|*CALL COMBLRQ 00483 M00S00481.sxdest +++|*CALL,COMBMCT 00484 M00S00482.sxdest +++|*CALL,COMBTDM 00485 M00S00483.sxdest +++|*CALL COMBUDT 00486 M00S00484.sxdest +++|*CALL,COMXCTF 00487 M00S00485.sxdest +++|*CALL,COMXEMC 00488 M00S00486.sxdest +++|*CALL,COMXFCQ 00489 M00S00487.sxdest +++|*CALL,COMXHLR
Line S00002 Modification History | |
---|---|
M01 (Added by) | sxdest1 |
Seq # *Modification Id* Act ----------------------------+ 00490 M01S00002.sxdest1 +++|*CALL COMXIPR 00491 M00S00488.sxdest +++|*CALL,COMXMSC 00492 M00S00489.sxdest +++|*CALL,COMSPFM 00493 M00S00490.sxdest +++| 00494 M00S00491.sxdest +++| ITEM ATEOI B; # END OF INFORMATION # 00495 M00S00492.sxdest +++| ITEM CC U; # CHAIN CONTROL VALUE # 00496 M00S00493.sxdest +++| ITEM CURFCT U; # *FCT* OF A PARALLEL *HLRQ* # 00497 M00S00494.sxdest +++| ITEM DRDCOUNT I; # NUMBER OF DRD-S AVAILABLE #
Line S00001 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 00498 M01S00001.sxdest2 +++| ITEM DSTGCOUNT I; # DRD AVAILABLE TO DESTAGER # 00499 M00S00495.sxdest +++| ITEM FLAG B; # BOOLEAN STATUS # 00500 M00S00496.sxdest +++| ITEM I I; # LOOP COUNTER # 00501 M00S00497.sxdest +++| ITEM QADDR U; # *FCT* ENTRY ADDRESS # 00502 M00S00498.sxdest +++| ITEM START I; # STARTING AU # 00503 M00S00499.sxdest +++| ITEM STAT I; # STATUS # 00504 M00S00500.sxdest +++| ITEM TEMP U; # TEMPORARY # 00505 M00S00501.sxdest +++| ITEM TEMP1 U; # TEMPORARY #
Line S00502 Modification History | |
---|---|
M01 (Removed by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00506 M01S00502.msea026 ---| ITEM TFCT U; # ASAFCT # 00507 M01S00503.msea026 ---| ITEM TTDAMSBF U; # SUBFAMILY NUMBER #
Line S00001 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00508 M01S00001.msea026 +++| ITEM TFAM C(7); # TERMPORARY FAMILY # 00509 M01S00002.msea026 +++| ITEM TFCT U; # ASAFCT # 00510 M01S00003.msea026 +++| ITEM TTDAMSBF U; # SUBFAMILY NUMBER # 00511 M00S00504.sxdest +++| ITEM T1 I; # TEMPORARY # 00512 M00S00505.sxdest +++| ITEM T2 I; # TEMPORARY # 00513 M00S00506.sxdest +++| ITEM USED I; # AU USED # 00514 M00S00507.sxdest +++| 00515 M00S00508.sxdest +++| ARRAY SCR$FET [0:0] P(SFETL); ; # SCRATCH FET # 00516 M00S00509.sxdest +++| 00517 M00S00510.sxdest +++| STATUS DSLABEL 00518 M00S00511.sxdest +++| DS1A, # INITIALIZATION # 00519 M00S00512.sxdest +++| DS2A, # RETRY *DSALLO* CALL # 00520 M00S00513.sxdest +++| DS3A, # RE-ENTER AFTER "NORMAL" UNLOAD # 00521 M00S00514.sxdest +++| DS3B, # RE-ENTER AFTER "FORCED" LOAD # 00522 M00S00515.sxdest +++| DS3C, # RE-ENTER AFTER "UNLOAD" # 00523 M00S00516.sxdest +++| DS4A, # RE-ENTER AFTER *HLLOAD* # 00524 M00S00517.sxdest +++| DS5A, # RETRY *UATTACH*/*UGET* CALL # 00525 M00S00518.sxdest +++| DS5B, # WAIT *UGET* COMPLETE # 00526 M00S00519.sxdest +++| DS6A, # RE-ENTER AFTER *HLCPYDC* # 00527 M00S00520.sxdest +++| DS8A, # RETRY *SETASA* CALL # 00528 M00S00521.sxdest +++| DS9A, # RETRY *DROP(I)DS* CALL # 00529 M00S00522.sxdest +++| DS11A, # RE-ENTER AFTER "NORMAL" UNLOAD # 00530 M00S00523.sxdest +++| DS11B, # RE-ENTER AFTER "FORCED" LOAD # 00531 M00S00524.sxdest +++| DS11C, # RE-ENTER AFTER "UNLOAD" # 00532 M00S00525.sxdest +++| DSEND; # END OF LIST # 00533 M00S00526.sxdest +++| 00534 M00S00527.sxdest +++| 00535 M00S00528.sxdest +++| SWITCH DSENTR:DSLABEL 00536 M00S00529.sxdest +++| DS1A:DS1A, 00537 M00S00530.sxdest +++| DS2A:DS2A, 00538 M00S00531.sxdest +++| DS3A:DS3A, 00539 M00S00532.sxdest +++| DS3B:DS3B, 00540 M00S00533.sxdest +++| DS3C:DS3C, 00541 M00S00534.sxdest +++| DS4A:DS4A, 00542 M00S00535.sxdest +++| DS5A:DS5A, 00543 M00S00536.sxdest +++| DS5B:DS5B, 00544 M00S00537.sxdest +++| DS6A:DS6A, 00545 M00S00538.sxdest +++| DS8A:DS8A, 00546 M00S00539.sxdest +++| DS9A:DS9A, 00547 M00S00540.sxdest +++| DS11A:DS11A, 00548 M00S00541.sxdest +++| DS11B:DS11B, 00549 M00S00542.sxdest +++| DS11C:DS11C; 00550 M00S00543.sxdest +++|
Line S00544 Modification History | |
---|---|
M01 (Removed by) | mse3 |
Seq # *Modification Id* Act ----------------------------+ 00551 M01S00544.mse3 ---| ARRAY PFMRET [0:0] S(4); # PFM RETURN MESSAGE # 00552 M01S00545.mse3 ---| BEGIN 00553 M01S00546.mse3 ---| ITEM PFMRETM C(00,00,40); # PFM RETURN MESSAGE # 00554 M01S00547.mse3 ---| END 00555 M00S00548.sxdest ---|
Line S00002 Modification History | |
---|---|
M01 (Added by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 00556 M01S00002.mse0009 +++| ARRAY MSGMB [0:0] S(5); 00557 M01S00003.mse0009 +++| BEGIN # MESSAGE BUFFER # 00558 M01S00004.mse0009 +++| ITEM MSG$LINE C(00,00,28) = [" CATALOG *FCT* PROBLEM. "]; 00559 M01S00005.mse0009 +++| ITEM MSG$ZERO U(03,48,12) = [0]; # ZERO-BYTE TERMINATOR # 00560 M01S00006.mse0009 +++| END 00561 M01S00007.mse0009 +++| 00562 M01S00008.mse0009 +++| 00563 M00S00549.sxdest +++| BASED 00564 M00S00550.sxdest +++| ARRAY CLEAR [0:0] S(1); 00565 M00S00551.sxdest +++| BEGIN 00566 M00S00552.sxdest +++| ITEM CLN U(00,36,24); # CLEAR *DRD* ASSIGNMENT # 00567 M00S00553.sxdest +++| ITEM RESETDRD U(00,36,24); # NEW *HLRQ* ADDRESS # 00568 M00S00554.sxdest +++| END 00569 M00S00555.sxdest +++| CONTROL EJECT; 00570 M00S00556.sxdest +++| 00571 M00S00557.sxdest +++|# 00572 M00S00558.sxdest +++|* STEP 1 - INITIALIZE. 00573 M00S00559.sxdest +++|# 00574 M00S00560.sxdest +++| 00575 M00S00561.sxdest +++| P<HLRQ> = HLRQADR; 00576 M00S00562.sxdest +++| P<TDAM> = LOC(HLR$TDAM[0]); 00577 M00S00563.sxdest +++| 00578 M00S00564.sxdest +++| GOTO DSENTR[HLR$HPS[0]]; 00579 M00S00565.sxdest +++| 00580 M00S00566.sxdest +++|DS1A: # BEGIN DESTAGE # 00581 M00S00567.sxdest +++| 00582 M00S00568.sxdest +++|# 00583 M00S00569.sxdest +++|* INITIALIZE *HLRQ* FIELDS. NOTE THAT *HLR$VOLAUP* IS 00584 M00S00570.sxdest +++|* INITIALIZED IN STEP 5 SINCE IT HAS INPUT TO *DSALLO*. 00585 M00S00571.sxdest +++|# 00586 M00S00572.sxdest +++| 00587 M00S00573.sxdest +++| HLR$RESP[0] = ERRST"NOERR"; 00588 M00S00574.sxdest +++| HLR$PRU[0] = 0; 00589 M00S00575.sxdest +++| HLR$1STVOL[0] = 0; 00590 M01S00009.mse0009 +++| HLR$NEWASA[0] = 0;
Line S00002 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 00591 M01S00002.sxdest2 +++| 00592 M01S00003.sxdest2 +++| IF TDAMFC[0] EQ TDAMFCODE"STAGE" 00593 M01S00004.sxdest2 +++| THEN 00594 M01S00005.sxdest2 +++| BEGIN # NO RESOURCES - END # 00595 M01S00006.sxdest2 +++| GOTO ENDALL; 00596 M01S00007.sxdest2 +++| END 00597 M01S00008.sxdest2 +++| 00598 M00S00576.sxdest +++| 00599 M00S00577.sxdest +++|# 00600 M00S00578.sxdest +++|* STEP 1 - END. 00601 M00S00579.sxdest +++|# 00602 M00S00580.sxdest +++| 00603 M00S00581.sxdest +++| CONTROL EJECT; 00604 M00S00582.sxdest +++| 00605 M00S00583.sxdest +++|# 00606 M00S00584.sxdest +++|* STEP 2 - ALLOCATE CARTRIDGE SPACE. 00607 M00S00585.sxdest +++|* - THE ALLOCATED AU ARE USED IN STEP 6 TO STORE 00608 M00S00586.sxdest +++|* FILE DATA. ANY UNUSED AU ARE MADE AVAILABLE 00609 M00S00587.sxdest +++|* FOR RE-USE IN STEP 7 IF NO ERRORS OCCUR. 00610 M00S00588.sxdest +++|* IF ERRORS OCCUR IN STEP 6, THE PROCEDURE 00611 M00S00589.sxdest +++|* *HLCPYDC* WILL MAKE ANY UNFLAWED AU AVAILABLE 00612 M00S00590.sxdest +++|* FOR RE-USE. IF ERRORS OCCUR ELSEWHERE, 00613 M00S00591.sxdest +++|* STEP 10 WILL MAKE THESE AU AVAILABLE. 00614 M00S00592.sxdest +++|# 00615 M00S00593.sxdest +++| 00616 M00S00594.sxdest +++|NEXTVOL: # CHOOSE CARTRIDGE AND AUS # 00617 M00S00595.sxdest +++|DS2A: # RETRY *DSALLO* CALL # 00618 M00S00596.sxdest +++| HLR$HPS[0] = DSLABEL"DS2A"; # IF WAIT FOR INITERLOCK # 00619 M00S00597.sxdest +++| 00620 M00S00598.sxdest +++| 00621 M00S00599.sxdest +++| DSALLO(HLRQADR); 00622 M00S00600.sxdest +++| 00623 M00S00601.sxdest +++| HLR$AUUD [0] = HLR$VOLAU [0] ; # IN CASE OF ERROR #
Line S00003 Modification History | |
---|---|
M01 (Added by) | sxdest1 |
Seq # *Modification Id* Act ----------------------------+ 00624 M01S00003.sxdest1 +++| IF HLR$RESP[0] EQ ERRST"WAIT" 00625 M01S00004.sxdest1 +++| THEN # *HLRQ* IS ON CATALOG WAIT # 00626 M01S00005.sxdest1 +++| BEGIN 00627 M01S00006.sxdest1 +++| HLR$RESP[0] = 0; 00628 M01S00007.sxdest1 +++| RETURN; 00629 M01S00008.sxdest1 +++| END 00630 M01S00009.sxdest1 +++| 00631 M00S00602.sxdest +++| IF HLR$RESP[0] EQ ERRST"SPECIAL" 00632 M00S00603.sxdest +++| THEN 00633 M00S00604.sxdest +++| BEGIN 00634 M00S00605.sxdest +++| ADD$LNK(HLRQADR,LCHN"HL$DRDRESW",0); 00635 M00S00606.sxdest +++| HLR$RESP[0] = ERRST"NOERR"; 00636 M00S00607.sxdest +++| RETURN; 00637 M00S00608.sxdest +++| END 00638 M00S00609.sxdest +++| 00639 M00S00610.sxdest +++| IF (HLR$RESP[0] EQ ERRST"NOERR" ) ## 00640 M00S00611.sxdest +++| AND (HLR$VOLLN[0] EQ 0) 00641 M00S00612.sxdest +++| THEN # NO SPACE # 00642 M00S00613.sxdest +++| BEGIN 00643 M00S00614.sxdest +++| IF HLR$FFILE[0] 00644 M00S00615.sxdest +++| THEN # ABANDON FIRST FILE # 00645 M00S00616.sxdest +++| BEGIN 00646 M00S00617.sxdest +++| HLR$RESP[0] = ERRST"ABANDON"; 00647 M00S00618.sxdest +++| HLR$ERRC[0] = ABANDON"NOSPACE"; 00648 M00S00619.sxdest +++| END 00649 M00S00620.sxdest +++| 00650 M00S00621.sxdest +++| ELSE # RETRY OTHER FILES # 00651 M00S00622.sxdest +++| BEGIN 00652 M00S00623.sxdest +++| HLR$RESP[0] = ERRST"RETRY"; 00653 M00S00624.sxdest +++| END 00654 M00S00625.sxdest +++| 00655 M00S00626.sxdest +++| END 00656 M00S00627.sxdest +++| 00657 M00S00628.sxdest +++| IF HLR$RESP[0] NQ ERRST"NOERR" 00658 M00S00629.sxdest +++| THEN 00659 M00S00630.sxdest +++| BEGIN 00660 M00S00631.sxdest +++| HLR$HPS[0] = DSLABEL"DS2A"; # IF WAIT FOR INTERLOCK # 00661 M00S00632.sxdest +++| GOTO DSERR; 00662 M00S00633.sxdest +++| END 00663 M00S00634.sxdest +++| 00664 M00S00635.sxdest +++|# 00665 M00S00636.sxdest +++|* STEP 2 - END. 00666 M00S00637.sxdest +++|# 00667 M00S00638.sxdest +++| 00668 M00S00639.sxdest +++| CONTROL EJECT; 00669 M00S00640.sxdest +++| 00670 M00S00641.sxdest +++|# 00671 M00S00642.sxdest +++|* STEP 3 - UNLOAD PREVIOUS CARTRIDGE, IF APPROPRIATE. 00672 M00S00643.sxdest +++|* - CALL *HLUNLD* TO DO THE UNLOAD. THE CARTRIDGE 00673 M00S00644.sxdest +++|* USAGE STATISTICS ARE RETURNED IN THE *HLRQ* 00674 M00S00645.sxdest +++|* ENTRY AND USED TO UPDATE THE *FCT* IN STEP 7. 00675 M00S00646.sxdest +++|* - ALL ERROR CONDITIONS ENCOUNTERED IN UNLOADING 00676 M00S00647.sxdest +++|* A CARTRIDGE ARE HANDLED BY *HLUNLD*. 00677 M00S00648.sxdest +++|* SINCE *DESTAGR* DOES NOT NEED THIS CARTRIDGE 00678 M00S00649.sxdest +++|* TO COMPLETE DESTAGING IT DOES NOT CONCERN 00679 M00S00650.sxdest +++|* ITSELF WITH WHETHER OR NOT UNLOAD ERRORS OCCURRED. 00680 M00S00651.sxdest +++|# 00681 M00S00652.sxdest +++| 00682 M00S00653.sxdest +++| IF HLR$UNLD[0] 00683 M00S00654.sxdest +++| THEN 00684 M00S00655.sxdest +++| BEGIN # UNLOAD OLD CARTRIDGE # 00685 M00S00656.sxdest +++| HLR$UNLD[0] = FALSE; 00686 M00S00657.sxdest +++| IF HLR$HLRQW[0] NQ 0 00687 M00S00658.sxdest +++| THEN 00688 M00S00659.sxdest +++| BEGIN # SWITCH CONTROL OF *DRD* TO WAITTING *HLRQ* # 00689 M00S00660.sxdest +++| TEMP = HLR$DRDRA[0]; 00690 M00S00661.sxdest +++| TEMP1 = HLR$LRQADR[0]; 00691 M00S00662.sxdest +++| P<HLRQ> = HLR$HLRQW[0]; 00692 M00S00663.sxdest +++| HLR$DRDRA[0] = TEMP; 00693 M00S00664.sxdest +++| HLR$LRQADR[0] = TEMP1; 00694 M00S00665.sxdest +++| P<HLRQ> = HLRQADR; 00695 M00S00666.sxdest +++| ADD$LNK(HLR$HLRQW[0],LCHN"HL$READY",0); 00696 M00S00667.sxdest +++| P<LLRQ> = HLR$LRQADR[0]; 00697 M00S00668.sxdest +++| LLR$UCPRA[0] = HLR$HLRQW[0]; # INSURE PPU POINTS TO 00698 M00S00669.sxdest +++| NEW *HLRQ* # 00699 M00S00670.sxdest +++| P<CLEAR> = HLR$DRDRA[0]; 00700 M00S00671.sxdest +++| RESETDRD = HLR$HLRQW[0]; 00701 M00S00672.sxdest +++| HLR$HLRQW[0] = 0; 00702 M00S00673.sxdest +++| HLR$DRDRA[0] = 0; 00703 M00S00674.sxdest +++| HLR$LRQADR[0] = 0; 00704 M00S00675.sxdest +++| END 00705 M00S00676.sxdest +++| 00706 M00S00677.sxdest +++| ELSE 00707 M00S00678.sxdest +++| BEGIN # DO UNLOAD OF CARTRIDGE # 00708 M00S00679.sxdest +++| P<LLRQ> = HLR$LRQADR[0]; 00709 M00S00680.sxdest +++| MSGAFDF("I","UL",0,HLRQADR); 00710 M00S00681.sxdest +++| LLR$DR[0] = ERRST"NOERR"; 00711 M00S00682.sxdest +++| LLR$PRCNME[0] = REQTYP4"UNLD$CART"; 00712 M00S00683.sxdest +++| LLR$PRCST[0] = PROCST"INITIAL"; 00713 M00S00684.sxdest +++| HLR$HPS[0] = DSLABEL"DS3A"; 00714 M00S00685.sxdest +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 00715 M00S00686.sxdest +++| RETURN; 00716 M00S00687.sxdest +++| 00717 M00S00688.sxdest +++|DS3A: # RETURN FROM UNLOAD OF CARTRIDGE # 00718 M00S00689.sxdest +++| 00719 M00S00690.sxdest +++| IF HLR$RESP[0] NQ RESPTYP4"OK4" 00720 M00S00691.sxdest +++| THEN 00721 M00S00692.sxdest +++| BEGIN 00722 M00S00693.sxdest +++| 00723 M00S00694.sxdest +++|# 00724 M00S00695.sxdest +++|* PROCESS UNLOAD CARTRIDGE ERROR AS FOLLOWS: 00725 M00S00696.sxdest +++|* -DRIVER PLACED ORIGINAL CARTRIDGE IN OUTPUT STATION. 00726 M00S00697.sxdest +++|* -ASSUME A SECOND CARTRIDGE WAS IN DESTINATION CELL. 00727 M00S00698.sxdest +++|* -ATTEMPT TO MOVE THIS 2ND CARTRIDGE TO THE OUTPUT 00728 M00S00699.sxdest +++|* STATION BY LOADING IT. 00729 M00S00700.sxdest +++|* -IF THE LOAD SUCCEEDS, DO A SECOND UNLOAD BACK TO 00730 M00S00701.sxdest +++|* THE ORIGINAL DESTINATION. 00731 M00S00702.sxdest +++|# 00732 M00S00703.sxdest +++| 00733 M00S00704.sxdest +++| HLLDSET((HLRQADR)); # SET UP SECOND LOAD # 00734 M00S00705.sxdest +++| HLR$HPS[0] = DSLABEL"DS3B"; 00735 M00S00706.sxdest +++| RETURN; 00736 M00S00707.sxdest +++| 00737 M00S00708.sxdest +++|DS3B: # RETURN FROM SECOND LOAD # 00738 M00S00709.sxdest +++| 00739 M00S00710.sxdest +++| IF HLR$RESP[0] EQ RESPTYP4"OK4" 00740 M00S00711.sxdest +++| THEN # UNLOAD 2ND CARTRIDGE # 00741 M00S00712.sxdest +++| BEGIN 00742 M00S00713.sxdest +++| LLR$PRCNME[0] = REQTYP4"UNLD$CART"; 00743 M00S00714.sxdest +++| LLR$PRCST[0] = PROCST"INITIAL"; 00744 M00S00715.sxdest +++| HLR$HPS[0] = DSLABEL"DS3C"; 00745 M00S00716.sxdest +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 00746 M00S00717.sxdest +++| RETURN; 00747 M00S00718.sxdest +++| 00748 M00S00719.sxdest +++|DS3C: 00749 M00S00720.sxdest +++| END # UNLOAD OF 2ND REQUEST # 00750 M00S00721.sxdest +++| END # LOAD OF 2ND REQUEST # 00751 M00S00722.sxdest +++| P<CLEAR> = HLR$DRDRA[0]; 00752 M00S00723.sxdest +++| CLN = 0; 00753 M00S00724.sxdest +++| HLR$DRDRA[0] = 0; 00754 M00S00725.sxdest +++| 00755 M00S00726.sxdest +++| END # PHYSICAL CARTRIDGE UNLOAD # 00756 M00S00727.sxdest +++| END # ORIGINAL UNLOAD REQUEST # 00757 M00S00728.sxdest +++| 00758 M00S00729.sxdest +++|# 00759 M00S00730.sxdest +++|* STEP 3 END. 00760 M00S00731.sxdest +++|# 00761 M00S00732.sxdest +++| 00762 M00S00733.sxdest +++| CONTROL EJECT; 00763 M00S00734.sxdest +++| 00764 M00S00735.sxdest +++|# 00765 M00S00736.sxdest +++|* STEP 4 - LOAD CARTRIDGE, IF APPROPRIATE. 00766 M00S00737.sxdest +++|* - CALL *HLLOAD* TO DO THE LOAD AND OBTAIN 00767 M00S00738.sxdest +++|* THE LARGE BUFFER. *HLLOAD* WILL UPDATE 00768 M00S00739.sxdest +++|* THE *FCT* IF THE CARTRIDGE IS LOST OR HAS 00769 M00S00740.sxdest +++|* AN IMPROPER LABEL. 00770 M00S00741.sxdest +++|* - IF ERRORS OCCUR, STEP 11 WILL EVENTUALLY CAUSE 00771 M00S00742.sxdest +++|* THE CARTRIDGE TO BE UNLOADED AND THE 00772 M00S00743.sxdest +++|* ASSOCIATED LARGE BUFFER TO BE RELEASED. 00773 M00S00744.sxdest +++|# 00774 M00S00745.sxdest +++| 00775 M00S00746.sxdest +++| IF HLR$LOAD[0] 00776 M00S00747.sxdest +++| THEN 00777 M00S00748.sxdest +++| BEGIN # STEP 4 # 00778 M00S00749.sxdest +++| SLOWFOR I=1 STEP 1 UNTIL MAXSMUNIT 00779 M00S00750.sxdest +++| DO 00780 M00S00751.sxdest +++| BEGIN # FIND *SM* # 00781 M00S00752.sxdest +++| IF HLR$SM[0] EQ SM$ID[I] 00782 M00S00753.sxdest +++| THEN 00783 M00S00754.sxdest +++| BEGIN 00784 M00S00755.sxdest +++| GOTO SMFOUND; 00785 M00S00756.sxdest +++| END # *SM* FOUND # 00786 M00S00757.sxdest +++| END # *SM* SEARCH COMPLETE # 00787 M00S00758.sxdest +++| 00788 M00S00759.sxdest +++|SMFOUND: 00789 M00S00760.sxdest +++| DRDCOUNT = 0; 00790 M00S00761.sxdest +++| IF D0$ON[I] 00791 M00S00762.sxdest +++| THEN 00792 M00S00763.sxdest +++| BEGIN 00793 M00S00764.sxdest +++| DRDCOUNT = 1; 00794 M00S00765.sxdest +++| END 00795 M00S00766.sxdest +++| 00796 M00S00767.sxdest +++| IF D1$ON[I] 00797 M00S00768.sxdest +++| THEN 00798 M00S00769.sxdest +++| BEGIN 00799 M00S00770.sxdest +++| DRDCOUNT = DRDCOUNT + 1; 00800 M00S00771.sxdest +++| END 00801 M00S00772.sxdest +++|
Line S00009 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 00802 M01S00009.sxdest2 +++| IF SM$DSNUM[I] EQ 0 00803 M01S00010.sxdest2 +++| THEN # DESTAGE DISABLED ON THIS SM # 00804 M01S00011.sxdest2 +++| BEGIN 00805 M01S00012.sxdest2 +++| HLR$RESP[0] = ERRST"SMDSTAGEOFF"; 00806 M01S00013.sxdest2 +++| GOTO DSINERR; 00807 M01S00014.sxdest2 +++| END 00808 M01S00015.sxdest2 +++| 00809 M01S00016.sxdest2 +++| DSTGCOUNT = SM$DSNUM[I]; 00810 M01S00017.sxdest2 +++| 00811 M00S00773.sxdest +++| TTDAMSBF = HLR$SBF[0];
Line S00774 Modification History | |
---|---|
M01 (Removed by) | mse2 |
Seq # *Modification Id* Act ----------------------------+ 00812 M01S00774.mse2 ---| TFCT = HLR$FCTXN[0];
Line S00001 Modification History | |
---|---|
M01 (Added by) | mse2 |
Seq # *Modification Id* Act ----------------------------+ 00813 M01S00001.mse2 +++| TFCT = HLR$FCTX[0];
Line S00004 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00814 M01S00004.msea026 +++| TFAM = HLR$FAM[0]; 00815 M00S00775.sxdest +++| 00816 M00S00776.sxdest +++| IF NOT SM$LLRQ1[I] 00817 M00S00777.sxdest +++| THEN 00818 M00S00778.sxdest +++| BEGIN 00819 M00S00779.sxdest +++| 00820 M00S00780.sxdest +++| IF SM$REQRES1[I] NQ 0 00821 M00S00781.sxdest +++| AND SM$REQRES1[I] NQ HLRQADR 00822 M00S00782.sxdest +++| THEN 00823 M00S00783.sxdest +++| BEGIN 00824 M00S00784.sxdest +++| P<HLRQ> = SM$REQRES1[I];
Line S00018 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 00825 M01S00018.sxdest2 +++| IF HLR$HPN[0] EQ HLRPN"DESTAGE" 00826 M01S00019.sxdest2 +++| THEN 00827 M01S00020.sxdest2 +++| BEGIN 00828 M01S00021.sxdest2 +++| DSTGCOUNT = DSTGCOUNT - 1; 00829 M01S00022.sxdest2 +++| 00830 M01S00023.sxdest2 +++| IF DSTGCOUNT EQ 0 00831 M01S00024.sxdest2 +++| THEN # DO NOT LET A NEW DESTAGE START # 00832 M01S00025.sxdest2 +++| BEGIN 00833 M01S00026.sxdest2 +++| P<HLRQ> = HLRQADR; # SET ERROR TO ORGINIAL HLRQ # 00834 M01S00027.sxdest2 +++| HLR$RESP[0] = ERRST"RSFULL"; 00835 M01S00028.sxdest2 +++| GOTO DSINERR; 00836 M01S00029.sxdest2 +++| END 00837 M01S00030.sxdest2 +++| END 00838 M01S00031.sxdest2 +++| 00839 M00S00785.sxdest +++| 00840 M00S00786.sxdest +++| IF HLR$FCTX[0] NQ 0 00841 M00S00787.sxdest +++| THEN 00842 M00S00788.sxdest +++| BEGIN 00843 M00S00789.sxdest +++| CURFCT = HLR$FCTX[0]; 00844 M00S00790.sxdest +++| END 00845 M00S00791.sxdest +++| 00846 M00S00792.sxdest +++| ELSE 00847 M00S00793.sxdest +++| BEGIN 00848 M00S00794.sxdest +++| CURFCT = HLR$ASAFCT[0]; 00849 M00S00795.sxdest +++| END 00850 M00S00796.sxdest +++|
Line S00797 Modification History | |
---|---|
M01 (Removed by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00851 M01S00797.msea026 ---| IF TFCT EQ CURFCT 00852 M01S00798.msea026 ---| AND TTDAMSBF EQ HLR$SBF[0]
Line S00005 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00853 M01S00005.msea026 +++| IF (TFCT EQ CURFCT) 00854 M01S00006.msea026 +++| AND (TTDAMSBF EQ HLR$SBF[0]) 00855 M01S00007.msea026 +++| AND (TFAM EQ HLR$FAM[0]) 00856 M00S00799.sxdest +++| THEN # REQUESTING CARTRIDGE MOUNTED # 00857 M00S00800.sxdest +++| BEGIN 00858 M00S00801.sxdest +++|NEXTHLRQ: 00859 M00S00802.sxdest +++| IF HLR$HLRQW[0] EQ 0 00860 M00S00803.sxdest +++| THEN 00861 M00S00804.sxdest +++| BEGIN # END OF *HLRQ* WRITING CARTRIDGE # 00862 M00S00805.sxdest +++| HLR$HLRQW[0] = HLRQADR; 00863 M00S00806.sxdest +++| P<HLRQ> = HLRQADR; 00864 M00S00807.sxdest +++| STG$MSK = 0;
Line S00010 Modification History | |
---|---|
M01 (Added by) | sxdest1 |
Seq # *Modification Id* Act ----------------------------+ 00865 M01S00010.sxdest1 +++| HLR$HPS[0] = DSLABEL"DS5A"; 00866 M01S00011.sxdest1 +++| HLR$LOAD[0] = FALSE; 00867 M00S00808.sxdest +++| RETURN; 00868 M00S00809.sxdest +++| END 00869 M00S00810.sxdest +++| ELSE 00870 M00S00811.sxdest +++| BEGIN # FIND END OF *HLRQ* WRITING # 00871 M00S00812.sxdest +++| P<HLRQ> = HLR$HLRQW[0]; 00872 M00S00813.sxdest +++| GOTO NEXTHLRQ; 00873 M00S00814.sxdest +++| END 00874 M00S00815.sxdest +++| END 00875 M00S00816.sxdest +++| END 00876 M00S00817.sxdest +++| END # SM$LLRQ1 CHECK # 00877 M00S00818.sxdest +++| 00878 M00S00819.sxdest +++| IF NOT SM$LLRQ2[I] 00879 M00S00820.sxdest +++| THEN 00880 M00S00821.sxdest +++| BEGIN 00881 M00S00822.sxdest +++| 00882 M00S00823.sxdest +++| IF SM$REQRES2[I] NQ 0 00883 M00S00824.sxdest +++| AND SM$REQRES2[I] NQ HLRQADR 00884 M00S00825.sxdest +++| THEN 00885 M00S00826.sxdest +++| BEGIN 00886 M00S00827.sxdest +++| P<HLRQ> = SM$REQRES2[I];
Line S00032 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 00887 M01S00032.sxdest2 +++| IF HLR$HPN[0] EQ HLRPN"DESTAGE" 00888 M01S00033.sxdest2 +++| THEN 00889 M01S00034.sxdest2 +++| BEGIN 00890 M01S00035.sxdest2 +++| DSTGCOUNT = DSTGCOUNT - 1; 00891 M01S00036.sxdest2 +++| 00892 M01S00037.sxdest2 +++| IF DSTGCOUNT EQ 0 00893 M01S00038.sxdest2 +++| THEN # DO NOT LET A NEW DESTAGE START # 00894 M01S00039.sxdest2 +++| BEGIN 00895 M01S00040.sxdest2 +++| P<HLRQ> = HLRQADR; # SET ERROR TO ORGINIAL HLRQ # 00896 M01S00041.sxdest2 +++| HLR$RESP[0] = ERRST"RSFULL"; 00897 M01S00042.sxdest2 +++| GOTO DSINERR; 00898 M01S00043.sxdest2 +++| END 00899 M01S00044.sxdest2 +++| END 00900 M01S00045.sxdest2 +++| 00901 M00S00828.sxdest +++| 00902 M00S00829.sxdest +++| IF HLR$FCTX[0] NQ 0 00903 M00S00830.sxdest +++| THEN 00904 M00S00831.sxdest +++| BEGIN 00905 M00S00832.sxdest +++| CURFCT = HLR$FCTX[0]; 00906 M00S00833.sxdest +++| END 00907 M00S00834.sxdest +++| 00908 M00S00835.sxdest +++| ELSE 00909 M00S00836.sxdest +++| BEGIN 00910 M00S00837.sxdest +++| CURFCT = HLR$ASAFCT[0]; 00911 M00S00838.sxdest +++| END 00912 M00S00839.sxdest +++| 00913 M00S00840.sxdest +++|
Line S00841 Modification History | |
---|---|
M01 (Removed by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00914 M01S00841.msea026 ---| IF TFCT EQ CURFCT 00915 M01S00842.msea026 ---| AND TTDAMSBF EQ HLR$SBF[0]
Line S00008 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00916 M01S00008.msea026 +++| IF (TFCT EQ CURFCT) 00917 M01S00009.msea026 +++| AND (TTDAMSBF EQ HLR$SBF[0]) 00918 M01S00010.msea026 +++| AND (TFAM EQ HLR$FAM[0]) 00919 M00S00843.sxdest +++| THEN # REQUESTING CARTRIDGE MOUNTED # 00920 M00S00844.sxdest +++| BEGIN 00921 M00S00845.sxdest +++|NEXTHLRQ1: 00922 M00S00846.sxdest +++| IF HLR$HLRQW[0] EQ 0 00923 M00S00847.sxdest +++| THEN 00924 M00S00848.sxdest +++| BEGIN # END OF *HLRQ* WRITING CARTRIDGE # 00925 M00S00849.sxdest +++| HLR$HLRQW[0] = HLRQADR; 00926 M00S00850.sxdest +++| P<HLRQ> = HLRQADR; 00927 M00S00851.sxdest +++| STG$MSK = 0;
Line S00012 Modification History | |
---|---|
M01 (Added by) | sxdest1 |
Seq # *Modification Id* Act ----------------------------+ 00928 M01S00012.sxdest1 +++| HLR$HPS[0] = DSLABEL"DS5A"; 00929 M01S00013.sxdest1 +++| HLR$LOAD[0] = FALSE; 00930 M00S00852.sxdest +++| RETURN; 00931 M00S00853.sxdest +++| END 00932 M00S00854.sxdest +++| ELSE 00933 M00S00855.sxdest +++| BEGIN # FIND END OF *HLRQ* WRITING # 00934 M00S00856.sxdest +++| P<HLRQ> = HLR$HLRQW[0]; 00935 M00S00857.sxdest +++| GOTO NEXTHLRQ1; 00936 M00S00858.sxdest +++| END 00937 M00S00859.sxdest +++| END 00938 M00S00860.sxdest +++| END 00939 M00S00861.sxdest +++| END # SM$LLRQ2 CHECK # 00940 M00S00862.sxdest +++| 00941 M00S00863.sxdest +++| P<HLRQ> = HLRQADR; 00942 M00S00864.sxdest +++| IF (SM$REQRES1[I] NQ 0) ## 00943 M00S00865.sxdest +++| AND (SM$REQRES2[I] NQ 0) 00944 M00S00866.sxdest +++| THEN 00945 M00S00867.sxdest +++| BEGIN 00946 M00S00868.sxdest +++| HLR$RESP[0] = ERRST"RSFULL"; 00947 M00S00869.sxdest +++| GOTO DSINERR; 00948 M00S00870.sxdest +++| END 00949 M00S00871.sxdest +++| 00950 M00S00872.sxdest +++| IF DRDCOUNT EQ 1 00951 M00S00873.sxdest +++| THEN 00952 M00S00874.sxdest +++| BEGIN 00953 M00S00875.sxdest +++| IF(SM$REQRES1[I] NQ 0) ## 00954 M00S00876.sxdest +++| OR (SM$REQRES2[I] NQ 0) 00955 M00S00877.sxdest +++| THEN 00956 M00S00878.sxdest +++| BEGIN 00957 M00S00879.sxdest +++| HLR$RESP[0] = ERRST"RSFULL"; 00958 M00S00880.sxdest +++| GOTO DSINERR; 00959 M00S00881.sxdest +++| END 00960 M00S00882.sxdest +++| END # END OF ONE *DRD* # 00961 M00S00883.sxdest +++| 00962 M00S00884.sxdest +++| IF SM$REQRES1[I] EQ 0 00963 M00S00885.sxdest +++| THEN # RESERVE *DRD* # 00964 M00S00886.sxdest +++| BEGIN 00965 M00S00887.sxdest +++| SM$REQRES1[I] = HLRQADR; 00966 M00S00888.sxdest +++| SM$DSFLAG1[I] = TRUE; 00967 M00S00889.sxdest +++| HLR$DRDRA[0] = LOC(SM$REQRES1[I]); 00968 M00S00890.sxdest +++| END 00969 M00S00891.sxdest +++| 00970 M00S00892.sxdest +++| ELSE 00971 M00S00893.sxdest +++| BEGIN 00972 M00S00894.sxdest +++| SM$REQRES2[I] = HLRQADR; 00973 M00S00895.sxdest +++| SM$DSFLAG2[I] = TRUE; 00974 M00S00896.sxdest +++| HLR$DRDRA[0] = LOC(SM$REQRES2[I]); 00975 M00S00897.sxdest +++| END 00976 M00S00898.sxdest +++| 00977 M00S00899.sxdest +++| HLR$HPS[0] = DSLABEL"DS4A"; 00978 M00S00900.sxdest +++| HLLDSET((HLRQADR)); # MOVE *HLRQ* DATA TO *LLRQ* # 00979 M00S00901.sxdest +++| MSGAFDF("I","LD",0,HLRQADR); 00980 M00S00902.sxdest +++| RETURN; # WAIT LOAD OF CARTRIDGE # 00981 M00S00903.sxdest +++| 00982 M00S00904.sxdest +++|DS4A: 00983 M00S00905.sxdest +++| HLLOAD((HLRQADR)); # CHECK RETURN CODES # 00984 M00S00906.sxdest +++|DSINERR: # IF *DRD* NOT ASSIGNED #
Line S00011 Modification History | |
---|---|
M01 (Added by) | msea026 |
Seq # *Modification Id* Act ----------------------------+ 00985 M01S00011.msea026 +++| P<HLRQ> = HLRQADR; 00986 M00S00907.sxdest +++| HLR$LOAD[0] = FALSE; 00987 M00S00908.sxdest +++| IF HLR$RESP[0] NQ ERRST"NOERR" 00988 M00S00909.sxdest +++| THEN 00989 M00S00910.sxdest +++| BEGIN 00990 M00S00911.sxdest +++| HLR$ERRC[0] = ERRST"SPECIAL"; 00991 M00S00912.sxdest +++| GOTO DSERR; 00992 M00S00913.sxdest +++| END 00993 M00S00914.sxdest +++| 00994 M00S00915.sxdest +++| END # STEP 4 # 00995 M00S00916.sxdest +++| 00996 M00S00917.sxdest +++| CONTROL EJECT; 00997 M00S00918.sxdest +++| 00998 M00S00919.sxdest +++|# 00999 M00S00920.sxdest +++|* STEP 5 - ACQUIRE FILE FROM *PFM*, IF APPROPRIATE. 01000 M00S00921.sxdest +++|* - ISSUE A *UATTACH* IF DIRECT ACCESS, OTHERWISE, 01001 M00S00922.sxdest +++|* ISSUE A *UGET*. 01002 M00S00923.sxdest +++|* - CAUSE THE *PFC* ENTRY TO BE STORED AT *HLR$PFC*. 01003 M00S00924.sxdest +++|* - RELOOP IF THE *UATTACH* OR *UGET* REQUEST 01004 M00S00925.sxdest +++|* CAN NOT BE PROCESSED DUE TO SOME DELAY CONDITION. 01005 M00S00926.sxdest +++|* - ABANDON DESTAGE IF THE FILE HAS BEEN DESTAGED. 01006 M00S00927.sxdest +++|* - CLEAR THE *HLR$VOLAUP* FIELD. 01007 M00S00928.sxdest +++|# 01008 M00S00929.sxdest +++| 01009 M00S00930.sxdest +++|DS5A: # RETRY *UATTACH*/*UGET* CALL # 01010 M00S00931.sxdest +++| IF HLR$FVOL[0] 01011 M00S00932.sxdest +++| THEN 01012 M00S00933.sxdest +++| BEGIN # STEP 5 # 01013 M00S00934.sxdest +++| NAMEC[0] = HLR$FLNM[0]; 01014 M00S00935.sxdest +++| NAMEC[2] = TDAMPFN[0]; 01015 M00S00936.sxdest +++| NAMEC[1] = TDAMFAM[0]; 01016 M00S00937.sxdest +++| 01017 M00S00938.sxdest +++| P<PFC> = LOC(HLR$PFC[0]); 01018 M00S00939.sxdest +++| 01019 M00S00940.sxdest +++| IF NOT TDAMIA[0] 01020 M00S00941.sxdest +++| THEN 01021 M00S00942.sxdest +++| BEGIN # DIRECT ACCESS FILE # 01022 M00S00943.sxdest +++| UATTACH(NAME[0],PFMSTAT,6,NAME[2],PTRD,TDAMUI[0],NAME[1], ## 01023 M00S00944.sxdest +++| TDAMPFID[0],PFC[0],TDAMCDT[0],LOC(PFMRET)); 01024 M00S00945.sxdest +++| HLR$PRU[0] = 0; # START WITH SYSTEM SECTOR # 01025 M00S00946.sxdest +++| END # DIRECT ACCESS FILE # 01026 M00S00947.sxdest +++| 01027 M00S00948.sxdest +++| ELSE 01028 M00S00949.sxdest +++| BEGIN # INDIRECT ACCESS FILE # 01029 M00S00950.sxdest +++| UGET(NAME[0],PFMSTAT,6,NAME[2],TDAMUI[0],NAME[1], ## 01030 M00S00951.sxdest +++| TDAMPFID[0],PFC[0],TDAMCDT[0],LOC(PFMRET)); 01031 M00S00952.sxdest +++| 01032 M00S00953.sxdest +++| HLR$PRU[0] = 1; # START WITH 1ST DATA SECTOR # 01033 M00S00954.sxdest +++| PFMSTAT = -1; 01034 M00S00955.sxdest +++| HLR$HPS[0] = DSLABEL"DS5B"; 01035 M00S00956.sxdest +++| GLPFMFL = TRUE; 01036 M00S00957.sxdest +++| ADD$LNK(HLRQADR,LCHN"HL$PFMWAIT",0); 01037 M00S00958.sxdest +++| RETURN; 01038 M00S00959.sxdest +++| 01039 M00S00960.sxdest +++| END # INDIRECT ACCESS FILE # 01040 M00S00961.sxdest +++|DS5B: 01041 M00S00962.sxdest +++| P<PFC> = LOC(HLR$PFC[0]); 01042 M00S00963.sxdest +++| 01043 M00S00964.sxdest +++|# 01044 M00S00965.sxdest +++|* CHECK FOR ERROR ON UGET OR UATTACH. 01045 M00S00966.sxdest +++|# 01046 M00S00967.sxdest +++| 01047 M00S00968.sxdest +++| IF PFMSTAT NQ 0 01048 M00S00969.sxdest +++| THEN 01049 M00S00970.sxdest +++| BEGIN 01050 M00S00971.sxdest +++| DSERPFM(HLRQADR,PFMSTAT); 01051 M00S00972.sxdest +++| IF HLR$RESP[0] NQ ERRST"NOERR" 01052 M00S00973.sxdest +++| THEN 01053 M00S00974.sxdest +++| BEGIN 01054 M00S00975.sxdest +++| HLR$HPS[0] = DSLABEL"DS5A"; 01055 M00S00976.sxdest +++| GOTO DSERR; 01056 M00S00977.sxdest +++| END 01057 M00S00978.sxdest +++| 01058 M00S00979.sxdest +++| END 01059 M00S00980.sxdest +++| 01060 M00S00981.sxdest +++| IF TDAMASA[0] NQ PFC$AA[0] 01061 M00S00982.sxdest +++| THEN # IF FILE ALREADY DESTAGED # 01062 M00S00983.sxdest +++| BEGIN 01063 M00S00984.sxdest +++| HLR$RESP[0] = ERRST"ABANDON"; 01064 M00S00985.sxdest +++| HLR$ERRC[0] = ABANDON"NEWASA";; 01065 M00S00986.sxdest +++| GOTO DSERR; 01066 M00S00987.sxdest +++| END 01067 M00S00988.sxdest +++| 01068 M00S00989.sxdest +++| HLR$VOLAUP[0] = 0; 01069 M00S00990.sxdest +++| HLR$CSNDP[0] = ""; 01070 M00S00991.sxdest +++| HLR$CCODP[0] = ""; 01071 M00S00992.sxdest +++| HLR$VOLLNP[0] = 0; 01072 M00S00993.sxdest +++| 01073 M00S00994.sxdest +++| MSGAFDF("B", "BD",0,HLRQADR); 01074 M00S00995.sxdest +++| 01075 M00S00996.sxdest +++| END # STEP 5 # 01076 M00S00997.sxdest +++| 01077 M00S00998.sxdest +++| CONTROL EJECT; 01078 M00S00999.sxdest +++| 01079 M00S01000.sxdest +++|# 01080 M00S01001.sxdest +++|* STEP 6 - COPY DATA TO THE NEXT VOLUME. 01081 M00S01002.sxdest +++|* - CALL *HLCPYDC* TO EFFECT THE COPY. 01082 M00S01003.sxdest +++|* - IF NO ERROR, *HLR$AUUD* IDENTIFIES THE 01083 M00S01004.sxdest +++|* LAST AU WRITTEN. *HLR$EOI* IS SET IF 01084 M00S01005.sxdest +++|* THE DESTAGE IS COMPLETE. 01085 M00S01006.sxdest +++|# 01086 M00S01007.sxdest +++| 01087 M00S01008.sxdest +++| P<LLRQ> = HLR$LRQADR[0]; 01088 M00S01009.sxdest +++| HLR$HPS[0] = DSLABEL"DS6A"; 01089 M00S01010.sxdest +++| LLR$PRCNME[0] = REQTYP4"CPY$DA"; 01090 M00S01011.sxdest +++| LLR$PRCST[0] = PROCST"INITIAL"; 01091 M00S01012.sxdest +++| LLR$DR[0] = 0; 01092 M00S01013.sxdest +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 01093 M00S01014.sxdest +++| RETURN; # START COPY # 01094 M00S01015.sxdest +++| 01095 M00S01016.sxdest +++|DS6A: # RE-ENTER AFTER COPY COMPLETE # 01096 M00S01017.sxdest +++| 01097 M00S01018.sxdest +++| HLCPYDC((HLRQADR)); # CHECK RETURN CODES # 01098 M00S01019.sxdest +++| IF HLR$RESP[0] NQ ERRST"NOERR" 01099 M00S01020.sxdest +++| THEN 01100 M00S01021.sxdest +++| BEGIN 01101 M00S01022.sxdest +++| GOTO DSERR; 01102 M00S01023.sxdest +++| END 01103 M00S01024.sxdest +++| 01104 M00S01025.sxdest +++|# 01105 M00S01026.sxdest +++|* STEP 6 - END. 01106 M00S01027.sxdest +++|# 01107 M00S01028.sxdest +++| 01108 M00S01029.sxdest +++| CONTROL EJECT; 01109 M00S01030.sxdest +++| 01110 M00S01031.sxdest +++|# 01111 M00S01032.sxdest +++|* STEP 7 - UPDATE *FCT* ENTRY TO REFLECT NEW VOLUME. 01112 M00S01033.sxdest +++|# 01113 M00S01034.sxdest +++| 01114 M00S01035.sxdest +++|# 01115 M00S01036.sxdest +++|* STEP 7.1 - RELEASE UNUSED AU. 01116 M00S01037.sxdest +++|# 01117 M00S01038.sxdest +++| 01118 M00S01039.sxdest +++| USED = HLR$AUUD[0]+1-HLR$VOLAU[0]; 01119 M00S01040.sxdest +++| RLSVOL(HLRQADR,HLR$FCTQ[0],HLR$AUUD[0]+1,HLR$VOLLN[0]-USED); 01120 M00S01041.sxdest +++| 01121 M00S01042.sxdest +++| 01122 M00S01043.sxdest +++| P<PFC> = LOC(HLR$PFC[0]); 01123 M00S01044.sxdest +++| 01124 M00S01045.sxdest +++| IF TDAMIA[0] 01125 M00S01046.sxdest +++| THEN 01126 M00S01047.sxdest +++| BEGIN 01127 M00S01048.sxdest +++| ATEOI = (HLR$PRU[0] - 1) GQ HLR$PFC$LN[0]; 01128 M00S01049.sxdest +++| END 01129 M00S01050.sxdest +++| 01130 M00S01051.sxdest +++| ELSE 01131 M00S01052.sxdest +++| BEGIN # DIRECT FILE # 01132 M00S01053.sxdest +++| ATEOI = HLR$PRU[0] GQ HLR$PFC$LN[0]; 01133 M00S01054.sxdest +++| END 01134 M00S01055.sxdest +++| 01135 M00S01056.sxdest +++| 01136 M00S01057.sxdest +++|# 01137 M00S01058.sxdest +++|* STEP 7.2 - ORGANIZED USED AU INTO ONE VOLUME. 01138 M00S01059.sxdest +++|* (CC=LAST, LINK=0, LENGTH=WHATEVER). 01139 M00S01060.sxdest +++|* - THE LINK FIELD IS SET TO ZERO TO FACILITATE 01140 M00S01061.sxdest +++|* ERROR CORRECTION WHEN A PARTIAL CHAIN EXISTS. 01141 M00S01062.sxdest +++|* *SSVAL* WILL TREAT A CHAIN WHICH HAS NO *PFC* 01142 M00S01063.sxdest +++|* ENTRY AND HAS CC=FIRST OR MIDDLE AND A 01143 M00S01064.sxdest +++|* LINK=0 AS IF IT WERE A NORMAL ORPHAN. THIS 01144 M00S01065.sxdest +++|* PERMITS THE NORMAL M860 SPACE MANAGEMENT 01145 M00S01066.sxdest +++|* PROCESS TO MAKE THIS SPACE AVAILABLE WITHOUT 01146 M00S01067.sxdest +++|* HUMAN INTERVENTION. 01147 M00S01068.sxdest +++|# 01148 M00S01069.sxdest +++| 01149 M00S01070.sxdest +++| P<FCT> = HLR$FCTQ[0] + FCTQHL; 01150 M00S01071.sxdest +++| T1 = 0; 01151 M00S01072.sxdest +++| T2 = 0; 01152 M00S01073.sxdest +++| START = HLR$VOLAU[0]; 01153 M00S01074.sxdest +++| 01154 M00S01075.sxdest +++| FOR I = 0 STEP 1 UNTIL USED-1 01155 M00S01076.sxdest +++| DO 01156 M00S01077.sxdest +++| BEGIN 01157 M00S01078.sxdest +++| SETFCTX(START+I); # SET *FWD* AND *FPS* VALUES # 01158 M00S01079.sxdest +++| 01159 M00S01080.sxdest +++| FCT$CLFG(FWD,FPS) = 0; 01160 M00S01081.sxdest +++| FCT$FBF(FWD,FPS) = 1; 01161 M00S01082.sxdest +++| FCT$CAUF(FWD,FPS) = T1; 01162 M00S01083.sxdest +++| FCT$CC(FWD,FPS) = CHAINCON"LAST"; 01163 M00S01084.sxdest +++| FCT$LEN(FWD,FPS) = USED - 1 - I; 01164 M00S01085.sxdest +++| FCT$LINK(FWD,FPS) = T2; 01165 M00S01086.sxdest +++| 01166 M00S01087.sxdest +++| T1 = 1; # ALL BUT THE FIRST AU ARE 01167 M00S01088.sxdest +++| CONTINUATION AU # 01168 M00S01089.sxdest +++| T2 = START; 01169 M00S01090.sxdest +++| 01170 M00S01091.sxdest +++| END 01171 M00S01092.sxdest +++| 01172 M00S01093.sxdest +++|# 01173 M00S01094.sxdest +++|* SAVE THE ID OF THE FIRST ALLOCATED VOLUME ON THE 01174 M00S01095.sxdest +++|* CARTRIDGE IN CASE THE DESTAGE IS ABANDONED. THEN THE 01175 M00S01096.sxdest +++|* ALLOCATED SPACE CAN BE RELEASED AND REUSED. 01176 M00S01097.sxdest +++|# 01177 M00S01098.sxdest +++| 01178 M00S01099.sxdest +++| IF HLR$1STVOL[0] EQ 0 01179 M00S01100.sxdest +++| THEN 01180 M00S01101.sxdest +++| BEGIN 01181 M00S01102.sxdest +++| HLR$1STVOL[0] = START; 01182 M00S01103.sxdest +++| END 01183 M00S01104.sxdest +++| 01184 M00S01105.sxdest +++| HLR$VOLLN[0] = 0; # PREVENT RE-RELEASING IF FUTURE 01185 M00S01106.sxdest +++| ERROR RECOVERY # 01186 M00S01107.sxdest +++| CONTROL EJECT; 01187 M00S01108.sxdest +++| 01188 M00S01109.sxdest +++|# 01189 M00S01110.sxdest +++|* STEP 7.3 - SAVE NEW *FCT* ENTRY, AND GET OLD *FCT* ENTRY. 01190 M00S01111.sxdest +++|# 01191 M00S01112.sxdest +++| 01192 M00S01113.sxdest +++| IF HLR$JOF[0] 01193 M00S01114.sxdest +++| THEN 01194 M00S01115.sxdest +++| BEGIN # GET *FCT* ENTRY FOR PREVIOUS CARTRIDGE # 01195 M00S01116.sxdest +++| RLS$FCT(HLR$FCTQ[0],0,STAT); 01196 M00S01117.sxdest +++| HLR$FCTQ[0] = 0; # PREVENT A 2ND RELEASE # 01197 M00S01118.sxdest +++| IF STAT EQ CMASTAT"NOERR" 01198 M00S01119.sxdest +++| THEN 01199 M00S01120.sxdest +++| BEGIN 01200 M00S01121.sxdest +++| ACQ$FCT(TDAMFAM[0],TDAMSBF[0],HLR$SM[0], ## 01201 M00S01122.sxdest +++| HLR$FCTXP[0],QADDR,0,STAT); 01202 M00S01123.sxdest +++| END 01203 M00S01124.sxdest +++| 01204 M00S01125.sxdest +++| IF STAT NQ CMASTAT"NOERR" 01205 M00S01126.sxdest +++| THEN 01206 M00S01127.sxdest +++| BEGIN 01207 M00S01128.sxdest +++| DSERCAT(HLRQADR,STAT); 01208 M00S01129.sxdest +++| GOTO DSERR; 01209 M00S01130.sxdest +++| END 01210 M00S01131.sxdest +++| 01211 M00S01132.sxdest +++| P<FCT> = QADDR + FCTQHL; 01212 M00S01133.sxdest +++| 01213 M00S01134.sxdest +++|# 01214 M00S01135.sxdest +++|* UPDATE CARTRIDGE USAGE STATISTICS. 01215 M00S01136.sxdest +++|* UPDATE *AST* AND THE PREAMBLE TO REFLECT THE SPACE NOW AVAILABLE. 01216 M00S01137.sxdest +++|# 01217 M00S01138.sxdest +++| 01218 M00S01139.sxdest +++| UPUSAGE(HLRQADR,QADDR); 01219 M00S01140.sxdest +++| 01220 M00S01141.sxdest +++| UASTPRM(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],QADDR,STAT); 01221 M00S01142.sxdest +++| 01222 M00S01143.sxdest +++| IF STAT NQ CMASTAT"NOERR" 01223 M00S01144.sxdest +++| THEN 01224 M00S01145.sxdest +++| BEGIN 01225 M00S01146.sxdest +++| DSERCAT(HLRQADR,STAT); 01226 M00S01147.sxdest +++| RLS$FCT(QADDR,0,STAT); 01227 M00S01148.sxdest +++| GOTO DSERR; 01228 M00S01149.sxdest +++| END 01229 M00S01150.sxdest +++| 01230 M00S01151.sxdest +++| END # GET *FCT* ENTRY FOR PREVIOUS CARTRIDGE # 01231 M00S01152.sxdest +++| 01232 M00S01153.sxdest +++| CONTROL EJECT; 01233 M00S01154.sxdest +++| 01234 M00S01155.sxdest +++|# 01235 M00S01156.sxdest +++|* STEP 7.4 - UPDATE LINK TO THIS VOLUME. 01236 M00S01157.sxdest +++|# 01237 M00S01158.sxdest +++| 01238 M00S01159.sxdest +++| IF HLR$FVOL[0] 01239 M00S01160.sxdest +++| THEN # SET LINKAGE IN *HLRQ* # 01240 M00S01161.sxdest +++| BEGIN 01241 M00S01162.sxdest +++| P<ASA> = LOC(HLR$NEWASA[0]); 01242 M00S01163.sxdest +++| ASASM[0] = HLR$SM[0]; 01243 M00S01164.sxdest +++| ASAFCT[0] = HLR$FCTX[0]; 01244 M00S01165.sxdest +++| ASAAU[0] = HLR$VOLAU[0]; 01245 M00S01166.sxdest +++| 01246 M00S01167.sxdest +++| END 01247 M00S01168.sxdest +++| 01248 M00S01169.sxdest +++| ELSE # SET LINKAGE IN PREVIOUS VOLUME # 01249 M00S01170.sxdest +++| BEGIN 01250 M00S01171.sxdest +++| SETFCTX(HLR$VOLAUP[0]); # SET *FWD* AND *FPS* VALUES # 01251 M00S01172.sxdest +++| 01252 M00S01173.sxdest +++| FCT$LINK(FWD,FPS) = HLR$VOLAU[0]; 01253 M00S01174.sxdest +++| 01254 M00S01175.sxdest +++| IF HLR$JOF[0] 01255 M00S01176.sxdest +++| THEN 01256 M00S01177.sxdest +++| BEGIN 01257 M00S01178.sxdest +++| T1 = FCT$CLKOCL(FWD,FPS); 01258 M00S01179.sxdest +++| FCT$OCLNK(T1) = HLR$FCTX[0]; 01259 M00S01180.sxdest +++| END 01260 M00S01181.sxdest +++| 01261 M00S01182.sxdest +++| END 01262 M00S01183.sxdest +++| 01263 M00S01184.sxdest +++| CONTROL EJECT; 01264 M00S01185.sxdest +++| 01265 M00S01186.sxdest +++|# 01266 M00S01187.sxdest +++|* STEP 7.5 - UPDATE BACKLINK INFORMATION. 01267 M00S01188.sxdest +++|# 01268 M00S01189.sxdest +++| 01269 M00S01190.sxdest +++| HLR$VOLAUP[0] = HLR$VOLAU[0]; 01270 M00S01191.sxdest +++| HLR$VOLLNP[0] = USED; 01271 M00S01192.sxdest +++| 01272 M00S01193.sxdest +++|# 01273 M00S01194.sxdest +++|* STEP 7.6 - RESTORE NEW *FCT* ENTRY, IF APPROPRIATE. 01274 M00S01195.sxdest +++|# 01275 M00S01196.sxdest +++| 01276 M00S01197.sxdest +++| IF HLR$JOF[0] 01277 M00S01198.sxdest +++| THEN 01278 M00S01199.sxdest +++| BEGIN 01279 M00S01200.sxdest +++| RLS$FCT(QADDR,0,STAT); 01280 M00S01201.sxdest +++| IF STAT EQ CMASTAT"NOERR" 01281 M00S01202.sxdest +++| THEN 01282 M00S01203.sxdest +++| BEGIN 01283 M00S01204.sxdest +++| ACQ$FCT(TDAMFAM[0],TDAMSBF[0],HLR$SM[0], ## 01284 M00S01205.sxdest +++| HLR$FCTX[0],QADDR,0,STAT); 01285 M00S01206.sxdest +++| END 01286 M00S01207.sxdest +++| 01287 M00S01208.sxdest +++| IF STAT NQ CMASTAT"NOERR" 01288 M00S01209.sxdest +++| THEN 01289 M00S01210.sxdest +++| BEGIN 01290 M00S01211.sxdest +++| DSERCAT(HLRQADR,STAT); 01291 M00S01212.sxdest +++| GOTO DSERR; 01292 M00S01213.sxdest +++| END 01293 M00S01214.sxdest +++| 01294 M00S01215.sxdest +++| P<FCT> = QADDR + FCTQHL; 01295 M00S01216.sxdest +++| HLR$FCTQ[0] = QADDR; 01296 M00S01217.sxdest +++| END 01297 M00S01218.sxdest +++| 01298 M00S01219.sxdest +++| CONTROL EJECT; 01299 M00S01220.sxdest +++| 01300 M00S01221.sxdest +++|# 01301 M00S01222.sxdest +++|* STEP 7.7 - SET CORRECT VALUE IN *CC* FIELD. 01302 M00S01223.sxdest +++|# 01303 M00S01224.sxdest +++| 01304 M00S01225.sxdest +++| IF HLR$FVOL[0] 01305 M00S01226.sxdest +++| THEN 01306 M00S01227.sxdest +++| BEGIN # FIRST OR ONLY VOLUME # 01307 M00S01228.sxdest +++| IF ATEOI 01308 M00S01229.sxdest +++| THEN 01309 M00S01230.sxdest +++| BEGIN 01310 M00S01231.sxdest +++| CC = CHAINCON"ONLY"; 01311 M00S01232.sxdest +++| END 01312 M00S01233.sxdest +++| 01313 M00S01234.sxdest +++| ELSE 01314 M00S01235.sxdest +++| BEGIN 01315 M00S01236.sxdest +++| CC = CHAINCON"FIRST"; 01316 M00S01237.sxdest +++| END 01317 M00S01238.sxdest +++| 01318 M00S01239.sxdest +++| END # FIRST OR ONLY VOLUME # 01319 M00S01240.sxdest +++| 01320 M00S01241.sxdest +++| ELSE 01321 M00S01242.sxdest +++| BEGIN # MIDDLE OR LAST # 01322 M00S01243.sxdest +++| IF ATEOI 01323 M00S01244.sxdest +++| THEN 01324 M00S01245.sxdest +++| BEGIN 01325 M00S01246.sxdest +++| CC = CHAINCON"LAST"; 01326 M00S01247.sxdest +++| END 01327 M00S01248.sxdest +++| 01328 M00S01249.sxdest +++| ELSE 01329 M00S01250.sxdest +++| BEGIN 01330 M00S01251.sxdest +++| CC = CHAINCON"MIDDLE"; 01331 M00S01252.sxdest +++| END 01332 M00S01253.sxdest +++| 01333 M00S01254.sxdest +++| END # MIDDLE OR LAST # 01334 M00S01255.sxdest +++| 01335 M00S01256.sxdest +++| SETFCTX(HLR$VOLAU[0]); # SET *FWD* AND *FPS* VALUES # 01336 M00S01257.sxdest +++| 01337 M00S01258.sxdest +++| FCT$CC(FWD,FPS) = CC; 01338 M00S01259.sxdest +++| 01339 M00S01260.sxdest +++|# 01340 M00S01261.sxdest +++|* STEP 7 - END. 01341 M00S01262.sxdest +++|# 01342 M00S01263.sxdest +++| 01343 M00S01264.sxdest +++| CONTROL EJECT; 01344 M00S01265.sxdest +++| 01345 M00S01266.sxdest +++|# 01346 M00S01267.sxdest +++|* STEP 8 - COMPLETE DESTAGING OF THIS FILE. 01347 M00S01268.sxdest +++|# 01348 M00S01269.sxdest +++| 01349 M00S01270.sxdest +++| HLR$FVOL[0] = FALSE; 01350 M00S01271.sxdest +++| 01351 M00S01272.sxdest +++| IF NOT ATEOI 01352 M00S01273.sxdest +++| THEN 01353 M00S01274.sxdest +++| BEGIN 01354 M00S01275.sxdest +++| GOTO NEXTVOL; 01355 M00S01276.sxdest +++| END 01356 M00S01277.sxdest +++| 01357 M00S01278.sxdest +++|# 01358 M00S01279.sxdest +++|* STEP 8.2 - WRITE *FCT* ENTRY TO DISK. 01359 M00S01280.sxdest +++|# 01360 M00S01281.sxdest +++| 01361 M00S01282.sxdest +++| CPUTFCT(TDAMFAM[0],TDAMSBF[0],HLR$SM[0], ## 01362 M00S01283.sxdest +++| HLR$FCTX[0],P<FCT>,HLRQADR,STAT); 01363 M00S01284.sxdest +++| 01364 M00S01285.sxdest +++| IF STAT EQ 0 01365 M00S01286.sxdest +++| THEN 01366 M00S01287.sxdest +++| BEGIN 01367 M00S01288.sxdest +++| CFLUSH(TDAMFAM[0],TDAMSBF[0],HLRQADR,STAT); 01368 M00S01289.sxdest +++| END 01369 M00S01290.sxdest +++| 01370 M00S01291.sxdest +++| IF STAT NQ 0 01371 M00S01292.sxdest +++| THEN 01372 M00S01293.sxdest +++| BEGIN 01373 M00S01294.sxdest +++| DSERCAT(HLRQADR,STAT); 01374 M00S01295.sxdest +++| GOTO DSERR; 01375 M00S01296.sxdest +++| END 01376 M00S01297.sxdest +++| 01377 M00S01298.sxdest +++|# 01378 M00S01299.sxdest +++|* STEP 8.4 - ISSUE *SETASA* TO COMPLETE DESTAGE. 01379 M00S01300.sxdest +++|# 01380 M00S01301.sxdest +++| 01381 M00S01302.sxdest +++|DS8A: # RETRY *SETASA* CALL # 01382 M00S01303.sxdest +++| 01383 M00S01304.sxdest +++| HLR$HPS[0] = DSLABEL"DS8A"; # IF WAIT CONDITION # 01384 M00S01305.sxdest +++| NAMEC[0] = HLR$FLNM[0]; 01385 M00S01306.sxdest +++| NAMEC[1] = TDAMFAM[0]; 01386 M00S01307.sxdest +++| 01387 M00S01308.sxdest +++| 01388 M00S01309.sxdest +++| TDAMASA[0] = HLR$NEWASA[0]; 01389 M00S01310.sxdest +++| TDAMAT[0] = ATAS; 01390 M00S01311.sxdest +++| 01391 M00S01312.sxdest +++| SETASA(NAME[0],STAT,6,TDAMUI[0],NAME[1],TDAMPFID[0], ## 01392 M00S01313.sxdest +++| TDAMASI[0],TDAMCDT[0],LOC(PFMRET)); 01393 M00S01314.sxdest +++| 01394 M00S01315.sxdest +++| IF STAT NQ 0 01395 M00S01316.sxdest +++| THEN 01396 M00S01317.sxdest +++| BEGIN 01397 M00S01318.sxdest +++| DSERPFM(HLRQADR,STAT); 01398 M00S01319.sxdest +++| IF HLR$RESP[0] NQ ERRST"NOERR" 01399 M00S01320.sxdest +++| THEN 01400 M00S01321.sxdest +++| BEGIN 01401 M00S01322.sxdest +++| GOTO DSERR; 01402 M00S01323.sxdest +++| END 01403 M00S01324.sxdest +++|
Line S00010 Modification History | |
---|---|
M01 (Added by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01404 M01S00010.mse0009 +++| HLR$NEWASA[0] = 0; # CLEAR FOR NO FURTHER *FCT* RELEASE # 01405 M00S01325.sxdest +++| END 01406 M00S01326.sxdest +++| 01407 M00S01327.sxdest +++|# 01408 M00S01328.sxdest +++|* STEP 8 - END. 01409 M00S01329.sxdest +++|# 01410 M00S01330.sxdest +++| 01411 M00S01331.sxdest +++| CONTROL EJECT; 01412 M00S01332.sxdest +++| 01413 M00S01333.sxdest +++|# 01414 M00S01334.sxdest +++|* STEP 9 - RELEASE DISK SPACE, IF REQUESTED. 01415 M00S01335.sxdest +++|# 01416 M00S01336.sxdest +++| 01417 M00S01337.sxdest +++| IF TDAMFC[0] EQ TDAMFCODE"DESTRLS" 01418 M00S01338.sxdest +++| THEN 01419 M00S01339.sxdest +++| BEGIN # DO RELEASE PROCESSING # 01420 M00S01340.sxdest +++|DS9A: # RETRY *DROP(I)DS* CALL # 01421 M00S01341.sxdest +++| HLR$HPS[0] = DSLABEL"DS9A"; # IF NEED TO RETRY *PFM* CALL # 01422 M00S01342.sxdest +++| NAMEC[0] = HLR$FLNM[0]; 01423 M00S01343.sxdest +++| NAMEC[1] = TDAMFAM[0]; 01424 M00S01344.sxdest +++| IF TDAMIA[0] 01425 M00S01345.sxdest +++| THEN # INDIRECT ACCESS FILE # 01426 M00S01346.sxdest +++| BEGIN 01427 M00S01347.sxdest +++| DROPIDS(NAME[0],STAT,6,TDAMUI[0],NAME[1], ## 01428 M00S01348.sxdest +++| TDAMPFID[0],TDAMASI[0],TDAMCDT[0],LOC(PFMRET)); 01429 M00S01349.sxdest +++| END 01430 M00S01350.sxdest +++| 01431 M00S01351.sxdest +++| ELSE # DIRECT ACCESS FILE # 01432 M00S01352.sxdest +++| BEGIN 01433 M00S01353.sxdest +++| DROPDS(NAME[0],STAT,6,TDAMUI[0],NAME[1], ## 01434 M00S01354.sxdest +++| TDAMPFID[0],TDAMASI[0],TDAMCDT[0],LOC(PFMRET)); 01435 M00S01355.sxdest +++| END 01436 M00S01356.sxdest +++| 01437 M00S01357.sxdest +++| IF STAT NQ 0 01438 M00S01358.sxdest +++| THEN 01439 M00S01359.sxdest +++| BEGIN 01440 M00S01360.sxdest +++| DSERPFM(HLRQADR,STAT); 01441 M00S01361.sxdest +++| IF HLR$RESP[0] NQ ERRST"NOERR" 01442 M00S01362.sxdest +++| THEN 01443 M00S01363.sxdest +++| BEGIN
Line S01364 Modification History | |
---|---|
M01 (Removed by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01444 M01S01364.mse0009 ---| GOTO DSERR;
Line S00011 Modification History | |
---|---|
M01 (Added by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01445 M01S00011.mse0009 +++|# 01446 M01S00012.mse0009 +++| THE *ASA* IS SET, THE *FCT* SPACE MUST NOT BE RELEASED. 01447 M01S00013.mse0009 +++|# 01448 M01S00014.mse0009 +++| 01449 M01S00015.mse0009 +++| 01450 M01S00016.mse0009 +++| IF HLR$RESP[0] EQ ERRST"WAIT" 01451 M01S00017.mse0009 +++| THEN 01452 M01S00018.mse0009 +++| BEGIN 01453 M01S00019.mse0009 +++| HLR$RESP[0] = ERRST"NOERR"; 01454 M01S00020.mse0009 +++| DELAY(PFM$INTV,HLRQADR,HLRQIND); 01455 M01S00021.mse0009 +++| RETURN; 01456 M01S00022.mse0009 +++| END 01457 M01S00023.mse0009 +++| 01458 M01S00024.mse0009 +++| ELSE # REPORT ERROR, BUT DON-T RELEASE *FCT* SPACE. # 01459 M01S00025.mse0009 +++| BEGIN 01460 M01S00026.mse0009 +++|# 01461 M01S00027.mse0009 +++| 01462 M01S00028.mse0009 +++| SET *ASA* WORKED - LEAVE *FCT* IN TACK. 01463 M01S00029.mse0009 +++|# 01464 M01S00030.mse0009 +++| HLR$RESP[0] = ERRST"ABANDON"; 01465 M01S00031.mse0009 +++| GOTO STARTSTEP11; 01466 M01S00032.mse0009 +++| END 01467 M01S00033.mse0009 +++| 01468 M00S01365.sxdest +++| END 01469 M00S01366.sxdest +++| 01470 M00S01367.sxdest +++| END 01471 M00S01368.sxdest +++| 01472 M00S01369.sxdest +++| END # DO RELEASE PROCESSING # 01473 M00S01370.sxdest +++| 01474 M00S01371.sxdest +++| HLR$TDAMFL[0] = HLR$PFC$LN[0]; # SET DAYFILE MESSAGE # 01475 M00S01372.sxdest +++|# 01476 M00S01373.sxdest +++|* STEP 9 - END. 01477 M00S01374.sxdest +++|# 01478 M00S01375.sxdest +++| 01479 M00S01376.sxdest +++| CONTROL EJECT; 01480 M00S01377.sxdest +++| 01481 M00S01378.sxdest +++|# 01482 M00S01379.sxdest +++|* STEP 10 - HANDLE ERRORS SPECIFIC TO THIS FILE. 01483 M00S01380.sxdest +++|# 01484 M00S01381.sxdest +++| 01485 M00S01382.sxdest +++|DSERR: # ERROR CLEANUP # 01486 M00S01383.sxdest +++| 01487 M00S01384.sxdest +++| STAT = HLR$RESP[0]; 01488 M00S01385.sxdest +++| IF STAT NQ ERRST"NOERR" 01489 M00S01386.sxdest +++| THEN 01490 M00S01387.sxdest +++| BEGIN # STEP 10 # 01491 M00S01388.sxdest +++| IF STAT EQ ERRST"WAIT" 01492 M00S01389.sxdest +++| THEN 01493 M00S01390.sxdest +++| BEGIN 01494 M00S01391.sxdest +++| HLR$RESP[0] = ERRST"NOERR";
Line S00014 Modification History | |
---|---|
M01 (Added by) | sxdest1 |
Seq # *Modification Id* Act ----------------------------+ 01495 M01S00014.sxdest1 +++| DELAY(PFM$INTV,HLRQADR,HLRQIND); 01496 M00S01392.sxdest +++| RETURN; 01497 M00S01393.sxdest +++| END 01498 M00S01394.sxdest +++| 01499 M00S01395.sxdest +++| IF HLR$FCTQ[0] NQ 0 01500 M00S01396.sxdest +++| THEN # RELEASE ALLOCATED AU, IF ANY # 01501 M00S01397.sxdest +++| BEGIN 01502 M00S01398.sxdest +++| 01503 M00S01399.sxdest +++| P<FCT> = HLR$FCTQ[0] + FCTQHL;
Line S01400 Modification History | |
---|---|
M01 (Removed by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01504 M01S01400.mse0009 ---| IF HLR$CSNDP[0] EQ "" 01505 M01S01401.mse0009 ---| THEN 01506 M01S01402.mse0009 ---| BEGIN
Line S00034 Modification History | |
---|---|
M01 (Added by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01507 M01S00034.mse0009 +++| 01508 M01S00035.mse0009 +++|# 01509 M01S00036.mse0009 +++| RELEASE SPACE ON CURRENT CARTRIDGE. 01510 M01S00037.mse0009 +++|# 01511 M01S00038.mse0009 +++| 01512 M01S00039.mse0009 +++| 01513 M00S01403.sxdest +++| START = HLR$1STVOL[0]; 01514 M00S01404.sxdest +++| REPEAT WHILE START NQ 0 01515 M00S01405.sxdest +++| DO 01516 M00S01406.sxdest +++| BEGIN 01517 M00S01407.sxdest +++| SETFCTX(START); 01518 M00S01408.sxdest +++| T1 = FCT$LINK(FWD,FPS); 01519 M00S01409.sxdest +++| T2 = FCT$LEN(FWD,FPS) + 1; 01520 M00S01410.sxdest +++| 01521 M00S01411.sxdest +++| RLSVOL(HLRQADR,HLR$FCTQ,START,T2); 01522 M00S01412.sxdest +++| P<FCT> = HLR$FCTQ[0] + FCTQHL; 01523 M00S01413.sxdest +++| START = T1; 01524 M00S01414.sxdest +++| END
Line S01415 Modification History | |
---|---|
M01 (Removed by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01525 M01S01415.mse0009 ---| 01526 M01S01416.mse0009 ---| END 01527 M00S01417.sxdest ---| 01528 M00S01418.sxdest ---| P<FCT> = HLR$FCTQ[0] + FCTQHL; 01529 M00S01419.sxdest ---| RLSVOL(HLRQADR,HLR$FCTQ[0],HLR$VOLAU[0],HLR$VOLLN[0]); 01530 M00S01420.sxdest ---| 01531 M01S01421.mse0009 ---| IF HLR$ERRC[0] EQ ERRST"SPECIAL" 01532 M01S01422.mse0009 ---| THEN 01533 M01S01423.mse0009 ---| BEGIN # NO CARTRIDGE LOADED # 01534 M01S01424.mse0009 ---| HLR$AUSF[0] = 0; 01535 M01S01425.mse0009 ---| HLR$AULF[0] = 0; 01536 M01S01426.mse0009 ---| END # CARTRIGE NO LOAD # 01537 M00S01427.sxdest ---| END 01538 M00S01428.sxdest ---|
Line S00040 Modification History | |
---|---|
M01 (Added by) | mse0009 |
Seq # *Modification Id* Act ----------------------------+ 01539 M01S00040.mse0009 +++| 01540 M01S00041.mse0009 +++|# 01541 M01S00042.mse0009 +++| RELEASE PREVIOUS CARTRIDGE SPACE ON CURRENT FILE. 01542 M01S00043.mse0009 +++|# 01543 M01S00044.mse0009 +++| 01544 M01S00045.mse0009 +++| P<ASA> = LOC(HLR$NEWASA[0]); 01545 M01S00046.mse0009 +++| 01546 M01S00047.mse0009 +++|# 01547 M01S00048.mse0009 +++| RECOVER FROM *ASA* IN *HLRQ*. 01548 M01S00049.mse0009 +++|# 01549 M01S00050.mse0009 +++| 01550 M01S00051.mse0009 +++| I = 0; # CLEAR FOR ERROR CHECK # 01551 M01S00052.mse0009 +++| IF ASAFCT[0] NQ HLR$FCTX[0] ## 01552 M01S00053.mse0009 +++| AND ASAFCT[0] NQ 0 01553 M01S00054.mse0009 +++| THEN 01554 M01S00055.mse0009 +++| BEGIN # RELEASE THE FIRST SET OF CARTRIDGE SPACE # 01555 M01S00056.mse0009 +++| RLS$FCT(HLR$FCTQ[0],0,STAT); 01556 M01S00057.mse0009 +++| TEMP = ASAFCT[0]; 01557 M01S00058.mse0009 +++| START = ASAAU[0]; 01558 M01S00059.mse0009 +++| USED = ASAGP[0]; 01559 M01S00060.mse0009 +++| 01560 M01S00061.mse0009 +++| IF STAT NQ CMASTAT"NOERR" 01561 M01S00062.mse0009 +++| THEN 01562 M01S00063.mse0009 +++| BEGIN 01563 M01S00064.mse0009 +++| DSERCAT(HLRQADR,STAT); 01564 M01S00065.mse0009 +++| GOTO DSERREND; 01565 M01S00066.mse0009 +++| END 01566 M01S00067.mse0009 +++| 01567 M01S00068.mse0009 +++| HLR$FCTQ[0] = 0; 01568 M01S00069.mse0009 +++| 01569 M01S00070.mse0009 +++|RLSTART: 01570 M01S00071.mse0009 +++| 01571 M01S00072.mse0009 +++| IF TEMP NQ HLR$FCTX[0] ## 01572 M01S00073.mse0009 +++| AND TEMP NQ 0 01573 M01S00074.mse0009 +++| THEN 01574 M01S00075.mse0009 +++| BEGIN # START NEW FCT LOCATION # 01575 M01S00076.mse0009 +++| ACQ$FCT(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],TEMP, ## 01576 M01S00077.mse0009 +++| QADDR,0,STAT); 01577 M01S00078.mse0009 +++| 01578 M01S00079.mse0009 +++| IF STAT NQ CMASTAT"NOERR" 01579 M01S00080.mse0009 +++| THEN 01580 M01S00081.mse0009 +++| BEGIN 01581 M01S00082.mse0009 +++| DSERCAT(HLRQADR,STAT); 01582 M01S00083.mse0009 +++| I = 1; 01583 M01S00084.mse0009 +++| GOTO DSERREND; 01584 M01S00085.mse0009 +++| END 01585 M01S00086.mse0009 +++| 01586 M01S00087.mse0009 +++| P<FCT> = QADDR + FCTQHL; 01587 M01S00088.mse0009 +++| UASTPRM(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],QADDR,STAT); 01588 M01S00089.mse0009 +++| 01589 M01S00090.mse0009 +++| REPEAT WHILE START NQ 0 01590 M01S00091.mse0009 +++| DO 01591 M01S00092.mse0009 +++| BEGIN 01592 M01S00093.mse0009 +++| TEMP1 = 0; 01593 M01S00094.mse0009 +++| SETFCTX(START); 01594 M01S00095.mse0009 +++| T1 = FCT$LINK(FWD,FPS); 01595 M01S00096.mse0009 +++| T2 = FCT$LEN(FWD,FPS) + 1; 01596 M01S00097.mse0009 +++| 01597 M01S00098.mse0009 +++|# 01598 M01S00099.mse0009 +++| CHECK FOR OFF-CARTRIDGE LINK 01599 M01S00100.mse0009 +++|# 01600 M01S00101.mse0009 +++| 01601 M01S00102.mse0009 +++| IF FCT$CLKOCL(FWD,FPS) NQ 0 01602 M01S00103.mse0009 +++| THEN 01603 M01S00104.mse0009 +++| BEGIN # OFF-CARTRIDGE LINK # 01604 M01S00105.mse0009 +++| IF FCT$CLKOCL(FWD,FPS) EQ 1 01605 M01S00106.mse0009 +++| THEN 01606 M01S00107.mse0009 +++| BEGIN 01607 M01S00108.mse0009 +++| B<0,1>FCT$OCLF[0] = 0; 01608 M01S00109.mse0009 +++| TEMP1 = USED * 16 + FCT$OCL[0]; 01609 M01S00110.mse0009 +++| END 01610 M01S00111.mse0009 +++| 01611 M01S00112.mse0009 +++| ELSE 01612 M01S00113.mse0009 +++| BEGIN 01613 M01S00114.mse0009 +++| IF FCT$CLKOCL(FWD,FPS) EQ 2 01614 M01S00115.mse0009 +++| THEN 01615 M01S00116.mse0009 +++| BEGIN 01616 M01S00117.mse0009 +++| B<1,1>FCT$OCLF[0] = 0; 01617 M01S00118.mse0009 +++| TEMP1 = USED * 16 + FCT$OCL1[0]; 01618 M01S00119.mse0009 +++| END 01619 M01S00120.mse0009 +++| 01620 M01S00121.mse0009 +++| ELSE 01621 M01S00122.mse0009 +++| BEGIN 01622 M01S00123.mse0009 +++| B<2,1>FCT$OCLF[0] = 0; 01623 M01S00124.mse0009 +++| TEMP1 = USED * 16 + FCT$OCL2[0]; 01624 M01S00125.mse0009 +++| END 01625 M01S00126.mse0009 +++| END 01626 M01S00127.mse0009 +++| 01627 M01S00128.mse0009 +++| IF TEMP1 GR (PRM$ENTRC[HLR$SM[0]] + 15) ## 01628 M01S00129.mse0009 +++| OR TEMP1 LS 16 01629 M01S00130.mse0009 +++| THEN 01630 M01S00131.mse0009 +++| BEGIN 01631 M01S00132.mse0009 +++| I = 1; 01632 M01S00133.mse0009 +++| GOTO DSERREND; 01633 M01S00134.mse0009 +++| END 01634 M01S00135.mse0009 +++| 01635 M01S00136.mse0009 +++| END 01636 M01S00137.mse0009 +++| 01637 M01S00138.mse0009 +++| RLSVOL(HLRQADR,QADDR,START,T2); 01638 M01S00139.mse0009 +++| P<FCT> = QADDR + FCTQHL; 01639 M01S00140.mse0009 +++| START = T1; 01640 M01S00141.mse0009 +++| 01641 M01S00142.mse0009 +++| IF TEMP1 NQ 0 01642 M01S00143.mse0009 +++| THEN 01643 M01S00144.mse0009 +++| BEGIN 01644 M01S00145.mse0009 +++| TEMP = TEMP1; 01645 M01S00146.mse0009 +++| P<FCT> = QADDR + FCTQHL; 01646 M01S00147.mse0009 +++| UASTPRM(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],QADDR,STAT); 01647 M01S00148.mse0009 +++| RLS$FCT(QADDR,0,STAT); 01648 M01S00149.mse0009 +++| IF STAT NQ CMASTAT"NOERR" 01649 M01S00150.mse0009 +++| THEN 01650 M01S00151.mse0009 +++| BEGIN 01651 M01S00152.mse0009 +++| DSERCAT(HLRQADR,STAT); 01652 M01S00153.mse0009 +++| I = 1; 01653 M01S00154.mse0009 +++| GOTO DSERREND; 01654 M01S00155.mse0009 +++| END 01655 M01S00156.mse0009 +++| GOTO RLSTART; 01656 M01S00157.mse0009 +++| END 01657 M01S00158.mse0009 +++| 01658 M01S00159.mse0009 +++| END # END OF DO LOOP # 01659 M01S00160.mse0009 +++| 01660 M01S00161.mse0009 +++| P<FCT> = QADDR + FCTQHL; 01661 M01S00162.mse0009 +++| UASTPRM(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],QADDR,STAT); 01662 M01S00163.mse0009 +++| RLS$FCT(QADDR,0,STAT); 01663 M01S00164.mse0009 +++| IF STAT NQ CMASTAT"NOERR" 01664 M01S00165.mse0009 +++| THEN 01665 M01S00166.mse0009 +++| BEGIN 01666 M01S00167.mse0009 +++| DSERCAT(HLRQADR,STAT); 01667 M01S00168.mse0009 +++| I = 1; 01668 M01S00169.mse0009 +++| GOTO DSERREND; 01669 M01S00170.mse0009 +++| END 01670 M01S00171.mse0009 +++| END # END OF NEW *FCT* LOACTION FIND # 01671 M01S00172.mse0009 +++| 01672 M01S00173.mse0009 +++|# 01673 M01S00174.mse0009 +++| RESET THE ORGINAL CURRENT CARTRIDGE FCT. 01674 M01S00175.mse0009 +++|# 01675 M01S00176.mse0009 +++| 01676 M01S00177.mse0009 +++| 01677 M01S00178.mse0009 +++|DSERREND: 01678 M01S00179.mse0009 +++| 01679 M01S00180.mse0009 +++| IF I NQ 0 # CHECK FOR AN ERROR IN ERROR CLEAN UP # 01680 M01S00181.mse0009 +++| THEN 01681 M01S00182.mse0009 +++| BEGIN 01682 M01S00183.mse0009 +++| MSG(MSGMB,UDFL1); 01683 M01S00184.mse0009 +++| IF HLR$FCTQ[0] EQ 0 # IF NO CARTRIDGE # 01684 M01S00185.mse0009 +++| THEN 01685 M01S00186.mse0009 +++| BEGIN 01686 M01S00187.mse0009 +++| GOTO CKSPECIAL; 01687 M01S00188.mse0009 +++| END 01688 M01S00189.mse0009 +++| END 01689 M01S00190.mse0009 +++| 01690 M01S00191.mse0009 +++| HLR$NEWASA[0] = 0; # CLEAR FOR FURTHER RECOVERY # 01691 M01S00192.mse0009 +++| 01692 M01S00193.mse0009 +++| IF HLR$FCTX[0] EQ 0 01693 M01S00194.mse0009 +++| THEN 01694 M01S00195.mse0009 +++| BEGIN 01695 M01S00196.mse0009 +++| GOTO CKSPECIAL; 01696 M01S00197.mse0009 +++| END 01697 M01S00198.mse0009 +++| 01698 M01S00199.mse0009 +++| ACQ$FCT(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],HLR$FCTX[0], ## 01699 M01S00200.mse0009 +++| QADDR,0,STAT); 01700 M01S00201.mse0009 +++| 01701 M01S00202.mse0009 +++| IF STAT NQ CMASTAT"NOERR" 01702 M01S00203.mse0009 +++| THEN 01703 M01S00204.mse0009 +++| BEGIN 01704 M01S00205.mse0009 +++| DSERCAT(HLRQADR,STAT); 01705 M01S00206.mse0009 +++| HLR$AUSF[0] = 0; 01706 M01S00207.mse0009 +++| HLR$AULF[0] = 0; 01707 M01S00208.mse0009 +++| GOTO STARTSTEP11; 01708 M01S00209.mse0009 +++| END 01709 M01S00210.mse0009 +++| 01710 M01S00211.mse0009 +++| P<FCT> = QADDR + FCTQHL; 01711 M01S00212.mse0009 +++| UASTPRM(TDAMFAM[0],TDAMSBF[0],HLR$SM[0],QADDR,STAT); 01712 M01S00213.mse0009 +++| HLR$FCTQ[0] = QADDR; 01713 M01S00214.mse0009 +++| END 01714 M01S00215.mse0009 +++| 01715 M01S00216.mse0009 +++| 01716 M01S00217.mse0009 +++|CKSPECIAL: 01717 M01S00218.mse0009 +++| IF HLR$ERRC[0] EQ ERRST"SPECIAL" 01718 M01S00219.mse0009 +++| THEN 01719 M01S00220.mse0009 +++| BEGIN # NO CARTRIDGE LOADED # 01720 M01S00221.mse0009 +++| HLR$AUSF[0] = 0; 01721 M01S00222.mse0009 +++| HLR$AULF[0] = 0; 01722 M01S00223.mse0009 +++| END # CARTRIDGE NO LOAD # 01723 M01S00224.mse0009 +++| 01724 M00S01429.sxdest +++| END # STEP 10 # 01725 M00S01430.sxdest +++| 01726 M00S01431.sxdest +++| CONTROL EJECT; 01727 M00S01432.sxdest +++| 01728 M00S01433.sxdest +++|# 01729 M00S01434.sxdest +++|* STEP 11 - COMPLETE THIS FILE AND PROCEED WITH NEXT ONE. 01730 M00S01435.sxdest +++|* - RETURN FILE USED FOR DESTAGING. 01731 M00S01436.sxdest +++|* - CALL *DSNTDAM* TO OBTAIN NEXT FILE TO DESTAGE. 01732 M00S01437.sxdest +++|* - UPDATE *AST* TO REFLECT AVAILABLE AU, IF APPROPRIATE. 01733 M00S01438.sxdest +++|* - SWITCH TO STAGING, IF APPROPRIATE. 01734 M00S01439.sxdest +++|* - UNLOAD CARTRIDGE, IF NO MORE FILES FOR IT. 01735 M00S01440.sxdest +++|* - UPDATE *FCT* TO REFLECT USAGE COUNTS. 01736 M00S01441.sxdest +++|* - RELEASE INTERLOCKS ON SUBFAMILY CATALOGS. 01737 M00S01442.sxdest +++|# 01738 M00S01443.sxdest +++| 01739 M01S00225.mse0009 +++|STARTSTEP11: 01740 M00S01444.sxdest +++| ZSETFET(LOC(SCR$FET[0]),HLR$FLNM[0],0,0,SFETL); # RETURN FILE # 01741 M00S01445.sxdest +++| RETERN(SCR$FET[0],RCL); 01742 M00S01446.sxdest +++| 01743 M00S01447.sxdest +++| HLR$FFILE[0] = FALSE; 01744 M00S01448.sxdest +++| 01745 M00S01449.sxdest +++| DSNTDAM(HLRQADR); 01746 M00S01450.sxdest +++| 01747 M00S01451.sxdest +++|# 01748 M00S01452.sxdest +++|* UPDATE THE *AST* IF DONE DESTAGING TO THIS CARTRIDGE. 01749 M00S01453.sxdest +++|# 01750 M00S01454.sxdest +++|
Line S01455 Modification History | |
---|---|
M01 (Removed by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01751 M01S01455.sxdest2 ---| FLAG = (HLR$UNLD[0]) OR (TDAMFC[0] EQ TDAMFCODE"NOREQ");
Line S00046 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01752 M01S00046.sxdest2 +++| FLAG = (HLR$UNLD[0]) 01753 M01S00047.sxdest2 +++| OR (TDAMFC[0] EQ TDAMFCODE"NOREQ") 01754 M01S00048.sxdest2 +++| OR (TDAMFC[0] EQ TDAMFCODE"STAGE"); 01755 M00S01456.sxdest +++| 01756 M00S01457.sxdest +++| IF (HLR$FCTQ[0] NQ 0) AND ## 01757 M00S01458.sxdest +++| (FLAG OR (HLR$HPN[0] EQ HLRPN"STAGE" ) ) 01758 M00S01459.sxdest +++| THEN # UPDATE THE *AST* # 01759 M00S01460.sxdest +++| BEGIN 01760 M00S01461.sxdest +++| P<FCTQ> = HLR$FCTQ[0]; 01761 M00S01462.sxdest +++| UASTPRM(FCTQFAMILY[0],FCTQSUBF[0],HLR$SM[0], ## 01762 M00S01463.sxdest +++| HLR$FCTQ[0],STAT); 01763 M00S01464.sxdest +++| 01764 M00S01465.sxdest +++| IF STAT NQ CMASTAT"NOERR" 01765 M00S01466.sxdest +++| THEN 01766 M00S01467.sxdest +++| BEGIN 01767 M00S01468.sxdest +++| DSERCAT(HLRQADR,STAT); 01768 M00S01469.sxdest +++| END 01769 M00S01470.sxdest +++| 01770 M00S01471.sxdest +++| END 01771 M00S01472.sxdest +++| 01772 M00S01473.sxdest +++|# 01773 M00S01474.sxdest +++|* IF THIS *HLRQ* IS TO BE USED TO DO STAGING FROM THIS CARTRIDGE, 01774 M00S01475.sxdest +++|* TRANSFER CONTROL TO *STAGER*. 01775 M00S01476.sxdest +++|# 01776 M00S01477.sxdest +++| 01777 M00S01478.sxdest +++| IF HLR$HPN[0] EQ HLRPN"STAGE" 01778 M00S01479.sxdest +++| THEN 01779 M00S01480.sxdest +++| BEGIN 01780 M00S01481.sxdest +++| IF DSC$LKMSK NQ 0 01781 M00S01482.sxdest +++| THEN 01782 M00S01483.sxdest +++| BEGIN 01783 M00S01484.sxdest +++| CRELSLK(DSC$FAM,DSC$LKMSK,0,STAT); 01784 M00S01485.sxdest +++| DSC$LKMSK = 0; 01785 M00S01486.sxdest +++| END 01786 M00S01487.sxdest +++| 01787 M00S01488.sxdest +++| RETURN; 01788 M00S01489.sxdest +++| END 01789 M00S01490.sxdest +++| 01790 M00S01491.sxdest +++|# 01791 M00S01492.sxdest +++|* EXIT IF NEXT FILE IS TO GO TO THIS CARTRIDGE. 01792 M00S01493.sxdest +++|# 01793 M00S01494.sxdest +++| 01794 M00S01495.sxdest +++| IF NOT FLAG 01795 M00S01496.sxdest +++| THEN # DESTAGE NEXT FILE TO SAME 01796 M00S01497.sxdest +++| CARTRIDGE # 01797 M00S01498.sxdest +++| BEGIN 01798 M00S01499.sxdest +++| ADD$LNK(HLRQADR,LCHN"HL$READY",0); 01799 M00S01500.sxdest +++| RETURN; 01800 M00S01501.sxdest +++| END 01801 M00S01502.sxdest +++| IF HLR$FCTQ[0] NQ 0 01802 M00S01503.sxdest +++| THEN # RELEASE *FCT* ENTRY # 01803 M00S01504.sxdest +++| BEGIN 01804 M00S01505.sxdest +++| P<FCTQ> = HLR$FCTQ[0]; 01805 M00S01506.sxdest +++| 01806 M00S01507.sxdest +++| UPUSAGE(HLRQADR,HLR$FCTQ[0]); 01807 M00S01508.sxdest +++| 01808 M00S01509.sxdest +++| 01809 M00S01510.sxdest +++| RLS$FCT(HLR$FCTQ[0],0,STAT); 01810 M00S01511.sxdest +++| IF STAT NQ CMASTAT"NOERR" 01811 M00S01512.sxdest +++| THEN 01812 M00S01513.sxdest +++| BEGIN 01813 M00S01514.sxdest +++| DSERCAT(HLRQADR,STAT); 01814 M00S01515.sxdest +++| END 01815 M00S01516.sxdest +++| 01816 M00S01517.sxdest +++| HLR$FCTQ[0] = 0;
Line S00002 Modification History | |
---|---|
M01 (Added by) | mse2 |
Seq # *Modification Id* Act ----------------------------+ 01817 M01S00002.mse2 +++| HLR$FCTX[0] = 0; 01818 M00S01518.sxdest +++| 01819 M00S01519.sxdest +++| END 01820 M00S01520.sxdest +++| 01821 M00S01521.sxdest +++| 01822 M00S01522.sxdest +++|# 01823 M00S01523.sxdest +++|* UNLOAD CARTRIDGE IF ONE WAS SUCCESSFULLY LOADED. 01824 M00S01524.sxdest +++|# 01825 M00S01525.sxdest +++| 01826 M00S01526.sxdest +++|
Line S01527 Modification History | |
---|---|
M01 (Removed by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01827 M01S01527.sxdest2 ---| IF HLR$LRQADR[0] NQ 0 01828 M01S01528.sxdest2 ---| THEN 01829 M01S01529.sxdest2 ---| BEGIN # UNLOAD OLD CARTRIDGE # 01830 M00S01530.sxdest ---| IF HLR$HLRQW[0] NQ 0 01831 M00S01531.sxdest ---| THEN 01832 M00S01532.sxdest ---| BEGIN # SWITCH CONTROL OF *DRD* TO WAITTING *HLRQ* # 01833 M00S01533.sxdest ---| TEMP = HLR$DRDRA[0]; 01834 M00S01534.sxdest ---| TEMP1 = HLR$LRQADR[0]; 01835 M00S01535.sxdest ---| P<HLRQ> = HLR$HLRQW[0]; 01836 M00S01536.sxdest ---| HLR$DRDRA[0] = TEMP; 01837 M00S01537.sxdest ---| HLR$LRQADR[0] = TEMP1;
Line S00049 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01838 M01S00049.sxdest2 +++| 01839 M01S00050.sxdest2 +++| IF HLR$LRQADR[0] EQ 0 01840 M01S00051.sxdest2 +++| THEN 01841 M01S00052.sxdest2 +++| BEGIN # TELL NEXT HLRQ CARTRIDGE LOADED BAD # 01842 M01S00053.sxdest2 +++| HLR$RESP[0] = ERRST"TEMP"; 01843 M01S00054.sxdest2 +++| END 01844 M01S00055.sxdest2 +++| 01845 M00S01538.sxdest +++| P<HLRQ> = HLRQADR; 01846 M00S01539.sxdest +++| ADD$LNK(HLR$HLRQW[0],LCHN"HL$READY",0); 01847 M00S01540.sxdest +++| P<LLRQ> = HLR$LRQADR[0]; 01848 M00S01541.sxdest +++| LLR$UCPRA[0] = HLR$HLRQW[0]; # INSURE PPU POINTS TO 01849 M00S01542.sxdest +++| NEW *HLRQ* # 01850 M00S01543.sxdest +++| P<CLEAR> = HLR$DRDRA[0]; 01851 M00S01544.sxdest +++| RESETDRD = HLR$HLRQW[0]; 01852 M00S01545.sxdest +++| HLR$HLRQW[0] = 0; 01853 M00S01546.sxdest +++| HLR$DRDRA[0] = 0; 01854 M00S01547.sxdest +++| HLR$LRQADR[0] = 0; 01855 M00S01548.sxdest +++| END 01856 M00S01549.sxdest +++|
Line S01550 Modification History | |
---|---|
M01 (Removed by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01857 M01S01550.sxdest2 ---| ELSE
Line S00056 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01858 M01S00056.sxdest2 +++| IF HLR$LRQADR[0] NQ 0 01859 M01S00057.sxdest2 +++| THEN 01860 M00S01551.sxdest +++| BEGIN # DO UNLOAD OF CARTRIDGE # 01861 M00S01552.sxdest +++| P<LLRQ> = HLR$LRQADR[0]; 01862 M00S01553.sxdest +++| MSGAFDF("I","UL",0,HLRQADR); 01863 M00S01554.sxdest +++| LLR$DR[0] = ERRST"NOERR"; 01864 M00S01555.sxdest +++| LLR$PRCNME[0] = REQTYP4"UNLD$CART"; 01865 M00S01556.sxdest +++| LLR$PRCST[0] = PROCST"INITIAL"; 01866 M00S01557.sxdest +++| HLR$HPS[0] = DSLABEL"DS11A"; 01867 M00S01558.sxdest +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 01868 M00S01559.sxdest +++| RETURN; 01869 M00S01560.sxdest +++| 01870 M00S01561.sxdest +++|DS11A: # RETURN FROM UNLOAD OF CARTRIDGE # 01871 M00S01562.sxdest +++| 01872 M00S01563.sxdest +++| IF HLR$RESP[0] NQ RESPTYP4"OK4" 01873 M00S01564.sxdest +++| THEN 01874 M00S01565.sxdest +++| BEGIN 01875 M00S01566.sxdest +++| 01876 M00S01567.sxdest +++|# 01877 M00S01568.sxdest +++|* PROCESS UNLOAD CARTRIDGE ERROR AS FOLLOWS: 01878 M00S01569.sxdest +++|* -DRIVER PLACED ORIGINAL CARTRIDGE IN OUTPUT STATION. 01879 M00S01570.sxdest +++|* -ASSUME A SECOND CARTRIDGE WAS IN DESTINATION CELL. 01880 M00S01571.sxdest +++|* -ATTEMPT TO MOVE THIS 2ND CARTRIDGE TO THE OUTPUT 01881 M00S01572.sxdest +++|* STATION BY LOADING IT. 01882 M00S01573.sxdest +++|* -IF THE LOAD SUCCEEDS, DO A SECOND UNLOAD BACK TO 01883 M00S01574.sxdest +++|* THE ORIGINAL DESTINATION. 01884 M00S01575.sxdest +++|# 01885 M00S01576.sxdest +++| 01886 M00S01577.sxdest +++| HLLDSET((HLRQADR)); # SET UP SECOND LOAD # 01887 M00S01578.sxdest +++| HLR$HPS[0] = DSLABEL"DS11B"; 01888 M00S01579.sxdest +++| RETURN; 01889 M00S01580.sxdest +++| 01890 M00S01581.sxdest +++|DS11B: # RETURN FROM SECOND LOAD # 01891 M00S01582.sxdest +++| 01892 M00S01583.sxdest +++| IF HLR$RESP[0] EQ RESPTYP4"OK4" 01893 M00S01584.sxdest +++| THEN # UNLOAD 2ND CARTRIDGE # 01894 M00S01585.sxdest +++| BEGIN 01895 M00S01586.sxdest +++| LLR$PRCNME[0] = REQTYP4"UNLD$CART"; 01896 M00S01587.sxdest +++| LLR$PRCST[0] = PROCST"INITIAL"; 01897 M00S01588.sxdest +++| HLR$HPS[0] = DSLABEL"DS11C"; 01898 M00S01589.sxdest +++| ADD$LNK(HLR$LRQADR[0],LCHN"LL$READY",0); 01899 M00S01590.sxdest +++| RETURN; 01900 M00S01591.sxdest +++| 01901 M00S01592.sxdest +++|DS11C: 01902 M00S01593.sxdest +++| END # UNLOAD OF 2ND REQUEST # 01903 M00S01594.sxdest +++| END # LOAD OF 2ND REQUEST # 01904 M00S01595.sxdest +++| P<CLEAR> = HLR$DRDRA[0]; 01905 M00S01596.sxdest +++| CLN = 0; 01906 M00S01597.sxdest +++| HLR$DRDRA[0] = 0; 01907 M00S01598.sxdest +++| 01908 M00S01599.sxdest +++| END # PHYSICAL CARTRIDGE UNLOAD #
Line S01600 Modification History | |
---|---|
M01 (Removed by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01909 M01S01600.sxdest2 ---| END # ORIGINAL UNLOAD REQUEST # 01910 M00S01601.sxdest ---| 01911 M00S01602.sxdest ---| HLR$UNLD[0] = FALSE; 01912 M00S01603.sxdest ---| IF DSC$LKMSK NQ 0 01913 M00S01604.sxdest ---| THEN # TIME TO RELEASE INTERLOCKS # 01914 M00S01605.sxdest ---| BEGIN 01915 M00S01606.sxdest ---| CRELSLK(DSC$FAM,DSC$LKMSK,0,STAT); 01916 M00S01607.sxdest ---| DSC$LKMSK = 0; 01917 M00S01608.sxdest ---| END 01918 M00S01609.sxdest ---|
Line S00058 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01919 M01S00058.sxdest2 +++|ENDALL: 01920 M01S00059.sxdest2 +++| 01921 M01S00060.sxdest2 +++| IF TDAMFC[0] EQ TDAMFCODE"STAGE" 01922 M01S00061.sxdest2 +++| THEN 01923 M01S00062.sxdest2 +++| BEGIN # *DSNTDAM* PROC FOUND NO ROOM - DO NOT 01924 M01S00063.sxdest2 +++| RECALL DESTAGE ROUTINE # 01925 M01S00064.sxdest2 +++| DSC$INIT = 0;
Line S00001 Modification History | |
---|---|
M01 (Added by) | msea024 |
Seq # *Modification Id* Act ----------------------------+ 01926 M01S00001.msea024 +++| DSC$WRESRS = 1;
Line S00065 Modification History | |
---|---|
M01 (Added by) | sxdest2 |
Seq # *Modification Id* Act ----------------------------+ 01927 M01S00065.sxdest2 +++| HLR$HPS[0] = PROCST"COMPLETE"; 01928 M01S00066.sxdest2 +++| RETURN; 01929 M01S00067.sxdest2 +++| END 01930 M01S00068.sxdest2 +++| 01931 M00S01610.sxdest +++| IF TDAMFC[0] NQ TDAMFCODE"NOREQ" 01932 M00S01611.sxdest +++| THEN 01933 M00S01612.sxdest +++| BEGIN 01934 M00S01613.sxdest +++| HLR$HPS[0] = PROCST"INITIAL"; 01935 M00S01614.sxdest +++| ADD$LNK(HLRQADR,LCHN"HL$READY",0); 01936 M00S01615.sxdest +++| END 01937 M00S01616.sxdest +++| 01938 M00S01617.sxdest +++| ELSE 01939 M00S01618.sxdest +++| BEGIN 01940 M00S01619.sxdest +++| HLR$HPS[0] = PROCST"COMPLETE"; 01941 M00S01620.sxdest +++| DSC$INIT = 1; 01942 M00S01621.sxdest +++| END 01943 M00S01622.sxdest +++| 01944 M00S01623.sxdest +++|# 01945 M00S01624.sxdest +++|* END STEP 11. 01946 M00S01625.sxdest +++|# 01947 M00S01626.sxdest +++| 01948 M00S01627.sxdest +++| RETURN; 01949 M00S01628.sxdest +++| END # DESTAGR # 01950 M00S01629.sxdest +++| 01951 M00S01630.sxdest +++| TERM 01952 M00S01631.sxdest +++|PROC DSALLO((HLRQADR)); 01953 M00S01632.sxdest +++| 01954 M00S01633.sxdest +++|# TITLE DSALLO - ALLOCATE A VOLUME ON A M860 CARTRIDGE. # 01955 M00S01634.sxdest +++| 01956 M00S01635.sxdest +++| BEGIN # DSALLO # 01957 M00S01636.sxdest +++| 01958 M00S01637.sxdest +++|# 01959 M00S01638.sxdest +++|** DSALLO - ALLOCATE A VOLUME ON A M860 CARTRIDGE. 01960 M00S01639.sxdest +++|* 01961 M00S01640.sxdest +++|* AN INITIAL CALL TO *DSALLO* SELECTS THE STORAGE MODULE 01962 M00S01641.sxdest +++|* (*SM*), CARTRIDGE GROUP, SPECIFIC CARTRIDGE, AND FIRST 01963 M00S01642.sxdest +++|* VOLUME TO USE ON THAT CARTRIDGE. 01964 M00S01643.sxdest +++|* ON SUBSEQUENT CALLS, *DSALLO* WILL ASSIGN ADDITIONAL 01965 M00S01644.sxdest +++|* VOLUMES ON THE SAME CARTRIDGE. IN A CARTRIDGE OVERFLOW 01966 M00S01645.sxdest +++|* SITUATION, NEW CARTRIDGES IN THE SAME GROUP AS THE FIRST 01967 M00S01646.sxdest +++|* CARTRIDGE WILL BE ASSIGNED IN ORDER TO ACQUIRE THE M860 01968 M00S01647.sxdest +++|* SPACE NECESSARY TO DESTAGE A LONG FILE. 01969 M00S01648.sxdest +++|* 01970 M00S01649.sxdest +++|* PROC DSALLO((HLRQADR)) 01971 M00S01650.sxdest +++|* 01972 M00S01651.sxdest +++|* ENTRY (HLRQADR) - ADDRESS OF THE *HLRQ* ENTRY FOR A 01973 M00S01652.sxdest +++|* DESTAGE REQUEST. 01974 M00S01653.sxdest +++|* (HLR$FFILE) - IF FIRST FILE OF A SEQUENCE OF FILES.
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sxdest.txt ยท Last modified: (external edit)