C* C36CDV - CREATE DIMENSIONED VARIABLE VECTOR C SUBROUTINE C36CDV (BUFF, LEOF) C C BUFF = INPUT RECORD - CONTAINS NEXT RECORD ON OUTPUT C C C36CDV BUILDS AN ARRAY OF VARIABLE NAMES WHICH ARE DIMENSIONED. C THIS IS NECESSARY SO THAT THE DISTINCTION BETWEEN VARIABLES AND C FUNCTIONS, OR SUBROUTINE CALLS, MAY BE MADE IN THE MAIN BODY OF C THE CODE TO BE CONVERTED. ALL DIMENSION, COMMON AND TYPE STATEMENTS C ARE SCANNED FOR DIMENSION INFORMATION. THE NAME OF THE ARRAY IS THEN C CONVERTED TO RAD50, TO SAVE SPACE, AND PLACED IN THE VECTOR CONTAINING C THE NAMES. C INCLUDE 'C36CM.FTN/NOLIST' INCLUDE 'C36BCM.FTN/NOLIST' C C DIMENSION BUFF(80) DATA ICOMMN/29/ C LCHNGD = .FALSE. LCOMN = ITYPE.EQ.ICOMMN LNAMCM = .FALSE. IF (LSPEC) CALL C36SPI IF (L360) GO TO 50 CALL C36OT (BUFF) CALL C36RD (BUFF, LEOF) GO TO 400 C C FORM MULTI-LINE BUFFER C 50 CONTINUE CALL C36BLD (BUFF, NCOL, LERRF, LEOF) IF (LERRF) GO TO 400 IF (NDVAR .GE. MXDVAR) GO TO 290 C LVAR = .FALSE. C DO 300 I = IPSCL-6, NCOL IF (BIN(I) .EQ. ' ') GO TO 290 IF (C36SPC (BIN(I))) 100, 290, 175 C C HERE FOR LETTER (A-Z) C 100 CONTINUE IF (.NOT.LVAR) ISTVAR = I LVAR = .TRUE. GO TO 290 C C HERE FOR SPECIAL CHARACTER (PUNCTUATION) C 175 CONTINUE IF (BIN(I) .EQ. '/') LNAMCM = LCOMN IF (BIN(I).NE.'(' .OR. .NOT.LVAR) GO TO 180 CALL SFCHR (B, 1, 6, ' ') CALL STBLK (BIN(ISTVAR), B, I - ISTVAR) D WRITE (5, 510) (B(J),J=1,6) D510 FORMAT (' ',6A1) NDVAR = NDVAR + 1 IF (NDVAR .GT. MXDVAR) GO TO 280 CALL IRAD50 (6, B, KDVAR(NDVAR)) 180 LVAR = .FALSE. GO TO 290 C C ERROR TOO MANY DIMENSIONED VARIABLES FOR KDVAR C 280 CONTINUE WRITE (5, 520) MXDVAR, NAME 520 FORMAT (' **ERROR** MORE THAN',I4, ' DIMENSIONED VARIABLES IN', 1 5A2) NDVAR = MXDVAR C C 290 CONTINUE C 300 CONTINUE C C IF STATEMENT TYPE COMMON AND NOT A NAMED COMMON, INSERT /DRSCOM/ TO C NAME THE COMMON C IF (.NOT.LCOMN .OR. LNAMCM) GO TO 350 CALL SMCHR ('COMMON /DRSCOM/', 1, B, 1, 15) CALL STBLK (BIN(IPSCL-6), B(17), NCOL-(IPSCL-6)+1) LCHNGD = .TRUE. NCOL = IRNSC (B, 1, NCOL+9) ! SOURCE NCOL + /DRSCOM/B B(NCOL+1) = 0 C 350 CONTINUE CALL C36BRK (NCOL, LCHNGD) C 400 RETURN END