warren (08/06/82)
#N:uicsovax:2200003:000:3269
uicsovax!warren Jun 23 11:14:00 1982
The following 60 lines of common block from the CORE graphics standard
does not compile under f77 correctly, it does compile elsewhere correctly.
I had earlier made the statement that I thought it was the way
f77 was parsing common blocks, perhaps I was incorrect, here
is the offending block of code: (try f77 -c thisfile.f)
SUBROUTINE SLSTYL(NEWLS)
C
COMMON/ATR/LWIDT,LWMAX,LSTYL,LSMAX,PEN,PENMAX,FONT,FONMAX,
1 CHSIZ,CHSPC,CHPREC,CHPLN,PIKID,PIKMAX,CHPATH,CHJUST,
2 MRKR,MRKMAX,CHARUP,CURPOS,BGDNDX,BGDCOL,BGDINT,
3 LINNDX,LINCOL,LININT,FILNDX,FILCOL,FILINT,TEXNDX,
4 TEXCOL,TEXINT,NDXMAX,PINTR,PEDGE,COLMOD
INTEGER*2 LSTYL,LSMAX,PEN,PENMAX,FONT,FONMAX,CHPREC,PIKID,
1 PIKMAX,CHPATH,CHJUST(2),MRKR,MRKMAX,BGDNDX,LINNDX,
2 FILNDX,TEXNDX,NDXMAX,PINTR,PEDGE,COLMOD
REAL LWIDT,LWMAX,CHSIZ(2),CHSPC,CHPLN(3),CHARUP(3),CURPOS(4),
1 BGDCOL(3),BGDINT,LINCOL(3),LININT,FILCOL(3),FILINT,
2 TEXCOL(3),TEXINT
COMMON /CON/ SINIT,BOUPDT,OUTLEV,DIMENS,HIDSRF,DISPMD,
1 NWFRMR, IMMED
LOGICAL SINIT, BOUPDT, NWFRMR(5), IMMED
INTEGER*2 OUTLEV,DIMENS,HIDSRF,DISPMD
COMMON /SEG/ VISIB,DETECT,HILITE,IXFORM,SEGTYP,OPSEG,
1 OPSEGX,OPTSGX,ANGLES
LOGICAL VISIB, DETECT, HILITE, OPSEGX, OPTSGX
REAL IXFORM(4,4),ANGLES(3)
INTEGER*2 SEGTYP, OPSEG
COMMON/OPC/PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
1 IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
2 PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
3 INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
4 BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
5 LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
6 STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
7 POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
8 RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
INTEGER*2 PMARK3,PMARK2,PLIN3,PLIN2,POLY3,POLY2,TEXT,MOVE,
1 IMTRAN,HGHLTG,VSIBLE,DTECT,NWFRM,DELETS,DELETA,IMMEDV,
2 PICCUR,BGNBAT,ENDBAT,CRSEG,CTSEG,CLOSRS,CLOSTS,RENAMS,
3 INITDD,TERMDD,INTIZE,TRM,SNDC,INQDVC,COLR,BGCOLR,TENSTY,
4 BGINTY,SNDX,BGINDX,COLNDX,INTNDX,IQCNDX,IQINDX,
5 LNSTYL,ILNSTL,LNWITH,PENS,IDENSE,CHFONT,CHARSZ,CHARSP,
6 STRROT,CHARPH,CHARJT,CHAREX,MRKSYM,PICK,ALLATR,POLEDG,
7 POLINT,PIXCOL,PIXINT,PIXNDX,WRSCOL,WRSINT,WRSNDX,RRSCOL,
8 RRSINT,RRSNDX,ESCAP,IESCAP,AMODE,OUTUNT
C
COMMON /PAR/ PARRAY,MAXARY
INTEGER*4 PARRAY(5000),MAXARY
C----------------------------------------------------------------
INTEGER*2 NEWLS,NAME(3)
DATA NAME/'SL','ST','YL'/
C-------------------------------------------------------------------
C------------------------------------------------------------------
C CHECK SINIT TO VERIFY THAT THE SYSTEM HAS BEEN INITIALIZED
C------------------------------------------------------------------
C this block of code from the GWCORE graphics standard
C the above common block does not compile with f77 -c ff.f
C i have extracted this part and tried it by itself and the
C same error messages of common block alignment are output.
C
stop
endhamilton (08/06/82)
#R:uicsovax:2200003:uicsovax:2200004:000:543 uicsovax!hamilton Jun 23 22:43:00 1982 the compiler error messages will go away if you redefine the INTEGERs in the COMMON block from INTEGER*2 to INTEGER*4, or re-arrange the order of the members of the COMMON block so that each REAL follows an even number of INTEGER*2s (either by actually re-arranging the members, or inserting dummy INTEGER*2s for alignment padding). f77 is acting rather peculiar here? i would expect it to provide any alignment padding necessary (as C does for structs) with at most a warning. wayne hamilton (decvax!pur-ee!uiucdcs!uicsovax!hamilton)
lvan (08/06/82)
#R:uicsovax:2200003:uicsovax:2200005:000:38 uicsovax!lvan Jun 27 15:21:00 1982 That fixed the problem, thanks wayne.