f18-llvm-project icon indicating copy to clipboard operation
f18-llvm-project copied to clipboard

semantic error: Assigned format label must be a scalar variable

Open oroppas opened this issue 4 years ago • 8 comments

./mis/ofp.f:1035:16: error: Assigned format label must be a scalar variable
   1950 WRITE (L,FMT) IHARM,(REAL(I),FREAL(I+1),I=1,K2,2)

gfortran spits out warning

./mis/ofp.f:1035.15:

 1950 WRITE (L,FMT) IHARM,(REAL(I),FREAL(I+1),I=1,K2,2)                 
               1
Warning: Legacy Extension: Non-character in FORMAT tag at (1)

oroppas avatar Jun 23 '21 14:06 oroppas

Note to myself: this is the showstopper to compile https://github.com/nasa/NASTRAN-95

oroppas avatar Jun 30 '21 09:06 oroppas

Can you supply more context, please? What are the declared or implicit characteristics of the entity named FMT in the compilation unit? Is it truly the target of an ASSIGN statement from a FORMAT label, or is it perhaps an integer array containing a format string encoded in Hollerith?

klausler avatar Jul 12 '21 17:07 klausler

This can reproduce the issue:

      SUBROUTINE OFP

      INTEGER          FMT(300)
      COMMON /SYSTEM/  KSYSTM(65)
      EQUIVALENCE      (KSYSTM( 2),L)

      WRITE (L,FMT) IHARM,(REAL(I),FREAL(I+1),I=1,K2,2)

      END

oroppas avatar Jul 12 '21 18:07 oroppas

Is FMT initialized or assigned in the original program? The error is valid for this code snippet and I'm not sure what was intended to happen.

klausler avatar Jul 12 '21 18:07 klausler

FMT is assigned like

      FMT(1) = OPAREN

oroppas avatar Jul 12 '21 18:07 oroppas

Okay. And what's OPAREN?

klausler avatar Jul 12 '21 18:07 klausler

CWKBI
      EQUIVALENCE      ( CFMT, FMT )
      DATA    PE    /  4H1P,E /,   PF   / 4H0P,F /
      DATA    E236  /  4H23.6 /,   F236 / 4H14.1 /
      DATA    E156  /  4H15.6 /,   F156 / 4H6.1  /
      DATA    I8    /  4H,I8, /,   I12  / 4H,I11 /
      DATA    I2X   /  4H2X   /,   I2XX / 4H,2X  /
      DATA    I1X   /  4H(1X  /,   I1XX / 4H,1X  /
      DATA    ISTAR /  4H,1H* /,   I15X / 4H/14X /
      DATA    IH0   /  4H/1H0 /,   I1H0 / 4H(1H0 /
      DATA    I9X   /  4H,9X  /,   I6X  / 4H,6X  /
      DATA    F174  /  4H17.4 /
      DATA    STATIC,  REIGEN  ,   FREQ ,  TRANS  , BK1  , CEIGEN  /
     1        1     ,  2       ,   5    ,  6      , 8    , 9       /
      DATA    A4    ,  COMMA   ,   CPAREN, OPAREN  /
     1        4HA4  ,  4H,     ,   4H)   , 4H(     /
      DATA    EEND  /  195    /,   I15BLK/ 4HA4,  , 4H11X /,
     1        GSE   /  4HG     ,   4HS   , 4HE    , 4HM   /
      DATA    FILEX /  101, 102,  103,104, 105    , 106   /
      DATA    IBLANK,  E9PT1  /    4H    , 195    /
      DATA    IHEAT /  4HHEAT /,   CENTER/ 4HTER  /
      DATA    PHASE /  4H1P9E /,   SCAN  / 4HSCAN , 4HNED /
      DATA    HEX1  ,  HEX2, HEX3 /4HHEX1, 4HHEX2 , 4HHEX3/

oroppas avatar Jul 12 '21 18:07 oroppas

Thank you, that confirms my hypothesis. F18 will have to be extended to support non-character arrays (probably contiguous default integer only) as formats in formatted I/O transfer statements.

klausler avatar Jul 12 '21 18:07 klausler