0AU 
          IDENT  0AU,UPFX 
          TITLE  0AU - UPDATE PROJECT PROFILE FILE. 
          PERIPH J
          BASE   MIXED
          SST 
*COMMENT  0AU - UPDATE PROJECT PROFILE FILE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       0AU - UPDATE PROJECT PROFILE FILE.
*         S. L. KSANDER.     76/04/20.
          SPACE  4,10 
***       0AU IS A LOCATION-FREE ROUTINE WHICH DOES THE FOLLOWING 
* 
*         1. UPDATES THE APPROPRIATE LEVEL-3 BLOCK PROJECT ENTRY OF 
*            THE PROJECT PROFILE FILE.
*         2. CLEARS CONTROL POINT AREA ACCUMULATOR OVERFLOW FLAGS 
*            AND ISSUES THE APPROPRIATE ACCOUNT DAYFILE MESSAGE.
* 
*         0AU IS CALLED WHENEVER OVERFLOW OF AN ACCUMULATOR IS
*         DETECTED OR AT END OF ACCOUNT BLOCK.
          SPACE  4,15 
***       ENTRY CONDITIONS. 
* 
*         ((LA)-5) = AABB 
*                    AA = OVERFLOW FLAG BITS FROM *SRUW*. 
*                    BB = FUNCTION CODE.
*                         0 = END OF ACCOUNT BLOCK CALL.
*                         1 = ACCUMULATOR OVERFLOW CALL.
*         ((LA)-4) = PP ADDRESS OF TWO CM WORD JSN/SRU BLOCK. 
*                    WORD 1 = 24/JSN,24/,6/SC,6/
*                    WORD 2 = 18/,42/SRU ACCUMULATOR. 
*                    JSN = JOB SEQUENCE NUMBER. 
*                    SC = SERVICE CLASS.
*         ((LA)-3) = FNT ORDINAL OF PROFILE FILE. 
*         ((LA)-2) = TRACK OF LEVEL 3 BLOCK ON PROFILE FILE.
*                  = 0, IF NO PROFILE FILE PRESENT. 
*         ((LA)-1) = SECTOR OF LEVEL 3 BLOCK ON PROFILE FILE. 
          SPACE  4,20 
***       EXIT CONDITIONS.
* 
*         (A) = 0, IF SUCCESSFUL CALL. ONE OF THE FOLLOWING OCCURRED
*                1. END OF ACCOUNT BLOCK CALL - PROFILE FILE UPDATE 
*                   PERFORMED IF PROFILE FILE PRESENT.
*                2. OVERFLOW CALL - NO OVERFLOW DETECTED, OR OVERFLOW 
*                   FLAG CLEARED (IN ADDITION, IF SRU ACCUMULATOR,
*                   PROFILE FILE UPDATE PERFORMED AS IN 1.).
*                ((LA)-1) = CONTROL POINT AREA ACCUMULATOR OVERFLOW 
*                FLAGS BEFORE CLEARING. 
*         THE FOLLOWING INDICATE PROFILE FILE NOT UPDATED-
*         (A) = 1, IF SYSTEM ERROR. ONE OF THE FOLLOWING HAS OCCURED
*                  1. *ORET* ERROR FLAG SET IN CP.
*                  2. READ ERROR ON LEVEL-3 BLOCK.
*                  3. VALIDATION ERROR IN LEVEL-3 BLOCK.
*                  4. WRITE ERROR ON LEVEL-3 BLOCK. 
*             = 2, IF PROFILE FILE INTERLOCKED BY *PROFILE*.
*                  (ANY OVERFLOW FLAGS REMAIN SET). 
* 
*         (A) .LT. 0 IF PROFILE FILE DEVICE INACCESSIBLE. 
*         (T5) = EST ORDINAL OF PROFILE FILE DEVICE.
          SPACE  4,15 
