# 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