C* SFSIV - INSERT VARIABLE IN LIST SUBROUTINE SFSIV (IP, IFRST) INCLUDE 'SFSCM.FTN/NOLIIST' DIMENSION ID(6) EQUIVALENCE (ID,FIDWS) DIMENSION INEW(2), ILAV(2), IALPHA(27) DIMENSION N2CHR(2) EQUIVALENCE (N2CHR(1),NCHRG), (N2CHR(2),ICHR) DATA INEW/0,0/, NIN/5/ DATA IALPHA /36, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 1 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 2 90/ C IF (INDX .EQ. 7) WRITE (6, 700) IP, IFRST, NAVS, IBUF,ID C700 FORMAT (' ', I4, A2, 5X, I4, 3X, 10A2, 6I5) NCHRP = IP - 2 DO 3 I = 1,27 IF (IFRST - IALPHA(I)) 3, 4, 3 3 CONTINUE WRITE (NIN, 510) (IBUF(I),I=1,IP/2), INDX 510 FORMAT (' **ERROR** VARIABLE DOES NOT START WITH A-Z OR $ IN FILE', $ I4/11X,'VARAIABLE? ', 9A2) CALL SFSEX 4 LSPTR = IPVEC(I) IPS = LSPTR C GET NUMBER OF CHARACTERS + FIRST CHAR. FROM VARIABLE NAME LIST 5 CALL SFS2C (IVARI(IPS), N2CHR) IF (ICHR) 10, 60, 10 10 IF (ICHR - IFRST) 50, 30, 60 30 NCHRC = MIN0 (NCHRG, NCHRP) - 1 N = IPS + 1 IF (NCHRC) 40, 40, 35 35 IF (JCCHR (IVARI(N),1,NCHRC, IBUF(2),1,NCHRC, 1)-2) 50, 40, 60 40 IF (NCHRP - NCHRG) 60, 90, 50 50 LSPTR = IPS LNCHG = NCHRG IPS = (NCHRG + 2)/2 + IPS IPS = IVARI(IPS) GO TO 5 C INSERT AND SET UP POINTERS FOR NEW VARIABLE 60 CONTINUE IF (NAVSV) 110, 110, 63 63 IF (IPS - IPVEC(I)) 70, 65, 70 65 IPVEC(I) = NAVSV J = IPS GO TO 73 70 I = (LNCHG + 2)/2 + LSPTR J = IVARI(I) IVARI(I) = NAVSV 73 IP = NAVSV*2 I = (NCHRP + 2)/2 + NAVSV NAVSV = I + 3 IF (NAVSV - MXVAR) 75, 75, 107 75 CALL SMCHR (NCHRP, 1, IVARI, IP-1, 1) CALL SMCHR (IBUF, 2, IVARI, IP, NCHRP) IVARI(I) = J I = I + 1 78 IVARI(I) = NAVS*INCLD I = I + 1 IF (INCLD) 110, 110, 80 80 IVARI(I) = NAVS INEW(2) = NR - NROFS(INDX) + NRTOT CALL SFS1DW (FIDWS, NAVS, 2, INEW) IF (NAVS+1 - MXNAV) 110, 110, 108 C ATTACH RECORD NO. OF NEW OCCURANCE TO EXISTING VARIABLE NAME 90 IF (INCLD) 110, 110, 91 91 I = (NCHRG + 4)/2 + IPS J = IVARI(I) IF (J) 110, 78, 95 95 I = I + 1 NREC = IVARI(I ) C IF (INDX.EQ.7) WRITE (6,999) NREC,I C999 FORMAT (10X,2I6) CALL SFS1DR(FIDWS, NREC, 2, ILAV) IF (ILAV(2) - (NR - NROFS(INDX) + NRTOT)) 105, 110, 105 105 CONTINUE ILAV(1) = NAVS NREC = NREC - 1 CALL SFS1DW (FIDWS, NREC, 2, ILAV) GO TO 80 107 NERC = 1 GO TO 110 108 NERC = 2 110 CONTINUE RETURN END