***       ACCOUNT DAYFILE MESSAGES. 
* 
*         THE FOLLOWING ERROR MESSAGES ARE ISSUED WHEN
*         THE CORRESPONDING ACCUMULATOR HAS OVERFLOWED. 
*         (XXXXXX.XXX IS THE ACCUMULATOR,S OVERFLOW VALUE)
* 
*         *UCAD, XXXXXX.XXXKUNS.* = ADDER ACCUMULATOR.
* 
*         *UCPF, XXXXXX.XXXKUNS.* = PERMANENT FILE ACCUMULATOR. 
* 
*         *UCMT, XXXXXX.XXXKUNS.* = MAGNETIC TAPE ACCUMULATOR.
* 
*         *UCMS, XXXXXX.XXXKUNS.* = MASS STORAGE ACCUMULATOR. 
* 
*         *UCOD, XXXXXX.XXXKUNS.* = OPTICAL DISK ACCUMULATOR. 
* 
*         *ACSO, XXXXXX.XXXUNTS.* = SRU ACCUMULATOR.
* 
*         *UCMP, XXXXXX.XXXKUNS.* = MAP ACCUMULATOR.
* 
*         *UCAC, XXXXXX.XXXUNTS.* = AUC ACCUMULATOR.
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         NONE. 
          SPACE  4,5
***       ROUTINES USED.
* 
*         CALLS  DFM, RDS, WDS. 
          SPACE  4,10 
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSMSP 
*CALL     COMSPFM 
*CALL     COMSPRO 
*CALL     COMSZOL 
*CALL     COMPREL 
          SPACE  4,10 
****      DIRECT CELL ASSIGNMENTS.
  
 FA       EQU    16          PROFILE FILE FNT ORDINAL 
 BA       EQU    17          BUFFER ADDRESS 
  
****
          SPACE  4,10 
****      ASSEMBLE CONSTANTS. 
  
 EAFC     EQU    0           END OF ACCOUNT BLOCK FUNCTION
 AOFC     EQU    1           ACCUMULATOR OVERFLOW FUNCTION
  
 MEPO     EQU    3           MASS STORAGE ERROR PROCESSING OPTION 
 PFDL     EQU    4000D       DELAY CYCLES WAITING FOR PROFILE FILE
  
****
          TITLE  MAIN PROGRAM.
 UPF      SPACE  4,10 
**        UPF - MAIN PROGRAM. 
  
          ORG    5
  
 UPF      SUBR               ENTRY/EXIT 
          RJM    PRS         PRESET 
  
*         CHECK FOR ACCUMULATOR OVERFLOW. 
  
          LDN    RLCO        CLEAR OVERFLOW FLAGS 
          STD    CM+1 
          MONITOR RLMM
          RJM    IOM         ISSUE OVERFLOW MESSAGES
  
*         READ LEVEL-3 BLOCK. 
  
 UPF2     LDD    T6          CHECK PROFILE FILE PRESENT 
          ZJN    UPFX        IF PROFILE FILE NOT PRESENT
          LDN    2           PRESET LEVEL-3 BLOCK PROJECT ENTRY INDEX 
          STD    T3 
          LDM    -5          CHECK SECTOR POSITION
          SHN    21-12
          PJN    UPF3        IF FIRST ENTRY 
          LDC    5*PMWE      SET SECOND ENTRY OFFSET
          RAD    T3 
 UPF3     LDD    BA          SET BUFFER ADDRESS 
          RAD    T3 
          RAM    UPFF 
          STM    UPFG 
          RAM    UPFH 
          LDD    BA          READ SECTOR
          RJM.   RDS
          PJN    UPF7        IF NO READ ERROR 
  
*         COMPLETION PROCESSING.
  
 UPF4     ENDMS 
          LDN    RFAS        RETURN PROFILE FILE
          RJM    ARF
 UPF6     LDN    1           SET SYSTEM ERROR STATUS
 UPFC     EQU    *-1
*         LDN    0           (NORMAL COMPLETION)
          LJM    UPFX 
  
*         UPDATE MASTER USER AND INSTALLATION SRU ACCUMULATORS. 
  
 UPF7     LDN    ZERL        CLEAR SRU ACCUMULATOR VALUE
          CRD    CM 
          LDN    40          INCREMENT ACCUMULATOR FOR OVERFLOW 
          STD    CM+1 
 UPFD     LDN    0           CHECK FUNCTION CODE
