next up previous contents index
Next: Fortran formatted input Up: Formats for the Previous: Title header lines

Free-field input

 

In free-field format the data-items are given one after the other, separated by blanks. The mode of each data-item is recognized from the way it has been written by the user; thus 12 is an integer, #012 is an octal integer (of value 10), 12. is a floating-point number, and :ABC is Hollerith. The rules for writing the data items try to strike a balance between freedom and catching mistakes; they are the following:

Integer: a string of digits, maybe preceded by + or --

      Examples:    123  +123  -123  1  0
Floating: a number containing a decimal dot and/or an exponent
      Examples:       12.     +12.34  -.34   1.  .1  -12.34
                      12E     +12.34E -.34E  1E  .1E -12.34E
                     -12.34E5  12.E5  12E5  12E+5  12E-5
                     -12.34+5  12.+5  12+5  12+5   12-5
Double precision: a number containing an exponent letter D
      Examples:       12D     +12.34D -.34D  1D  .1D -12.34D
                     -12.34D5  12.D5  12D5  12D+5  12D-5
Binary -- Octal -- Hexadecimal: a number preceded by #B, #b, #O, #o, #0, #X or #x, which will be stored right-justified with zero-fill; bits beyond the capacity of a computer word are truncated on the left.
      Examples :  #B10001  #b11101  #b1111111000111000011111111
                  #017777  #O17777  #o33211234567 (32 bits!)
                  #X177AB  #x17cde  #xffffFFFF    (32 bits!)
BCD: must start with ' or " or : thereby selecting the delimiting character, followed by the Hollerith string, terminated with the delimiter (which is ``blank'' for ``:'').
      Examples:    :ABCD    :PI+   :K*   :K(1430)   :RATHERLONGSTRING
                    'AB CD'  :it's        "'ab' 'cd'"
Repeat count: indicates the number of times which the data item which follows immediately is to be stored. It is an unsigned integer larger than 1 followed by ``*''.
      Examples:  100*0   4* -.0379   3*:PI-   2* :K(1430)  2*:LONGSTRING
Comment: can be either trailing or interspersed. A comment starts with #. and stops with the next # or the end-of-line.
      Example:   12  #. any text, but not a number-sign  #  13

Hollerith handling

Hollerith text is by default stored in A4 format, thus the data-item ":ABCDEF" gives on all machines 2 words containing "ABCD" and "EF " with blank-fill. If this is not what is needed it can be changed either with the ``control item'' #A or with the title header line option -A, which have the same syntax.

Variable length strings could be awkward to handle, therefore one can ask TZINIT to store the Hollerith string preceded by a word count as an extra integer word, optionally preceded in turn by a character count:

Header-line option:   -A[n][C][W]
      Control item:   #A[n][C][W]

   with   n:  if given it selects An representation,
               if absent or if n is larger than the maximum number
               of characters per word, the data are stored continuous
               without trailing blanks in each word.

          C:  if given an extra word is stored specifying the
               number of characters in the string, not counting
               trailing blanks in any word.

          W:  if given an extra word is stored specifying the
               number of words occupied by the BCD string,
               excluding itself and the character count, if present.

Example:  #A4CW  :LONGSTRING

          would give 5 words:
          IQ(L)   = 10       character count
          IQ(L+1) = 3        word count
          IQ(L+2) = 4HLONG
          IQ(L+3) = 4HSTRI
          IQ(L+4) = 4HNG

Other control items

#Double instructs TZINIT to read and store all floating-point numbers that follow as double-precision numbers.

#Normal reverts to normal, cancelling the effect of a previous #D for the numbers that follow the #N.

Control-items must be blank-terminated like data items and may be freely mixed with data items. They must not occur between a multiplier and its data item.

The option selected by a control item applies to all following data until changed again by a new control item.

As an example of usage, suppose we have this title bank:

      *DO FZO 21  -i(3I *H 1I *H)
      #. mode nwrec  opt    name #   #ACW
            4     0  :TLO3  :/dev/mt12

giving the parameters for a file to be used by FZ of Zebra. (The I/O characteristic is only useful if one wanted Zebra to print this bank, which is unlikely in this case.)

The program could digest this as follows:

      CHARACTER    CHOPT*8, CHNAM*80

      LUN = 21
      CALL TZFIND (0, LT, 'FZO ', LUN, 0)
      IF (LT.EQ.0)                 GO TO no output
      MODE   = IQ(LT+1)
      NWREC  = IQ(LT+2)
      LOPT   = LT+3
      LNAM   = LOPT + IQ(LOPT+1) + 2
      NCHOPT = IQ(LOPT)
      NCHNAM = IQ(LNAM)
      CALL UHTOC (IQ(LOPT+2),99, CHOPT, NCHOPT)
      CALL UHTOC (IQ(LNAM+2),99, CHNAM, NCHNAM)
      CALL MZDROP (0,LT,'.')

      IF (MODE ...
               ...
        ELSEIF (MODE.EQ.4)  THEN
          IF (NWREC.EQ.0)  NWREC = 5760
          CALL CFOPEN (IQUEST(1),1,NWREC,'w',0,CHNAME(1:NCHNAM),ISTAT)
          CALL FZFILE (LUN,NWREC,CHOPT(1:NCHOPT))
        ELSEIF (MODE ...
                     ...
        ENDIF



next up previous contents index
Next: Fortran formatted input Up: Formats for the Previous: Title header lines


Janne Saarela
Mon May 15 08:34:47 METDST 1995