*DECK CLOSSIO 
      PROC CLOSSIO ( (FET),(OPTION) );
      BEGIN # CLOSSIO # 
*IF DEF,IMS 
 #
**
* 
*     1. PROC NAME           AUTHOR              DATE 
*        CLOSSIO             M. D. PICKARD       77/01/10 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        CLOSSIO WILL CLOSE A SUPIO RANDOM FILE.
* 
*     3. METHOD USED
*        IF THE FET IS RANDOM AND THE INDEX IS A SUPIO INDEX, CLOSE 
*        IS CALLED TO WRITE THE INDEX AS THE RECORD BEFORE THE EOI. 
* 
*     4. ENTRY PARAMETERS 
*        FET                 ADDRESS OF THE FET 
*        OPTION              CLOSE OPTION 
*                              0 - WITH REWIND
*                              "NR" - NO REWIND 
*                              "REWIND" WITH REWIND 
*                              "UNLOAD" WITH REWIND AND UNLOAD
* 
*     5. EXIT PARAMETERS
*        NONE.
* 
*     6. COMDECKS CALLED
*        SIODEFS             SUPIO SYMPL DEFS 
*        SIOBASE             SUPIO BASED ARRAY DEFINITIONS
* 
*     7. ROUTINES CALLED
*        CLOSE               MACREL CLOSE SYMPL INTERFACE 
*        RECALL              MACREL CPU RECALL SYMPL INTERFACE
* 
*     8. DAYFILE MESSAGES 
*        NONE.
* 
 #
*ENDIF
      CONTROL NOLIST;        # STOPS LIST OF SIODEFS AND SIOBASE       #
*CALL SIODEFS 
*CALL SIOBASE 
      CONTROL LIST; 
      ITEM
           FET U,            # FET ADDRESS                             #
           OPTION C(10);     # CLOSE OPTION                            #
      XREF
        BEGIN 
        PROC CLOSE; 
        PROC RECALL;
        END 
      P<SIOFET> = FET;       # FORMAT FET                              #
      IF FETRAN[0]
      THEN                   # FILE IS RANDOM                          #
        BEGIN 
        P<SIOINDX> = FETINDX[0];
        IF SIONAME[0] EQ "SUPIOINDEX" 
        THEN                 # FILE HAS SUPIO INDEX                    #
          BEGIN 
          CINDX[0] = 0;      # SET CURRENT POISITON                    #
          IF ( ( LINDX[0] + 1 ) * 2 ) GQ MINSIOI
          THEN               # USE CALCULATED INDEX LENGTH             #
            FETINDL[0] = ( LINDX[0] + 1 ) * 2; # REAL LENGTH OF INDEX  #
          ELSE               # USE MINIMUM LENGTH                      #
            FETINDL[0] = MINSIOI; # MINIMUM SIO INDEX LENGTH           #
          CLOSE(SIOFET,OPTION); # CLOSE THE FILE                       #
          RECALL(SIOFET);    # WAIT TIL COMPLETE BIT SET               #
          END 
        END 
      RETURN; 
      END 
      TERM # CLOSSIO #