*         LDN    (FC)&AOFC
          ZJN    UPF8        IF OVERFLOW FUNCTION CODE
          LDD    MA          SET CURRENT SRU ACCUMULATOR
          CWM.   *,TR 
 UPFE     EQU    *-1
          SBN    2
          CRD    CM 
 UPF8     LDD    MA          SET MASTER/INSTALLATION ACCUMULATOR
          CWM.   5*PMSW,TR
 UPFF     EQU    *-1
          CWD    CM          SET INCREMENT VALUE
          SBN    2
          CWD    CM 
          LDN    2           SET OPERATION COUNT
          STD    CM+4 
          LDN    ABIF 
          STD    CM+1 
          MONITOR ACTM
          LDD    MA          SET INCREMENTED VALUES 
          CRM.   5*PMSW,TR
 UPFG     EQU    *-1
          LDN    PDTL        SET LAST UPDATE DATE AND TIME
          CRM.   5*PUDW-5*PMSW,ON 
 UPFH     EQU    *-1
  
*         RE-WRITE LEVEL-3 BLOCK. 
  
          LDD    BA          WRITE SECTOR 
          LMK    WLSF        SET WRITE LAST SECTOR
          RJM.   WDS
          MJN    UPF9        IF WRITE ERROR 
          SOM    UPFC        SET NORMAL COMPLETION
 UPF9     LJM    UPF4        RETURN FILE AND SET STATUS 
  
  
          ERRNZ  PISW-PMSW-2 SETUP ERROR FOR *ACTM* FUNCTION
          ERRNZ  PUDW-PMSW-1
          TITLE  SUBROUTINES. 
 ARF      SPACE  4,10 
**        ARF - ATTACH/RETURN FAST ATTACH FILE. 
* 
*         ENTRY  (A) = SUBFUNCTION CODE FOR ATTACH/RETURN.
*                (FA) = PROFILE FILE FNT ORDINAL. 
*                (T5) = PROFILE FILE EST ORDINAL. 
* 
*         EXIT   (A) = FUNCTION RESPONSE CODE.
*                (CM+4) = BYTE 4 OF RESPONSE IF REJECT. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 ARF      SUBR               ENTRY/EXIT 
          STD    CM+3 
          LDC    4000+PTUP   SET NON-ROLLABLE UPDATE MODE 
          STD    CM+2 
 ARFA     LDN    0
          ZJN    ARF1        IF NOT GLOBAL FAST ATTACH FILE 
          LDD    T5          SET GLOBAL FAST ATTACH EST ORDINAL 
 ARFB     ADD    TH          IMMEDIATE RETURN IF INACCESSIBLE DEVICE
*         PSN                (AFTER FILE IS ATTACHED) 
 ARF1     STD    CM+1 
          LDD    FA          SET FNT ORDINAL
          STD    CM+4 
          MONITOR AFAM
          LDD    CM+1        SET EXIT CONDITION 
          UJP    ARFX        RETURN 
 BUF      SPACE  4,10 
**        BUF - MASS STORAGE BUFFER 
  
  
 BUF      EQU    *
          TITLE  OVERLAID SUBROUTINES.
 IDM      SPACE  4,10 
