         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
<< 12/1/85  Dave Rubin  -FSPF121-                              <<01834>>00068010
<<  Fixed a problem with the copy command when trying to    >> <<01834>>00068100
<< copy multiple files to a labelled tape.  Added parameter >> <<01834>>00068200
<< to the NEW'FILE'CLOSE routine to determine if multiple   >> <<01834>>00068300
<< files were being copied, if so the device is closed temp.>> <<01834>>00068400
<< with no rewind.                                          >> <<01834>>00068500
                                                               <<h2027>>00070100
<<**********************************************************>> <<h2027>>00070200
<< Version G.02.01 of SPOOK5 contains the fixes needed for  >> <<h2027>>00070300
<< reading MPE XL (HPE) format spook tapes.  An explanation >> <<h2027>>00070400
<< of tape formats is given in the global declaration area  >> <<h2027>>00070500
<<**********************************************************>> <<h2027>>00070600
                                                               <<h2027>>00184100
<< Version Subentry Information - subentry size is different>> <<h2027>>00184200
<< for different versions.                                  >> <<h2027>>00184300
                                                               <<h2027>>00184400
EQUATE                                                         <<h2027>>00184500
   MPE4XDDS'SIZE = 30,                                         <<h2027>>00184600
   MPE5XDDS'SIZE = 32,                                         <<h2027>>00184700
   HPE0XDDS'SIZE = 40;                                         <<h2027>>00184800
                                                               <<h2027>>00184900
INTEGER I,COUNT,CNT,FCOUNT;                                    <<F2027>>00232000
   FOPTIONS := 0,                                              <<01834>>00426100
