8.9 Run-Time Formats

You can store format specifications in character scalar references, numeric array references, or numeric scalar field references (see Section 2.2.5.1). Such format specifications are called run-time formats and can be constructed or altered during program execution.

A run-time format in an array has the same form as a FORMAT statement, without the word FORMAT and the statement label. Opening and closing parentheses are required. Variable format expressions are not permitted in run-time formats.

Example

In the following example, the format specification changes with each iteration of the DO loop:

     SUBROUTINE PRINT(TABLE)
     REAL TABLE(10,5)
     CHARACTER*5 FORCHR(0:5), RPAR*1, FBIG, FMED, FSML
     DATA FORCHR(0),RPAR /'(',')'/
     DATA FBIG,FMED,FSML /'F8.2,','F9.4,','F9.6,'/
     DO 20 I=1,10
        DO 18 J=1,5
           IF (TABLE(I,J) .GE. 100.) THEN
              FORCHR(J) = FBIG
           ELSE IF (TABLE(I,J) .GT. 0.1) THEN
              FORCHR(J) = FMED
           ELSE
              FORCHR(J) = FSML
           END IF
18      CONTINUE
        FORCHR(5)(5:5) = RPAR
        WRITE (6,FORCHR) (TABLE(I,J), J=1,5)
20   CONTINUE
     END

The DATA statement assigns a left parenthesis to the character array element FORCHR(0) and a right parenthesis and three field descriptors to four character variables for later use.

Next, the proper field descriptors are selected for inclusion in the format specification. The selection is based on the magnitude of the individual elements of the array TABLE.

A right parenthesis is then added to the format specification just before the WRITE statement uses it.


Note
Format specifications stored in arrays are recompiled at run time each time they are used. If a Hollerith or character run-time format is used in a READ statement to read data into the format itself, that data is not copied back into the original array; the array will be unavailable for subsequent use as a run-time format specification.


Previous Page Next Page Table of Contents