COMPSOF 
COMMON
          CTEXT  COMPSOF - SEARCH OPTICAL DISK FILE.
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 SOF      SPACE  4
          BASE   M
          IF     -DEF,QUAL$,1 
          QUAL   COMPSOF
 SOF      SPACE  4,16 
***       SOF - SEARCH OPTICAL DISK FILE. 
*         J. M. CYCHOSZ.    91/05/19. 
 SOF      SPACE  4,16 
***              SOF SEARCHES THE OPTICAL DISK FILE *ZZZZZOD* FOR 
*         THE LABEL RECORD ENTRY OF THE SPECIFIED FILE.  IF THE FILE
*         IS FOUND, *BFMS* CONTAINS THE FIRST SECTOR OF THE LABEL 
*         RECORD. 
* 
*         ENTRY  (FN - FN+3) = FILE NAME. 
* 
*         EXIT   (A) = 0 IF FILE FOUND. 
*                    = 1 IF FILE NOT FOUND. 
*                    < 0 IF OPTICAL DISK SYSTEM ERROR.
*                (FS)   = EQUIPMENT ORDINAL OF *ZZZZZOD* FILE.
*                (FS+2) = TRACK CONTAINING ENTRY. 
*                (FS+3) = SECTOR CONTAINING ENTRY.
*                (BFMS) = FIRST SECTOR OF LABEL RECORD. 
* 
*         USES   FA, T1, T5, T6, T7, FN - FN+4, FS - FS+4.
* 
*         CALLS  RDS, SAF.
* 
*         MACROS ENDMS, NFA, SETMS. 
  
  
 SOF      SUBR               ENTRY/EXIT 
          LDD    MA          SAVE (FN - FN+4) 
          CWD    FN 
          ADN    1
          CWM    SOFB,ON
          SBN    1
          CRD    FN          SET FILE *ZZZZZOD* TO SEARCH FOR 
          LDD    FA          SAVE FNT ADDRESS 
          STM    SOFA 
          LDN    0           SET NO INITIAL FNT ADDRESS 
          RJM    SAF         SEARCH FOR *ZZZZZOD* 
          LDD    FA          SET FNT ADDRESS
          STD    T1 
          LDD    MA          RESTORE (FN - FN+4)
          CRD    FN 
          LDC    **          RESTORE FNT ADDRESS
 SOFA     EQU    *-1
          STD    FA 
          LDD    T1 
          NJN    SOF2        IF FILE *ZZZZZOD* FOUND
 SOF1     LCN    0           OPTICAL DISK SYSTEM ERROR
          UJN    SOFX        RETURN 
  
 SOF2     NFA    T1,R        READ FST WORD
          ADN    FSTL 
          CRD    FS 
          LDD    FS          SET EST ORDINAL
          STD    T5 
          SETMS  IO 
          LDD    FS+1        SET CURRENT TRACK
          STD    FS+2 
          STD    T6 
          LDN    FSMS        SET CURRENT SECTOR 
          STD    FS+3 
          STD    T7 
 SOF3     LDC    BFMS 
          RJM    RDS         READ SECTOR
          MJN    SOF1        IF ERROR READING *ZZZZZOD* FILE
          LDD    FN 
          LMM    BFMS+2 
          NJN    SOF4        IF NO COMPARE
          LDD    FN+1 
          LMM    BFMS+3 
          NJN    SOF4        IF NO COMPARE
          LDD    FN+2 
          LMM    BFMS+4 
          NJN    SOF4        IF NO COMPARE
          LDD    FN+3 
          LMM    BFMS+5 
          SCN    77 
          ZJN    SOF6        IF FILE NAMES MATCH
          LDM    BFMS+2 
          LMC    2R++ 
          NJN    SOF4        IF NOT LAST ENTRY
          ENDMS 
          LDN    1           SET FILE NOT FOUND 
          UJN    SOF7 
  
 SOF4     LDN    20          ADVANCE TO NEXT ENTRY
          RAD    FS+3 
          STD    T7 
          SBM    SLM         SECTOR LIMIT FOR TRACK 
          PJN    SOF5        IF SECTOR LIMIT REACHED FOR TRACK
          LJM    SOF3        READ NEXT ENTRY
 SOF5     ENDMS 
          LJM    SOF1        INTERNAL ERROR IN *ZZZZZOD*
  
 SOF6     ENDMS 
          LDN    0           SET FILE FOUND 
 SOF7     LJM    SOFX        RETURN 
  
 SOFB     VFD    48/0LZZZZZOD          OPTICAL DISK FILE
          SPACE  4
 QUAL$    IF     -DEF,QUAL$,2 
          QUAL   *
 SOF      EQU    /COMPSOF/SOF 
          BASE   *
          ENDX