<<**********************************************************>> <<h2027>>00514110
<< SPOOK TAPE FORMAT                                        >> <<h2027>>00514120
<<                                                          >> <<h2027>>00514130
<<  LABEL  DIRECTORIES  DEV/CLASS DIR  FILES       TRAILER  >> <<h2027>>00514140
<< ________________________________________________________ >> <<h2027>>00514150
<< |     | 12 12  12  |              |            |       | >> <<h2027>>00514160
<< |     |            |              |            |       | >> <<h2027>>00514170
<< |_____|____________|______________|____________|_______| >> <<h2027>>00514180
<<  40W   1020W recs    1024W block    var          40W     >> <<h2027>>00514190
<<                                                          >> <<h2027>>00514200
<<  LABEL - This is the header label of the tape.  If it is >> <<h2027>>00514210
<<          missing or is filled with corrupted data, then  >> <<h2027>>00514220
<<          a "bad tape format" err 53 will be sent to the  >> <<h2027>>00514230
<<          console.  The Label format is as follows:       >> <<h2027>>00514240
<<          Words 0-13:  "SPOOLFILETAPE LABEL-HP/3000."     >> <<h2027>>00514250
<<          Word    23:  Reel number 1 to last reel         >> <<h2027>>00514260
<<          Word    24:  Date                               >> <<h2027>>00514270
<<          Words 25-26: Time                               >> <<h2027>>00514280
<<          Words 30-32: version number (ascii)             >> <<h2027>>00514290
<<          all other words are zero                        >> <<h2027>>00514291
<<                                                          >> <<h2027>>00514300
<<  DIRECTORIES - One 12 word directory entry is made for   >> <<h2027>>00514310
<<          every file present on the tape.  The 12 word    >> <<h2027>>00514320
<<          directory entries are placed in as many         >> <<h2027>>00514330
<<          1020 records as is necessary to have one entry  >> <<h2027>>00514340
<<          per file.  The last 1020 word record will be    >> <<h2027>>00514350
<<          padded with zeros as necessary.  The directory  >> <<h2027>>00514360
<<          format is:                                      >> <<h2027>>00514370
<<          Word     0: Device file id # (if bit0 is set    >> <<h2027>>00514380
<<                          then its an output spoolfile)   >> <<h2027>>00514390
<<          Words  1-3: zero                                >> <<h2027>>00514410
<<          Words  4-7: User Name                           >> <<h2027>>00514420
<<          Words 8-11: Account Name                        >> <<h2027>>00514430
<<                                                          >> <<h2027>>00514440
<<  DEVICE & CLASS DIRECTORIES - Ldev and Class entries are >> <<h2027>>00514450
<<          randomly interspersed in a single 1024 word     >> <<h2027>>00514460
<<          record.  As the procedure outdirectory builds   >> <<h2027>>00514470
<<          this record, it places Ldev and Class entries   >> <<h2027>>00514480
<<          in the following manner.  If a spoolfile is     >> <<h2027>>00514490
<<          associated with an Ldev, then the record is     >> <<h2027>>00514500
<<          searched for that Ldev entry.  If the Ldev      >> <<h2027>>00514510
<<          entry is not found, then it is placed on the    >> <<h2027>>00514520
<<          record.  Spoolfiles associated with Classes     >> <<h2027>>00514530
<<          are handled in a similar manner, but with an    >> <<h2027>>00514540
<<          extra twist.  If the Class entry is not found   >> <<h2027>>00514550
<<          in the record, then it is added.  In addition,  >> <<h2027>>00514560
<<          the record is searched for all the Ldevs        >> <<h2027>>00514570
<<          contained in that Class.  Those Ldevs which are >> <<h2027>>00514580
<<          not present are added to the record.  Thus the  >> <<h2027>>00514590
<<          random interspersing as mentioned earlier.      >> <<h2027>>00514600
<<               Ldev and Class structures are show below.  >> <<h2027>>00514610
<<                                                          >> <<h2027>>00514620
<<          LDEV entry                                      >> <<h2027>>00514630
<<          ___________________________                     >> <<h2027>>00514640
<<      0   | logical device number   |                     >> <<h2027>>00514650
<<          |_________________________|                     >> <<h2027>>00514660
<<      1   |dev subtype| entry length|                     >> <<h2027>>00514670
<<          |___________|_____________|                     >> <<h2027>>00514680
<<      2   | device type             |                     >> <<h2027>>00514690
<<          |_________________________|                     >> <<h2027>>00514700
<<                                                          >> <<h2027>>00514710
<<   DEVICE CLASS ENTRIES -                                 >> <<h2027>>00514720
<<          Word  0: Device class number (negated). This is >> <<h2027>>00514730
<<                       the number of the entry of this    >> <<h2027>>00514740
<<                       device class in the system's DCT.  >> <<h2027>>00514750
<<          Word  1: Total number of words in this entry    >> <<h2027>>00514760
<<          Words 2+  contents of the associated DCT entry  >> <<h2027>>00514770
<<                    described below.                      >> <<h2027>>00514780
<<                                                          >> <<h2027>>00514790
<<     DCT MPE5/HPE                   DCT MPE4              >> <<h2027>>00514800
<<  ________________________      ________________________  >> <<h2027>>00514810
<<  | class name (ascii)   | 0-3  | class name (ascii)   |  >> <<h2027>>00514820
<<  |______________________|      |______________________|  >> <<h2027>>00514830
<<  |______________________|  4   |______________________|  >> <<h2027>>00514840
<<  |number of dev in class|  5   |# of dev in|          |  >> <<h2027>>00514850
<<  |______________________|      |__class____|__________|  >> <<h2027>>00514860
<<  |  Ldev 1              |  6   | Ldev 2    | Ldev 1   |  >> <<h2027>>00514870
<<  |______________________|      |___________|__________|  >> <<h2027>>00514880
<<  |  Ldev 2              |  7   | Ldev 4    | Ldev 3   |  >> <<h2027>>00514890
<<  |______________________|      |___________|__________|  >> <<h2027>>00514900
<<  |                      |      |           |          |  >> <<h2027>>00514910
<<  |______________________| ...  |___________|__________|  >> <<h2027>>00514920
<<  |  Ldev n              |      | Ldev 2n   | Ldev 2n-1|  >> <<h2027>>00514930
<<  |______________________|      |___________|__________|  >> <<h2027>>00514940
<<                                                          >> <<h2027>>00514950
<<  FILES - Files are placed on the tape in sequencial      >> <<h2027>>00514960
<<          order in the form of xdd subentry followed by   >> <<h2027>>00514970
<<          the actual file blocks.                         >> <<h2027>>00514980
<<               The subentries are different lengths on    >> <<h2027>>00514990
<<          different versions; so as files are being read  >> <<h2027>>00515000
<<          read in on a tape created on a different version>> <<h2027>>00515010
<<          a translation must be preformed.  This occurs in>> <<h2027>>00515020
<<          procedure infiles.                              >> <<h2027>>00515030
<<                                                          >> <<h2027>>00515040
<<  TRAILER - Has the exact same format as the LABEL.       >> <<h2027>>00515050
<<                                                          >> <<h2027>>00515060
<<**********************************************************>> <<h2027>>00515070
                                                               <<h2027>>00515080
