next up previous
Next: Library for Accessing Up: No Title Previous: Disk Format

Simple Data Access Example

The following program reads an ASCII housekeeping IAM data file and stores the names and values in character arrays.

      CHARACTER*(132) NAME       ! name of ASCII housekeeping file
      INTEGER LUN                ! FORTRAN unit number to be used in 
                                 ! reading the file
      CHARACTER*132 BUFFER1      ! input buffer
      CHARACTER*132 BUFFER2      ! input buffer
      INTEGER ISTAT              ! local status
      INTEGER J                  ! loop counter
      INTEGER NPARS              ! number of parameters found
      INTEGER NSTART             ! start of a string
      CHARACTER*(64) NAMES(256)  ! entry names
      CHARACTER*(64) VALUES(256) ! entry values

      NAME = 'hkfile.ascii'
      LUN = 1
      NPARS = 0
      OPEN ( FILE=NAME, UNIT=LUN, STATUS='OLD', IOSTAT=ISTAT )

      IF ( ISTAT .EQ. 0 ) THEN

         NPARS = 1

         DO WHILE ( ( ISTAT .EQ. 0 ) .AND. 
     :     ( NPARS .LE. 256 ) )

            READ ( LUN, *, IOSTAT=ISTAT ) BUFFER1, BUFFER2

            IF ( ISTAT .EQ. 0 ) THEN
               IF ( BUFFER1 .NE. ' ' ) THEN
*
*               Find start of parameter name
*
                  NSTART = 1
                  DO WHILE ( BUFFER1(NSTART:NSTART) .EQ. ' ' )
                     NSTART = NSTART + 1
                  ENDDO

                  NAMES(NPARS) = BUFFER1(NSTART:)
*
*               Find start of parameter value
*
                  IF ( BUFFER2 .EQ. ' ' ) THEN
                     VALUES(NPARS) = ' '
                  ELSE
                     NSTART = 1
                     DO WHILE ( BUFFER2(NSTART:NSTART) .EQ. ' ' ) 
                        NSTART = NSTART + 1
                     ENDDO
                     VALUES(NPARS) = BUFFER2(NSTART:)
                  ENDIF

                  NPARS = NPARS + 1

               ENDIF
            ENDIF

         ENDDO

         NPARS = NPARS - 1

         IF ( ISTAT .EQ. 0 ) THEN
            PRINT *, 
     :        'warning - too many entries in hkfile'
         ENDIF

         CLOSE ( UNIT=LUN )

      ELSE

         PRINT *, 'failed to open file ', NAME
         PRINT *, 'FORTRAN I/O error number was ', ISTAT

      ENDIF

      END



SuperCOSMOS development
Tue Aug 20 12:04:03 BST 1996