This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

G77 Compiler Users Guide?


Where is the very best place to find a description/options/switches for G77. I have looked at g77doc.zip, and there just aren't many if any examples of it's use.  I am familiar with the old Microsoft Fortran, but would really like to use G77.
 
Much of my legacy code is failing because of a differences in what is allowed while coding.  This all has to do with the first 6 characters.  Can you tell me which rules apply when coding for the first 6 characters?
 
Here is a brief sample of my legacy code...that has problems, and I am hoping that I don't need to move everything over.  If I must, then I will.
 
Thanks for looking into with me.
 
 
$notruncate
C     ******* SUBROUTINE ARROW
C
      SUBROUTINE ARROW(X,Y,D,S,SCALE)
      COMMON /ONE/HD,WD,WS,RADIANS,SBH,SFH,SFA,SHBH,S5BH,S5BA,SINC,IX,IY
C     COMMON /TKTRNX/ KBAUDR,KERROR,KGRAFL,KHOMEY,KKMODE,
C    1                KHORSZ,KVERSZ,KITALC,KSIZEF,KLMRGN,KRMRGN,
C    2                KTBLSZ,KHORZT(10),KVERTT(10),
C    3                KBEAMX,KBEAMY,KMOVEF,KPCHAR(4),KDASHT,
C    4                KMINSX,KMINSY,KMAXSX,KMAXSY,TMINVX,TMINVY,
C    5                TMAXVX,TMAXVY,TREALX,TREALY,TIMAGX,TIMAGY,
C    6                TRCOSF,TRSINF,TRSCAL
      REAL X,Y,D,S
      REAL RADIUS
      INTEGER OP,REZ
      INTEGER XX,YY
C
      DATA OP /1/   ;chooses virtual coords.+ absolute moves in PCIR
      DATA REZ /60/   ;draw circle(hexagon) in 60-degree increments in PCIR
C
C     CALL ANMODE
C     TYPE*,KBAUDR,KERROR,KGRAFL,KHOMEY,KKMODE,KHORSZ,KVERSZ,KITALC
C     TYPE*,KSIZEF,KLMRGN,KRMRGN,KTBLSZ,KBEAMX,KBEAMY,KMOVEF,KDASHT
C     TYPE*,KMINSX,KMINSY,KMAXSX,KMAXSY,TMINVX,TMINVY,TMAXVX,TMAXVY
C     TYPE*,TREALX,TREALY,TIMAGX,TIMAGY,TRCOSF,TRSINF,TRSCAL
C     PAUSE
      HD=INT(SCALE*INT(4096/10.25))  ;LENGTH OF DIR. ARROW
      SBH=INT(HD*0.40)  ;HEIGHT OF BARBS IN FRACTION OF DIR LENGTH
      SFH=INT(HD*0.40)  ;HEIGHT OF FLAGS IN FRACTION OF DIR LENGTH
      SFA=INT(HD*0.1200) ;FLAG BASE DISTANCE IN FRACTION OF DIR LENGTH
      SHBH=INT(HD*0.2) ; HEIGHT OF HALF BARB IN FRACTION OF DIR LENGTH
      S5BH=INT(HD*0.28) ; HEIGHT OF 5 BARB IN FRACTION OF DIR LENGTH
      S5BA=INT(HD*0.2)  ; DISTANCE OF 5 BARB ANGLE ALONG LENGTH
      SINC=INT(HD*0.08) ;DISTANCE BETWEEN BARBS IN FRACTION OF DIR LENGTH
      IBRB=0
      IFLG=0
      WS=S
      WD=D
      RADIUS = SCALE * 5.
      CALL PCIR(X,Y,OP,RADIUS,REZ)  ;OP,REZ set in data stmt above
      CALL MOVEA(X,Y)
      CALL SEELOC(IX,IY)
      RADIAN1 = (-D+90) * 0.017453293
      RADIANS = (-D) * 0.017453293
      XX = HD *COS(RADIAN1) + IX
      YY = HD *SIN(RADIAN1) + IY
      CALL DRWABS(XX,YY)
      IFLG=(WS+2.5)/50.
      IF(IFLG > 0)CALL FLAG(IFLG,RADIAN1)
      WS=WS-(IFLG*50.)
      IBRB=(WS+2.5)/10.
      IF(IBRB > 0)CALL BARB(IBRB,RADIAN1)
      WS=WS-(IBRB*10.)
      IF( WS > 2.5.AND.IBRB+IFLG == 0)THEN
       CALL FIVEBRB(RADIAN1)
      ELSEIF(WS > 2.5)THEN
        CALL HLFBRB(RADIAN1)
      ENDIF
      RETURN
      END
C
C     ******* SUBROUTINE BARB
C
      SUBROUTINE BARB(IBRB,RADIAN1)
      COMMON /ONE/HD,WD,WS,RADIANS,SBH,SFH,SFA,SHBH,S5BH,S5BA,SINC,IX,IY
      REAL WD,WS,RADIAN1
      INTEGER XX,YY,XXX,YYY
C
      RADIANS = (-WD) * 0.017453293
      W=HD-(IBRB-1)*SINC