EQUATE                                                         <<h2027>>00515090
   TAPE'ID'SIZE = 16,                                          <<h2027>>00515100
   TAPE'LABEL'SIZE = 40;                                       <<h2027>>00515110
                                                               <<h2027>>00515120
   L0MPE5    = TBUF(30)#,                                      <<h2027>>00538000
   L0HPE     = TBUF(30)#;                                      <<h2027>>00539000
LOGICAL                                                        <<h2027>>00543100
   HPETAPE;                                                    <<h2027>>00543200
ARRAY TAPEHPE0(0:2) :=                                         <<h2027>>00632500
      "MPE XL";                                                <<h2027>>00632600
DEFINE LABEL'DEVICE = FOPTIONS.(6:1)#;                         <<01834>>00746200
LOGICAL PROCEDURE NEW'FILE'CLOSE(OLD,FUNC);                    <<01834>>00962000
   VALUE OLD,FUNC;                                             <<01834>>00964000
   LOGICAL OLD,FUNC;                                           <<01834>>00966000
DOUBLE PROCEDURE XDDSPOOLINFO (DVALUE, BITMAP, XDD'SUBENTRY);  <<11692>>00992010
   VALUE   DVALUE, BITMAP, XDD'SUBENTRY;                       <<11692>>00992020
   DOUBLE  DVALUE;                                             <<11692>>00992030
   LOGICAL BITMAP;                                             <<11692>>00992040
   LOGICAL POINTER XDD'SUBENTRY;                               <<11692>>00992050
   OPTION  PRIVILEGED, UNCALLABLE, EXTERNAL;                   <<11692>>00992060
                                                               <<11692>>00992070
  COMMENT --                                                   <<11692>>00992080
   XDDSPOOLINFO is a hodgepodge of an XDD access  routine.  It <<11692>>00992090
allows  the  caller to get/put/test/modify/increment/decrement <<11692>>00992100
one field in the XDD subentry whose  segment-relative  address <<11692>>00992110
is  passed  in.  (XDD'SUBENTRY bit 0:  TRUE ==> ODD, FALSE ==> <<11692>>00992120
IDD).  The field to be accessed, as well as what is to be done <<11692>>00992130
with it, is determined by the BITMAP parameter (see below  for <<11692>>00992140
details).  New  values  for fields are passed in DVALUE, while <<11692>>00992150
any existing or modified values are returned in the result.    <<11692>>00992160
  Since only one operation per call is allowed, the least sig- <<11692>>00992170
nificant bit in BITMAP (except bit 15, which  is  a  direction <<11692>>00992180
bit) determines which operation is performed.                  <<11692>>00992190
                                                               <<11692>>00992200
BITMAP    BITMAP               FUNCTION                        <<11692>>00992210
 bit      bit 15                                               <<11692>>00992220
-------------------------------------------------------------- <<11692>>00992230
                                                               <<11692>>00992240
  0          X      Not defined.                               <<11692>>00992250
                                                               <<11692>>00992260
  1          X      Not defined.                               <<11692>>00992270
                                                               <<11692>>00992280
  2          X      Not defined.                               <<11692>>00992290
                                                               <<11692>>00992300
  3          1      Set Job Aborted bit.                       <<11692>>00992310
             0      Return state of Job Aborted bit.           <<11692>>00992320
                                                               <<11692>>00992330
  4          X      Return DFID number.                        <<11692>>00992340
                                                               <<11692>>00992350
  5          1      Decrement number of extents by 1.          <<11692>>00992360
             0      Increment number of extents by 1 -AND-     <<11692>>00992370
                      increment number of records by DVALUE.   <<11692>>00992380
                                                               <<11692>>00992390
  6          1      Set Purge Extents (SQEEZE) bit.            <<11692>>00992400
             0      Return state of Purge Extents bit.         <<11692>>00992410
                                                               <<11692>>00992420
  7          X      Return state of Spaced Out bit.            <<11692>>00992430
                                                               <<11692>>00992440
  8          X      Set Spaced Out bit.                        <<11692>>00992450
                                                               <<11692>>00992460
  9          X      Increment number of extents by 1.          <<11692>>00992470
                                                               <<11692>>00992480
 10          1      Set number of extents to DVALUE MSW and    <<11692>>00992490
                      last extent size (sectrs) to DVALUE LSW. <<11692>>00992500
             0      Return the same information in             <<11692>>00992510
                      XDDSPOOLINFO MSW and LSW.                <<11692>>00992520
                                                               <<11692>>00992530
 11          1      Set number of records to DVALUE.           <<11692>>00992540
             0      Return number of records.                  <<11692>>00992550
                                                               <<11692>>00992560
 12          X      Set the spoolfile to the READY state.      <<11692>>00992570
                                                               <<11692>>00992580
 13          X      Decrement the number of copies (restrict   <<11692>>00992590
                      to >= 0) and return the new number.      <<11692>>00992600
                                                               <<11692>>00992610
 14          1      Set spoolfile label address and LDEV.      <<11692>>00992620
             0      Return spoolfile label address and LDEV.   <<11692>>00992630
                                                               <<11692>>00992640
Return:  See above.  The condition code is not affected.       <<11692>>00992650
                                                               <<11692>>00992660
Special considerations:  DB may be anywhere at entry, same  at <<11692>>00992670
                         exit.                                 <<11692>>00992680
;                                                              <<11692>>00992690
     %20,13,"COPY   [RANGE [,FILENAME]]",                      <<01835>>01358000
   IF TCOUNT <> TAPE'LABEL'SIZE THEN GOTO BADFMT;              <<h2027>>05426000
      HPETAPE := TRUE;                                         <<h2027>>05443000
      << check for HPE tape >>                                 <<h2027>>05448200
      C := -1;                                                 <<h2027>>05448300
      WHILE (C:=C+1) < 3 DO                                    <<h2027>>05448400
         IF TBUF(C+30) <> TAPEHPE0(C) THEN HPETAPE := FALSE;   <<h2027>>05448500
         IF MPE5TAPE OR HPETAPE THEN DEV'COUNT := ADVC(7)      <<h2027>>06158000
            IF MPE5TAPE OR HPETAPE THEN                        <<h2027>>06182000
   INTEGER LABELC;                                             <<h2027>>06941000
   LOGICAL TRAILER, SPACED'OUT;                                <<h2027>>06961000
      IF TCOUNT <> TAPE'LABEL'SIZE THEN                        <<h2027>>07092000
          << reading next file (subentry) >>                   <<h2027>>07093000
         << make sure its a trailer >>                         <<h2027>>07106100
         TRAILER := TRUE;                                      <<h2027>>07106200
         LABELC := -1;                                         <<h2027>>07106300
         WHILE (LABELC:=LABELC+1) < TAPE'ID'SIZE DO            <<h2027>>07106400
            IF SBUF(LABELC) <> TAPEID(LABELC) THEN             <<h2027>>07106500
               TRAILER := FALSE;                               <<h2027>>07106550
         IF (NOT TRAILER) AND HPETAPE THEN                     <<h2027>>07106600
            BEGIN << 40 word HPE xdd'subentry >>               <<h2027>>07106700
            FILEEND := TRUE;                                   <<h2027>>07106800
            GOTX := TRUE;                                      <<h2027>>07106900
            CNTX := TCOUNT;                                    <<h2027>>07107000
            END                                                <<h2027>>07107100
         ELSE << AT TRAILER LABEL >>                           <<h2027>>07107200
            BEGIN                                              <<h2027>>07107300
            FILEEND := (SBUF(21) = 1);                         <<h2027>>07107400
            LASTREEL := (SBUF(22) = 1);                        <<h2027>>07107500
            FCONTROL(FILET,9,P);   << rewind/offline >>        <<h2027>>07107510
            IF <> THEN GOTO BADREAD;                           <<h2027>>07107520
            IF NOT LASTREEL THEN                               <<h2027>>07107530
               BEGIN                                           <<h2027>>07107540
               NEXTREEL;                                       <<h2027>>07107550
               IF NOT FILEEND THEN DONE := FALSE;              <<h2027>>07107560
               END;                                            <<h2027>>07107570
            END;                                               <<h2027>>07107600
$EDIT VOID=07124000                                            <<h2027>>07108000
      << logic has been added to convert to HPE >>             <<h2027>>07222100
      << formats as well.                       >>             <<h2027>>07222200
      IF NOT MPE5TAPE THEN                                     <<h2027>>07224100
         BEGIN                                                 <<h2027>>07224200
         IF NOT HPETAPE THEN                                   <<h2027>>07224300
            BEGIN << change mpe4 to mpe5 >>                    <<h2027>>07224400
            MOVE XDD'SUBENTRY := SBUF, (19);                   <<h2027>>07224500
            XDDS'COPY'INFO := SBUF(24);                        <<h2027>>07224600
            XDDS'SHOW'ERRS := SBUF(25);                        <<h2027>>07224700
            TOS := SBUF(28);                                   <<h2027>>07224800
            TOS := SBUF(29);                                   <<h2027>>07224900
            XDDSD'READY'TIME := TOS;                           <<h2027>>07225000
            LDEV := SBUF(0).(8:8);                             <<h2027>>07225100
            END                                                <<h2027>>07225200
         ELSE                                                  <<h2027>>07225210
            BEGIN << hpe to mpe5 >>                            <<h2027>>07225220
            MOVE XDD'SUBENTRY := SBUF, (22);                   <<h2027>>07225230
            MOVE XDD'SUBENTRY(24) := SBUF(32), (8);            <<h2027>>07225240
            LDEV := XDDS'DEVICE;                               <<h2027>>07225241
            END;                                               <<h2027>>07225250
         END                                                   <<h2027>>07225290
      ELSE << mpe5 tape, no translation required >>            <<h2027>>07225300
         BEGIN                                                 <<h2027>>07225400
         MOVE XDD'SUBENTRY := SBUF, (SIZE'OF'XDD'SUBENTRY);    <<h2027>>07225500
         LDEV := XDDS'DEVICE;                                  <<h2027>>07225600
         END;                                                  <<h2027>>07225700