**        IDM - ISSUE DAYFILE MESSAGE.
* 
*         ENTRY  MESSAGE PRESET IN BUFFER.
* 
*         CALLS  DFM. 
  
  
 IDM      SUBR               ENTRY/EXIT 
          LDC    AJNN+IDMA   ISSUE ACCOUNT FILE MESSAGE 
          ADD    LA 
          RJM.   DFM
          LDC    CDON+IDMA+5 ISSUE USER DAYFILE MESSAGE 
          ADD    LA 
          RJM.   DFM
          UJN    IDMX 
  
  
 IDMA     VFD    24/4HJSNN,24/4H    ,12/**
          DATA   C*UCXX,   1048.576KUNS.* 
 IOM      SPACE  4,15 
**        IOM - ISSUE OVERFLOW MESSAGES.
* 
*         ENTRY  (CM+4) = CONTROL POINT AREA OVERFLOW FLAGS (RIGHT
*                         JUSTIFIED) BEFORE CLEARED.
* 
*         EXIT   ((LA)-1) = CONTROL POINT AREA OVERFLOW FLAGS 
*                           (RIGHT JUSTIFIED) BEFORE CLEARED. 
*                APPROPRIATE OVERFLOW MESSAGES ISSUED.
* 
*         CALLS  IDM. 
  
  
 IOM2     LDM    -1          CHECK OPTICAL DISK OVERFLOW
          SHN    21-10
          PJN    IOM2.1      IF NO OVERFLOW 
          LDC    2ROD 
          STM    IDMA+6 
          RJM    IDM
 IOM2.1   LDM    -1          CHECK AUC OVERFLOW 
          SHN    21-7 
          PJN    IOM4        IF NO OVERFLOW 
          LDN    11          MOVE DAYFILE MESSAGE 
          STD    T1 
          LDD    LA 
          RAM    IOMF 
 IOM3     LDM.   IOMH,T1
 IOMF     EQU    *-1
          STM.   IDMA+5-IDMA,T1 
 IOMG     EQU    *-1
          SOD    T1 
          PJN    IOM3        IF MESSAGE MOVE NOT COMPLETE 
          RJM    IDM         ISSUE DAYFILE MESSAGE
 IOM4     LDD    T3          CHECK SRU ACCUMULATOR OVERFLOW 
          SHN    21-5 
          PJN    IOMX        IF NO OVERFLOW 
          LDN    11          MOVE DAYFILE MESSAGE 
          STD    T1 
          LDD    LA 
          RAM    IOMA 
 IOM5     LDM.   IOMC,T1
 IOMA     EQU    *-1
          STM.   IDMA+5-IDMA,T1 
 IOMB     EQU    *-1
          SOD    T1 
          PJN    IOM5        IF MESSAGE MOVE NOT COMPLETE 
          RJM    IDM         ISSUE DAYFILE MESSAGE
  
 IOM      SUBR               ENTRY/EXIT 
          LDD    CM+4        SET OVERFLOW FLAGS 
          STM    -1 
          STD    T3 
          LDN    7-2         SET INITIAL SHIFT COUNT
          STD    T4 
 IOM1     SOD    T4          DECREMENT SHIFT COUNT
          MJP    IOM2        IF ALL SHIFTS COMPLETE 
          LDD    T3          CHECK OVERFLOW FLAG
          RAD    T3 
          SHN    21-7 
          PJN    IOM1        IF OVERFLOW FLAG NOT SET 
          LDM.   IOMD-IDMA-5,T4 SET MESSAGE PREFIX
 IOME     EQU    *-1
          STM    IDMA+6 
          RJM    IDM
          UJN    IOM1        PROCESS REMAINING OVERFLOW FLAGS 
  
  
  
 IOMC     DATA   L*ACSO, 219902.325UNTS*
  
 IOMH     DATA   L*UCAC, 536872.911UNTS.* 
  
 IOMD     BSS    0           MESSAGE PREFIX TABLE 
          CON    2RAD 
          CON    2RPF 
          CON    2RMT 
          CON    2RMS 
          CON    2RMP 
          TITLE  PRESET.
 PRS      SPACE  4,25 
**        PRS - PRESET. 
* 
*         ENTRY  ((LA)-5 - (LA)-1) = INITIAL CALLING SEQUENCE.
* 
*         EXIT   (T5) = PROFILE FILE DEVICE EST ORDINAL.
*                (T6) = LEVEL-3 BLOCK TRACK.
*                (T7) = LEVEL-3 BLOCK SECTOR. 
*                (FA) = FNT ORDINAL OF PROFILE FILE.
*                (BA) = SECTOR BUFFER ADDRESS.
*                (UPFA) = (UPFD) = *LDN (FC)&AOFC*
*                (UPFE) = PARAMETER BLOCK ADDRESS.
*                (UPFB) = SET IF PROFILE FILE PRESENT.
*                (IOMB) = (IOMG) = RELOCATED ADDRESS OF *IDMA+5*. 
*                (IDMA - IDMA+1) = JOB SEQUENCE NUMBER. 
*                (SFAA) = BASE FNT ADDRESS / 10.
*         (ARFB) = *PSN* IF *PROFILE* ATTACHED OR NOT NEEDED. 
*                PROFILE FILE ATTACHED IF PRESENT.
*                DRIVER SET IF NEEDED.
*                TO *UPFX* IF *ORET* ERROR FLAG SET OR FILE BUSY. 
* 
*         USES   BA, FA, T1, T2, CM - CM+4, T5 - T5+4.
* 
*         CALLS  ARF. 
* 
*         MACROS PAUSE, SETMS, SFA. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDN    1           SET JSN FOR DAYFILE MESSAGE
          STD    T1 
          LDD    LA 
          RAM    PRSB 
          RAM    IOMB 
          STM    IOMG 
          RAM    IOME 
          LDM    -4          SET JSN/SRU PARAMETER ADDRESS
          STM    UPFE 
          STM    PRSA 
          ADN    4
          STD    T2 
 PRS1     LDM.   *,T1        MOVE JSN TO DAYFILE MESSAGE
 PRSA     EQU    *-1
          STM.   IDMA,T1
 PRSB     EQU    *-1
          SOD    T1 
          PJN    PRS1 
          LDI    T2          SET SERVICE CLASS
          SHN    -6 
          STM    IDMA+4 
  
*         SET PROFILE FILE POINTERS FROM PARAMETER PASS.
  
          LDC    BUF         SET BUFFER ADDRESS 
          ADD    LA 
          STD    BA 
          LDM    -3          SET PROFILE FILE FNT ORDINAL 
          STD    FA 
          SFA    FNT         READ FNT ENTRY 
          CRD    CM 
          ADN    FSTG        SET PROFILE FILE DEVICE EST ORDINAL
          CRD    T5 
          LDD    CM+3        SET GLOBAL FILE STATUS 
          LPN    77 
          RAM    ARFA 
          LDM    -1          SET LEVEL-3 BLOCK SECTOR 
          STD    T7 
          LDM    -5          EXTRACT FUNCTION CODE
          LPN    77 
          LMN    AOFC 
          STD    T1 
          RAM    UPFD 
          LDD    CP          FETCH CONTROL POINT AREA OVERFLOW FLAGS
          ADN    SRUW 
          CRD    CM 
          LDD    CM+1        CHECK SRU ACCUMULATOR OVERFLOW 
          LPN    40 
          ADD    T1 
          ZJN    PRS2        IF NO NEED TO ACCESS PROFILE FILE
          LDM    -2 
 PRS2     STD    T6 
          NJN    PRS4        IF PROFILE FILE PRESENT
 PRS3     STM    ARFB 
          LJM    PRSX        RETURN 
  
 PRS4     SETMS  IO,RW
          LDM.   MSD
          SHN    21-6 
          MJN    PRS6        IF PROFILE FILE DEVICE INACCESSIBLE
  
*         ATTACH PROFILE FILE FOR UPDATE. 
  
 PRS5     LDN    AFAS        ATTACH PROFILE FILE
          RJM    ARF
          ZJN    PRS3        IF ATTACH COMPLETED
          SHN    21-11
          MJN    PRS6        IF DEVICE INACCESSIBLE 
          LDD    CM+4 
          LPN    2           CHECK REJECT 
          LMN    2
          NJN    PRS6        IF ATTACHED IN MODIFY MODE BY *PROFILE*
  
*         WAIT FOR OTHER *0AU* TO RELEASE PROFILE FILE. 
  
          LDC    PFDL/2 
          SBN    1
          NJN    *-1
          PAUSE 
          LDD    CM+1        CHECK ERROR FLAG 
          LMN    ORET 
          NJN    PRS5        IF NOT OPERATOR OVERRIDE 
          LDN    1
 PRS6     LJM    UPFX        EXIT 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
 FNT$     EQU    1           ASSEMBLE SYSTEM FNT ACCESS 
*CALL     COMPGFP 
          SPACE  4,10 
          OVERFLOW 5,ZAUL 
  
          ERRNG  ZAUL-BUF-503 BUFFER OVERFLOWS CALLING PROGRAM
          END 
