Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 
Index Page
readla

Table of contents
Procedure
Abstract
Required_Reading
Keywords
Declarations
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version

Procedure

     READLA   ( Read array of lines from a logical unit )

     SUBROUTINE READLA ( UNIT, MAXLIN, NUMLIN, ARRAY, EOF )

Abstract

     Read lines from a Fortran logical unit and place them in a
     character string array.

Required_Reading

     None.

Keywords

     UTILITY

Declarations

     IMPLICIT NONE

     INTEGER               UNIT
     INTEGER               MAXLIN
     INTEGER               NUMLIN
     CHARACTER*(*)         ARRAY(*)
     LOGICAL               EOF

Brief_I/O

     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     UNIT       I   Fortran unit number to use for input.
     MAXLIN     I   Maximum number of lines ARRAY can hold.
     NUMLIN     O   Number of lines read from the file.
     ARRAY      O   Array containing the lines read from the file.
     EOF        O   Logical flag indicating the end of file.

Detailed_Input

     UNIT     is the Fortran unit number for the input. This may
              be either the unit number for the terminal, or the
              unit number of a previously opened text file.

     MAXLIN   is the maximum number of text lines that can be placed
              into the ARRAY.

Detailed_Output

     NUMLIN   is the number of text lines read from the file attached
              to UNIT and placed into ARRAY. 0 <= NUMLIN <= MAXLIN.

              In the event of an error while attempting to read a line
              from the text file attached to UNIT, NUMLIN will contain
              the number of lines successfully read before the error
              occurred.

     ARRAY    is the array which is to contain the lines of text read
              from the text file attached to UNIT.

              If an error or the end of file occurs while reading
              from the text file attached to UNIT, this array will
              contain the NUMLIN successfully read lines ARRAY(1)
              through ARRAY(NUMLIN).

     EOF      on output, this variable will be set to .TRUE. if the
              end of file ( IOSTAT < 0 ) is encountered during an
              attempt to read from UNIT. Otherwise, this variable
              will be set to .FALSE.

Parameters

     None.

Exceptions

     1)  If the maximum number of lines, MAXLIN, is not positive, the
         error SPICE(INVALIDARGUMENT) is signaled.

     2)  If an error occurs while attempting to read from the text file
         attached to unit, the error is signaled by a routine in the
         call tree of this routine.

Files

     See the description of UNIT above.

Particulars

     This routine reads lines of text from a file, placing each line
     into an element of a character string array.

     An end of file flag will have the value .TRUE. if the end of file
     is reached while reading. If the file contains more lines than the
     character string array ARRAY can hold, as specified by the
     argument MAXLIN, the routine will return and the end of file flag
     will have the value .FALSE., indicating that there are more lines
     of text that may be read from the file.

     Upon successful completion, the variable NUMLIN will contain the
     number of lines of text placed into the character string array.
     This value may be zero.

Examples

     For the examples which follow, assume that we have a file named
     'mary.txt' which contains the following lines of text:

        <BOF>
        Mary had a little lamb
        Whose fleece was white as snow
        And every where that Mary went
        The lamb was sure to go
        <EOF>

     where

        <BOF> marks the beginning of the file
        <EOF> marks the end of the file

     For each example, assume that we have opened the file 'mary.txt',
     obtaining the Fortran logical unit TXTLUN, and that we are
     positioned to begin reading at the beginning of the file, '<BOF>'.

     For brevity, none of the examples perform any error handling
     functions: they simply assume that everything will work.

     Example 1: ARRAY is large enough to contain the entire contents of
                the file.

        CHARACTER*(80)        ARRAY(10)

        INTEGER               NUMLIN

        LOGICAL               EOF

        CALL READLA ( TXTLUN, 10, NUMLIN, ARRAY, EOF )

     At this point the output variables NUMLIN, ARRAY, and EOF have
     the following values:

        NUMLIN   = 4

        ARRAY(1) = 'Mary had a little lamb'
        ARRAY(2) = 'Whose fleece was white as snow'
        ARRAY(3) = 'And every where that Mary went'
        ARRAY(4) = 'The lamb was sure to go'

        EOF      = .TRUE.

     Example 2: ARRAY is not large enough to contain the entire
                contents of the file -- perform multiple reads.

        CHARACTER*(80)        ARRAY(3)

        INTEGER               NUMLIN

        LOGICAL               EOF

        EOF = .FALSE.
        DO WHILE ( .NOT. EOF )

           CALL READLA ( TXTLUN, 3, NUMLIN, ARRAY, EOF )

        END DO

     Because the line buffer ARRAY may contain at most 3 lines and the
     file contains 4 lines, the loop calling READLA will be executed
     twice, terminating after the second call because EOF will be
     true.

     After the first call to READLA the output variables NUMLIN, ARRAY,
     and EOF have the following values:

        NUMLIN   = 3

        ARRAY(1) = 'Mary had a little lamb'
        ARRAY(2) = 'Whose fleece was white as snow'
        ARRAY(3) = 'And every where that Mary went'

        EOF      = .FALSE.

     After the second call to READLA the output variables NUMLIN,
     ARRAY, and EOF have the following values:

        NUMLIN   = 1

        ARRAY(1) = 'The lamb was sure to go'

        EOF      = .TRUE.

Restrictions

     None.

Literature_References

     None.

Author_and_Institution

     J. Diaz del Rio    (ODC Space)
     K.R. Gehringer     (JPL)

Version

    SPICELIB Version 1.1.0, 26-OCT-2021 (JDR)

        Added IMPLICIT NONE statement.

        Edited the header to comply with NAIF standard. Moved $Version
        history entries for relevant Beta versions to $Revisions
        section.

    SPICELIB Version 1.0.0, 20-DEC-1995 (KRG)
Fri Dec 31 18:36:41 2021