$EDIT VOID=07254000                                            <<h2027>>07226000
<<                                                          >> <<11692>>07322100
<<   The Spaced Out bit must not be set when we  write  the >> <<11692>>07322200
<< spoolfile,  else  the  file system will not allocate ex- >> <<11692>>07322300
<< tents for it.  So, save it, clear it while writing, then >> <<11692>>07322400
<< restore it after the file is complete.                   >> <<11692>>07322500
<<                                                          >> <<11692>>07322600
         SPACED'OUT := XDDS'SPACED'OUT;                        <<11692>>07322700
         XDDS'SPACED'OUT := 0;                                 <<11692>>07322800
               IF (MPE5TAPE LAND TCOUNT=MPE5XDDS'SIZE) OR      <<h2027>>07612000
                  (HPETAPE LAND TCOUNT=HPE0XDDS'SIZE) OR       <<h2027>>07613000
                  ( (NOT MPE5TAPE LAND NOT HPETAPE) LAND       <<h2027>>07614000
                   TCOUNT=MPE4XDDS'SIZE ) THEN                 <<h2027>>07614100
            IF SPACED'OUT THEN XDDSPOOLINFO (0D, %200,         <<11692>>07719000
               XDDSUBP);   << Replace Spaced Out bit.       >> <<11692>>07719100
LOGICAL PROCEDURE NEW'FILE'CLOSE(OLD,FUNC);                    <<01834>>08590000
                                                               <<01834>>08591000
   VALUE OLD, FUNC;                                            <<01834>>08594000
   LOGICAL OLD, FUNC;                                          <<01834>>08596000
$EDIT VOID=08597000                                            <<01834>>08597000
<< IF WE DEALING WITH ANY FILE OTHER THAN SPOOL FILE  >>       <<R1162>>08617000
<< USE FCONTROL TO WRITE EOF IF FUNC=TRUE.  THIS WAS  >>       <<R1162>>08617100
<< DONE SO THAT WHEN COPYING TO TAPES IT WILL CREATE  >>       <<R1162>>08617200
<< SEPERATE FILES ON TAPE.  WHEN COPYING TO DISK FILE >>       <<R1162>>08617300
<< THE COPY COMMAND WILL ACT LIKE THE APPEND COMMAND  >>       <<R1162>>08617400
<< THE COPYING OF MULTIPLE FILES IN THE SAME COMMAND  >>       <<R1162>>08617500
<< NOW ACT LIKE FOLLOWS:  FOPEN COPY FILE,  WRITE EOF >>       <<R1162>>08617600
<< AFTER EACH FILE BUT THE LAST, FINALY DO FCLOSE ON  >>       <<R1162>>08617700
<< COPY FILE.                                         >>       <<R1162>>08617800
<<****************************************************>>       <<R1162>>08617900
   INTEGER P;                                                  <<R1162>>08621000
   NEW'FILEN := 0;                                             <<01835>>08671000
   NEW'SPOOLFILE := FALSE;                                     <<01835>>08672000
<< If we are dealing with a labelled device and we are      >> <<01834>>08694010
<< copying multiple files (i.e. func=true) then close the   >> <<01834>>08694020
<< device temporarily with the no-rewind option.  This      >> <<01834>>08694030
<< allows multiple files to be copied contiguously to tape. >> <<01834>>08694040
   FGETINFO(NEW'FILEN,,FOPTIONS);                              <<01834>>08694100
   IF FUNC AND LABEL'DEVICE THEN                               <<01834>>08695000
      FCLOSE (NEW'FILEN, 3, 0)                                 <<01834>>08695100
   ELSE                                                        <<01834>>08695200
         MOVE OBUF := PRINTFILE,2;                             <<F2027>>08738000
         I := TOS - @OBUF;                                     <<F2027>>08740000
         MOVE OBUF(3) := FILENAME,(13);                        <<F2027>>08742000
         PRINT(OBUF,I,0);                                      <<F2027>>08744000
         MOVE OBUF := REPLACEFILE,2;                           <<F2027>>08746000
         I := TOS - @OBUF;                                     <<F2027>>08748000
         PRINT(OBUF,I,%320);                                   <<F2027>>08750000
         COUNT := READ(OBUF,-72);                              <<F2027>>08756000
         @BP := @BOBUF;                                        <<F2027>>08762000
            IF OLD THEN MOVE BOBUF(6) := OLD'FILENAME,(29)     <<F2027>>08788000
                   ELSE MOVE BOBUF(6) := NEW'FILENAME,(29);    <<F2027>>08790000
            MOVE BOBUF(6+28) := CR ;                           <<F2027>>08792000
            MOVE BOBUF := "PURGE ";                            <<F2027>>08794000
            MPECOMMAND(BOBUF);                                 <<F2027>>08796000
          MOVE OBUF := RENAMEFILE,2;                           <<F2027>>08826000
          I := TOS - @OBUF;                                    <<F2027>>08828000
          PRINT(OBUF,I,%320);                                  <<F2027>>08830000
          COUNT := READ(OBUF,-72);                             <<F2027>>08832000
          @BP := @BOBUF;                                       <<F2027>>08836000
             MOVE OBUF := BAD'RENAME,2;                        <<F2027>>08878000
             I := TOS - @OBUF;                                 <<F2027>>08880000
             PRINT(OBUF,I,0);                                  <<F2027>>08882000
             MOVE OBUF := RENAMED'MESSAGE,2;                   <<F2027>>08890000
             I:= TOS - @OBUF;                                  <<F2027>>08892000
             PRINT(OBUF,I,0);                                  <<F2027>>08894000
                                                               <<01835>>08937000
NEW'FILEN := 0;                                                <<01835>>08938000
      FGETINFO(NEW'FILEN,,FOPTIONS);                           <<01834>>09050100
      IF LABEL'DEVICE THEN << OK to reopen a labelled device >><<01834>>09050200
         GO TO OPEN'AGAIN;                                     <<01834>>09050300
      IF NOT NEW'FILE'CLOSE(TRUE,FALSE) THEN GOTO QUICKOUT;    <<01834>>09052000
      NEW'FILENAME(8) := " ";                                  <<F2027>>09077000
OPEN'AGAIN:                                                    <<01834>>09124000
FGETINFO(NEW'FILEN,NEW'FILENAME,,NEW'AOPTIONS,,NEW'DEVTYPE);   <<01010>>09154000
$EDIT VOID=09156000                                            <<01010>>09156000
FFILEINFO(NEW'FILEN,6,NEW'LDEV,38,NEW'DFID,43,NEW'ENV,         <<01010>>09160000
          47,NEW'HDADDR);                                      <<01010>>09161000
IF NEW'HDADDR = 0 THEN                                         <<01010>>09192000
   FCOUNT := 0;                                                <<F2027>>09790000
   WHILE (FCOUNT := FCOUNT+1) <= XDDC                          <<F2027>>09794000
   FCOUNT := 0;                                                <<F2027>>09858000
   WHILE (FCOUNT := FCOUNT+1) <= XDDC                          <<F2027>>09862000
$EDIT VOID=09873000                                            <<01835>>09873000
         IF FCOUNT < XDDC THEN                                 <<F2027>>09881000
            BEGIN                                              <<01835>>09881100
            IF NOT NEW'FILE'CLOSE(FALSE,TRUE) THEN GO EXIT1;   <<01835>>09881200
            END                                                <<01835>>09881300
         ELSE                                                  <<01835>>09881400
            IF NOT NEW'FILE'CLOSE(FALSE,FALSE) THEN GO EXIT1;  <<01835>>09881500
$EDIT VOID=09882000                                            <<01834>>09882000
$EDIT VOID=09885200                                            <<01835>>09885000
      IF NOT NEW'FILE'CLOSE(FALSE,FALSE) THEN                  <<01834>>10844000
   IF DEVF.(1:15) = 0 THEN                                     <<D1682>>10935000
      BEGIN ERRN := 32; GOTO ERROR; END;<< do not allow T 0 >> <<D1682>>10935100
         IF NOT NEW'FILE'CLOSE(FALSE,FALSE) THEN GO TO ERROR;  <<01834>>11454000
