SAVEFILE860

(George Source)

Macros used: BACKSPACE, BS, CHAIN, CHANGEACT, CHANGEFILE, FCAJO, FILEMOVE, FINDACTNO, FREECORE, FREEZESAVE, GEOERR, HUNT, HUNTX, JBS, JOBLOCK, LOCK, MHUNT, MHUNTW, SAVETHAW, SEG, SEGENTRY, SETNCORE, SETUPCORE, STEP, TOPFCB, TRACE, UNLOCK, UP, UPPLUS

SAVEFILE860.txt
22FL ...      SEG      SAVEFILE,860,SECTION FILE,CLOSE  
22^= ...#   
23DW ...#   
24XQ    #   
25CB    #     SAVES AND UNSAVES FILES OPEN TO A GIVEN ACTIVITY  
25X2    #           BUT NOT WORKFILES OR COMMUNICATION FILES (EXCEPT THE
26BL    #           MONITORING FILE, OPEN IN SYSTCOM MODE)  
26W=    #     K1SAVEFILE IS THE SAVING ENTRY, FROM THE MACRO SAVEACTF   
27*W    #     K2SAVEFILE IS THE UNSAVE ENTRY, FROM THE MACRO RESTACTF   
27TG    #   
28*6          SEGENTRY K1SAVEFILE,XENT1 
28SQ          SEGENTRY K2SAVEFILE,XENT2 
294J ...#   
29#B    SVB1  4H####
29S2    #   
2=?L    SVA   [CHANGES THE SAVING FILE TO THE ACTIVITY BEING SAVED, & MAKES 
2=R=          [THAT THE CURRENT ACTIVITY
2?=W          [SET UP A FUTILITY BLOCK TO HOLD THE CURRENT ACNUM, AND THE LINK  
2?QG          [PAIR OF THE ACTIVITY BEING SAVED, AND ITS ACCUMULATORS   
2#=6          SBX   6  FX1  
2#PQ          SETNCORE 12,1,FI,FUTILITY 
2*9B          JOBLOCK  ACOMMUNE4(2),3   
2*P2          BPZ   3  OKJOB               [J IF JOB BLOCK FOUND
2B8L          GEOERR   BRIEFPM,JOBLOCK? 
2BN=    OKJOB   
2C7W          FCAJO    3                   [FIND THE CPA
2CMG          MHUNTW   1,FI,FUTILITY       [X1->FUTILITY
2D76          LDX   4  ACNUM(2) 
2DLQ          STO   4  A1(1)               [NO. OF THE SAVING/UNSAVING ACTIVITY 
2F6B          LDN   4  ALINK1(3)
2FL2          LDN   5  A1+1(1)  
2G5L          MOVE  4  HLINK               [LINK
2GK=          LDN   4  ACC3(3)  
2H4W          LDN   5  A1+3(1)  
2HJG          MOVE  4  5                   [PRESERVE THE ACCUMULATORS   
2J46          LDX   4  AMFMS(3) 
2JHQ          STO   4  A1+8(1)             [PRESERVE
2K3B          STOZ     AMFMS(3)            [STOP ANY OP TO YET-UNSAVED MON FILE 
2KH2          CHAIN    1,3                 [AFTER LOCKED ACTIVITY   
2L2L          LOCK     3
2LG=          CHANGEFILE 3,-1   
2L^W          UNLOCK   3
2MFG          CHANGEACT 3   
2M^6          ADX   6  FX1  
2NDQ          EXIT  6  0
2NYB    #   
2PD2    SVB   [FINDS THE ORIGINAL ACTIVITY AND CHANGES THE SAVING FILE TO IT
2PXL          [AND THEN MAKES IT THE CURRENT ACTIVITY   
2QC=          SBX   6  FX1  
2QWW          MHUNTW   1,FI,FUTILITY
2RBG          LDX   7  A1(1)
2RW6          FINDACTNO 3,7                [X3->THE SAVING ACTIVITY 
2S*Q          CHAIN    1,3                 [GIVE IT THE FUTILITY
2STB          LOCK  3   
2T*2          CHANGEFILE 3,,-1             [AND THE SAVING FILE 
2TSL          UNLOCK   3
2W#=          CHANGEACT 3                  [AND MAKE IT THE CURRENT ACTIVITY
2WRW          ADX   6  FX1  
2X?G          EXIT  6  0
2XR6    #   
2Y=Q    SVSTEP [STEP APPENDS A RECORD TO THE SAVING FILE AND HUNTS THE BLOCK
2YQB           [BEING SAVED.
2^=2          SBX   6  FX1  
2^PL          ADN   1  2                   [RECORD LENGTH   
329=          LDX   4  1
32NW          STEP     -1,0(1)  
338G          LDX   1  4
33N6          STO   1  0(3)                [INSERT RECORD HEADER
347Q          SBN   1  2
34MB          SLL   7  12                  [BLOCK TYPE  
3572          HUNTX    2,7  
35LL          BPZ   2  SVS1                [BRANCH IF FOUND 
366=          GEOERR   1,SAVEMISS   
36KW    SVS1
375G    #SKI  K6SAVEFILE>599-599
37K6          TRACE    7,SAVEBLOK   
384Q          ADX   6  FX1  
38JB          EXIT  6  0
3942    #   
39HL    SVMOVE [MOVES TO-BE-SAVED DATA INTO ITS SAVING RECORD   
3=3=          LDN   5  2(3) 
3=GW          MOVE  4  0(1) 
3?2G          SMO      FX2  
3?G6          LDX   1  AWORK1   
3?^Q          STO   1  1(3)                [SET RECORD CATEGORY WORD
3#FB          EXIT  6  0
3#^2    #   
3*DL    RSTEP [STEP READS FROM THE SAVING FILE. GOES UP IF NOT A FILE RECORD
3*Y=          [AND UPPLUS1 IF EMPTY 
3BCW    #SKI  K6SAVEFILE>599-599
3BXG          TRACE    ATYPE(2),REOPBLOK
3CC6          SBX   6  FX1  
3CWQ          STEP     -1   
3DBB          BNZ   3  RST1                [J IF NOT AT END OF SAVING FILE  
3DW2          LDN   5  0
3F*L          BRN      RST3 
3FT=    RST1  LDCT  0  #44  
3G#W          ANDX  0  1(3)                [CATEGORY WORD   
3GSG          BNZ   0  RST2                [J IF A FILE RECORD  
3H#6          LDN   5  1
3HRQ    RST3  LDX   4  ACNUM(2)            [THE BEING-UNSAVED ACTIVITY  
3J?B          HUNT     1,FILE,FABSNB
3JR2          FREECORE 1
3K=L          CALL  6  SVB                 [CHANGE TO THE SAVING ACT
3KQ=          FINDACTNO 2,4                [X2->THE BEING-UNSAVED ACTIVITY  
3L9W          MHUNTW   3,FI,FUTILITY
3LPG          LDN   0  A1+1(3)  
3M96          LDN   1  ALINK1(2)
3MNQ          MOVE  0  HLINK               [LINK
3N8B          LDN   0  A1+3(3)  
3NN2          LDN   1  ACC3(2)  
3P7L          MOVE  0  5
3PM=          LDX   0  A1+8(3)  
3Q6W          STO   0  AMFMS(2)            [RESTORE 
3QLG          FREECORE 3                   [THE FUTILITY
3R66          BNZ   5  RST4                [J IF NOT AT END OF THE SAVING FILE  
3RKQ          UP
3S5B    RST4  UPPLUS   1
3SK2    RST2  ADX   6  FX1  
3T4L          EXIT  6  0
3TJ=    #   
3W3W    RMOVE [CLEARS THE NEWLY SET UP BLOCK,MOVES IN DATA FROM THE SAVING  
3WHG          [RECORD AND SETS A1   
3X36          STO   4  A1(2)
3XGQ          SBN   4  1
3Y2B          LDX   7  4
3YG2          LDX   1  5
3Y^L    RM1   STOZ     0(1) 
3^F=          ADN   1  1
3^YW          BCT   4  RM1  
42DG          LDX   1  7
42Y6          LDN   4  2(3) 
43CQ          MOVE  4  0(1) 
43XB          EXIT  6  0
44C2    #   
44WL    #     SAVEACTLF ENTRY   
45B=    #     ON ENTRY, THE TOP LEVEL FILE OPEN TO THE SAVING ACTIVITY IS THE   
45TW    #           SAVING FILE (LANGUAGE ####) AND ACOMMUNE1 CONTAINS THE  
46*G    #           ADDRESS OF A LOCKED ACTIVITY WHICH IS BEING SAVED   
46T6    #     THE FILES OPEN TO THAT ACTIVITY ARE FROZEN AND CLOSED BY  
47#Q    #           FREEZESAVE, WHICH LEAVES A 10 WORD FABSNB, AND A COPY OF THE
47SB    #           FILE'S FCA IN A FI/FCA BLOCK
48#2    #     EACH FILE SAVED HAS A PAIR OF RECORDS IN THE SAVING FILE - FABSNB 
48RL    #           AND FCA. EACH RECORD HAS A CATEGORY WORD AFTER THE HEADER - 
49?=    #           BIT3 SET - THIS IS A FILE RECORD, BIT6 UNSET - THE FIRST OF 
49QW    #           THE PAIR
4==G    XENT1   
4=Q6          CALL  6  SVA                 [CHANGE SAVING FILE AND ACTIVITY 
4?9Q    SV4   TOPFCB   3
4?PB    #SKI  K6SAVEFILE>599-599
4#92          TRACE    FLOC1(3),SAVEFILE
4#NL          LDX   0  FLAN(3)  
4*8=          SMO      FX1  
4*MW          TXU   0  SVB1                [IDENTIFY SAVING FILE BY LANGUAGE
4B7G          BCS      SV1                 [J IF NOT SAVING FILE
4BM6          CALL  6  SVB  
4C6Q          MHUNTW   1,FI,FUTILITY
4CLB          FREECORE 1
4D62          UP
4DKL    SV1   LDX   0  FCOMM(3) 
4F5=          ANDN  0  4
4FJW          BZE   0  SV2                 [J IF NOT CAREFUL
4G4G          GEOERR   BRIEFPM,CARESAVE 
4GJ6    SV2 
4H3Q          FREEZESAVE                   [FREEZE THE TOP LEVEL FILE & CLOSE IT
4HHB    #     BLOCKS TO-BE-SAVED CHAINED AFTER CURRENT ACTIVITY 
4J32          LDCT  1  #40                 [BIT3 - CATEGORY WORD FOR FIRST  
4JGL          STO   1  AWORK1(2)           [RECORD FOR THIS FILE
4K2=    #     SAVE THE FABSNB   
4KFW          LDN   1  FABSAVENO           [NO OF WORDS TO MOVE 
4K^G          LDN   7  FILE+FABSNB  
4LF6          CALL  6  SVSTEP              [SET UP RECORD   
4LYQ          LDN   4  FABSAVE(2)   
4MDB          CALL  6  SVMOVE              [MOVE USER AND LOCAL NAME
4MY2          FREECORE 2
4NCL          LDCT  1  #44                 [BITS3,6 - CATEGORY W-RD FOR FILE
4NX=          STO   1  AWORK1(2)           [RECORD NOT THE FIRST FOR THIS FILE  
4PBW    #     SAVE THE FCA  
4PWG          LDN   1  FCASAVENO           [NO OF WORDS TO MOVE 
4QB6          LDN   7  FI+FCA   
4QTQ          CALL  6  SVSTEP              [SET UP RECORD   
4QX^ ...      LDX   0  FIRB(2)             [J IF FREADBLOCK -IVE
4R28 ...      BNG   0  SV3  
4R4C ...      LDN   0  FBLKS
4R6L ...      SBS   0  FIRB(2)             [RELATIVISE FREADBLOCK   
4R8T ...SV3 
4R?4 ...      BS       2,BFCASAVEREL       [SET 
4R*B          LDN   4  FCASAVE(2)   
4RT2          CALL  6  SVMOVE              [SAVE FREADBLOCK - FGENE-AL2 
4T?W          FREECORE 2
4TRG          BRN      SV4  
4W?6    #   
4WQQ    #     RESTACTF ENTRY
4X=B    #     ON ENTRY, THE TOP LEVEL FILE OPEN TO THE UNSAVING ACTIVITY IS THE 
4XQ2    #           SAVING FILE, AND ACOMMUNE1 CONTAINS THE ADDRESS OF A LOCKED 
4Y9L    #           ACTIVITY WHICH IS BEING UNSAVED. WE ARE POSITIONED ON THE   
4YP=    #           SECOND FILE RECORD  
4^8W    #     A FABSNB AND A FI/FCA ARE SET UP FROM EACH RECORD PAIR, THE MODE  
4^NG    #           OF OPENING WHEN SAVED IS EXTRACTED FROM THE FCA AND THE FILE
5286    #           IS REOPENED 
52MQ    XENT2   
537B          CALL  6  SVA                 [CHANGE SAVING FILE AND ACTIVITY 
53M2    #     SET UP FABSNB 
546L          BACKSPACE -1  
54L=    R1    LDN   4  FABSAVENO+1         [LOGICAL LENGTH  
555W          SETUPCORE 4,2,FILE,FABSNB 
55KG          CALL  6  RSTEP               [NEXT RECORD 
5656          HUNT     2,FILE,FABSNB
56JQ          LDN   5  FABSAVE(2)   
574B          CALL  6  RMOVE               [COMPLETE FABSNB 
57J2    #SKI  K6SAVEFILE>599-599
583L          TRACE    A1+4(2),REOPFILE 
58H=    #     SET UP FCA BLOCK  
592W          LDN   4  FCASAVENO+1         [LOGICAL LENGTH  
59GG          SETUPCORE 4,2,FI,FCA  
5=26          CALL  6  RSTEP               [NEXT RECORD 
5=FQ          HUNT     2,FI,FCA 
5=^B          LDN   5  FCASAVE(2)   
5?F2          CALL  6  RMOVE
5?K= ...      JBS      R4,2,BFCASAVEREL    [J IF NEW RELATIVISED SAVED FORMAT   
5?PG ...      LDN   0  A1+2 
5?TQ ...      ADS   0  FIRB(2)             [ADJUST FREADBLOCK   
5#22 ...      BRN      R5   
5#6= ...R4  
5#=G ...      LDX   0  FIRB(2)  
5#BQ ...      BNG   0  R5                  [J IF FREADBLOCK -IVE
5#H2 ...      LDN   0  FBLKS
5#M= ...      ADS   0  FIRB(2)             [ADJUST FREADBLOCK   
5#RG ...R5  
5#XW          HUNT     1,FI,FCA 
5*CG          LDX   0  FG1(1)              [EXTRACT MAIN MODE FROM FGENERAL1
5*X6          LDN   4  1
5BBQ          LDN   5  7
5BWB    R2    BNG   0  R3                  [J IF READ MODE  
5CB2          SLL   0  1
5CTL          ADN   4  1                   [MAIN MODE IS ADDITIVE   
5D*=          BCT   5  R2                  [CHECK TOP 7 BITS
5DSW          GEOERR   BRIEFPM,MODE???  
5F#G    R3    SLL   4  9                   [MAIN MODE IN BITS 12-14 
5FS6          LDCT  0  #004 
5G?Q          ORX   4  0                   [ERASING MODE
5GRB          LDX   0  FG1(1)   
5H?2          ANDX  0  BIT11
5HQL          BZE   0  NOTCOM              [J IF NOT OPEN FOR COMMUNICATION 
5J==          LDCT  0  #002                [THIS MUST BE THE MON. FILE  
5JPW          ORX   4  0                   [SYSTCOM MODE
5K9G    NOTCOM  
5KP6          SAVETHAW SVBRK,4  
5L8Q          LDX   3  FILERING(2)  
5LNB          MHUNTW   2,FI,FCA 
5M82          LDN   4  FCASAVE(2)   
5MML          LDN   5  FREADBLOCK(3)
5N7=          LDN   1  FCASAVENO
5NLW          MOVE  4  0(1)                [RESTORE FREADBLOCK-FGENERAL2
5P6G          FREECORE 2                   [FCA 
5PL6          FILEMOVE 0,-2                [KEEP THE ORIGINAL ORDER 
5Q5Q          MHUNT    1,FILE,FABSNB
5QKB          FREECORE 1                   [FABSNB  
5R52          BRN      R1   
5RJL    SVBRK GEOERR   BRIEFPM,SAVEBRK  
5SHW    #END
^^^^ ...04547632000100000000