User Tools

Site Tools


Action unknown: copypageplugin__copy
cdc:nos2.source:opl.opl871:deck:sxdest

Deck SXDEST

Library Member Format: MODIFY

Listing Sections

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)