C
      DO 100 Z=HD,W,-SINC
       XX = Z * COS(RADIAN1) + IX
       YY = Z * SIN(RADIAN1) + IY
       CALL MOVABS(XX,YY)
       XXX = SBH * COS(RADIANS) + XX
       YYY = SBH * SIN(RADIANS) + YY
       CALL DRWABS(XXX,YYY)
       TMP=Z
  100  CONTINUE
       HD=TMP-SINC
       RETURN
       END
C
C     ******* SUBROUTINE FIVEBRB
C
      SUBROUTINE FIVEBRB(RADIAN1)
      COMMON /ONE/HD,WD,WS,RADIANS,SBH,SFH,SFA,SHBH,S5BH,S5BA,SINC,IX,IY
      REAL WD,WS,RADIAN1
      INTEGER XX,YY,XXX,YYY,XX2,YY2
C
      RADIANS = (-WD) * 0.017453293
C
       Z=INT(HD*.750)
       XX = Z * COS(RADIAN1) + IX
       YY = Z * SIN(RADIAN1) + IY
       CALL MOVABS(XX,YY)
       XXX = S5BH * COS(RADIANS) + XX
       YYY = S5BH * SIN(RADIANS) + YY
       CALL MOVABS(XXX,YYY)
       XX2=(Z-S5BA) * COS(RADIAN1)+IX
       YY2=(Z-S5BA) * SIN(RADIAN1)+IY
       CALL DRWABS(XX2,YY2)
       RETURN
       END
C
C     ******* SUBROUTINE HLFBRB
C
      SUBROUTINE HLFBRB(RADIAN1)
      COMMON /ONE/HD,WD,WS,RADIANS,SBH,SFH,SFA,SHBH,S5BH,S5BA,SINC,IX,IY
      REAL WD,WS,RADIAN1
      INTEGER XX,YY,XXX,YYY
C
      RADIANS = (-WD) * 0.017453293
C
       XX = HD * COS(RADIAN1) + IX
       YY = HD * SIN(RADIAN1) + IY
       CALL MOVABS(XX,YY)
       XXX = SHBH * COS(RADIANS) + XX
       YYY = SHBH * SIN(RADIANS) + YY
       CALL DRWABS(XXX,YYY)
       RETURN
       END
C
      SUBROUTINE FLAG(IFLG,RADIAN1)
      COMMON /ONE/HD,WD,WS,RADIANS,SBH,SFH,SFA,SHBH,S5BH,S5BA,SINC,IX,IY
      INTEGER XX,YY,XX2,YY2,XXX1,YYY1
      REAL WD,WS,RADIAN1
C
      RADIANS = (-WD) * 0.017453293
      DO 201 Z=HD,HD-(IFLG-1)*SFA,-SFA
      XX = Z * COS(RADIAN1) + IX
      YY = Z * SIN(RADIAN1) + IY
        CALL MOVABS(XX,YY)
C     XX1 =(Z-3.)* COS(RADIAN1) + X
C     YY1 =(Z-3.)* SIN(RADIAN1) + Y
C     XXX1 =10.0 * COS(RADIANS) + XX1
C     YYY1 =10.0 * SIN(RADIANS) + YY1
      XXX1 =SFH * COS(RADIANS) + XX
      YYY1 =SFH * SIN(RADIANS) + YY
        CALL DRWABS(XXX1,YYY1)
      XX2 =(Z-SFA)* COS(RADIAN1) + IX
      YY2 =(Z-SFA)* SIN(RADIAN1) + IY
      CALL DRWABS(XX2,YY2)
      TMP=Z
201   CONTINUE
      HD=Z-SINC
        CALL MOVABS(XX,YY)
        CALL DRWABS(XXX1,YYY1)
        CALL DRWABS(XX2,YY2)
      RETURN
      END
C
C***  SUBROUTINE PCIR
C
      SUBROUTINE PCIR(X,Y,N,RAD,IREZ)
* This sub is used to plot a point and circle at a
* given location.
*N=Point option code:  coord sys./relitive or absolute move
*                1=    user(virtual)  /abs
*                2=    user(virtual)  /rel
*                3=    screen/abs
*                4=    screen/rel
*RAD =diagonal dist from center to farthest pt in raster units.
*IREZ=resolution of circle. Number of degrees/increment.
      IF(N==1)THEN
       CALL POINTA(X,Y)
      ELSEIF(N==2)THEN
       CALL POINTR(X,Y)
      ELSEIF(N==3)THEN
       CALL PNTABS(IFIX(X),IFIX(Y))
      ELSEIF(N==4)THEN
       CALL PNTREL(IFIX(X),IFIX(Y))
      ELSE
       CALL POINTA(X,Y)
      ENDIF
* Default call is POINTA. (virtual,absolute)
      IF(RAD < 0.)RAD=0.1
      IF(IREZ < 1)IREZ=1
      CALL MOVEA(X,Y+RAD)
      DO 50 I=90,450,IREZ
       RADIANS=I*0.017453293
       XX=RAD*COS(RADIANS)+X
       YY=RAD*SIN(RADIANS)+Y
       CALL DRAWA(XX,YY)
50    CONTINUE
      RETURN
      END

 
Thanks and G'day,

Mark Heggli
Snowy Hydro
Cooma, NSW
AUSTRALIA


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]