/************************************************************** SUBROUTINE FILECLOSEX FILECLOSE CLOSES AN ENTIRE FILE SET. THIS INCLUDES ALL PARAMETER FILES, DEPTH AND HEADER FILES, AND ANY MASK FILES ASSOCIATED WITH THE FILE SET. ***************************************************************/ fileclose_( int *fn, /* FILE IDENTIFICATION NUMBERS FOR MASKS */ int *nmasks, /* NUMBER OF MASKS */ int *ireqpars, /* NUMBER OF PARAMETERS */ int *isoor, /* STANDARD (1) OR OBSERVED (0) LEVELS */ int *isecond, /* SECOND HEADER CLOSING INFORMATION: 0 - DON'T CLOSE 1 - CLOSE */ int *set /* FILE SET NUMBER */ ) { /*************************************************************** PARAMETERS: I - COUNTER I2 - FILE IDENTIFICATION NUMBER FOR PARAMETERS S - FILE CLOSING INSTRUCTION FSELECT - FILE SET BASE FILE IDENTIFICATION NUMBER, BASED ON NUMBER OF PARAMETERS AND FILE SET NUMBER. *****************************************************************/ int i,i2,s; int fselect = 2 * (*ireqpars * (*set-1)) + 3 * (*set-1); /********************************************************* CLOSE ALL MASKS. REASSIGN TRACKING NUMBER TO ZERO INSTEAD OF -1 FOR REUSE BY OTHER SET MASKS **********************************************************/ for ( i = 0; i < *nmasks; i++ ) { if ( ftrack[*(fn+i)] == 1 ) { s = fclose( fp[*(fn+i)] ); ftrack[*(fn+i)]=0; } else printf("Attempt to close unopened file: %d\n",*(fn+i)); } /********************************************************* CLOSE ALL PARAMETER FILES **********************************************************/ for ( i = 1; i <= *ireqpars; i++ ) { i2 = *ireqpars * *isoor + i + 1; if ( ftrack[fselect+i2] == 1 ) { s = fclose( fp[fselect+i2] ); ftrack[fselect+i2]=0; } else { i2 = *ireqpars + i + 1; if ( ftrack[fselect+i2] == 1 ) { s = fclose( fp[fselect+i2] ); ftrack[fselect+i2]=0; } else printf("Attempt to close unopened file: %d\n",fselect+i2); } } /********************************************************* CLOSE HEADER FILE IF THERE ARE ANY PARAMETERS, AND CLOSE DEPTH FILE IF THIS IS OBSERVED LEVEL DATA. **********************************************************/ if (*ireqpars > 0 ) { if ( ftrack[fselect+1] == 1 ) { s=fclose( fp[fselect+1] ); ftrack[fselect+1]=0; } else printf("Attempt to close unopened file: %d\n",fselect+1); if (*isoor == 0) { if ( ftrack[fselect+0] == 1 ) { s=fclose( fp[fselect+0] ); ftrack[fselect+0]=0; } else printf("Attempt to close unopened file: %d\n",fselect+0); } } /********************************************************* CLOSE SECOND HEADER IF FILE IS OPEN **********************************************************/ if ( *isecond > 0 ) { if ( ftrack[fselect+ 2 * (*ireqpars) + 2] == 1 ) { s = fclose( fp[fselect+ 2 * (*ireqpars) + 2] ); ftrack[fselect+ 2 * (*ireqpars) + 2] = 0; } else printf("Attempt to close unopened file: %d\n", fselect+2 * (*ireqpars) + 2); } }