C* SFSGS - START FORTRAN GET SCAN SUBROUTINE SFSGS (DUMMY, ISTRT, IGP, IGE, MODE) C INITIALIZE FORTRAN RECORD SCAN WITH ENTY GNXCF TO GET NEXT CHAR. C MODE=-1 - SCAN RECORD BETWEEN START COL AND 72, BLANKS INCL. C MODE=0 - SCAN RECORD BETWEEN START COL AND END COL(NC), BLANKS INC C MODE=1 - SCAN RECORD FROM START COL TO (NC) , NEXT NON-BLANK CHAR INCLUDE 'SFSCM.FTN/NOLIST' DIMENSION KEEP(40) DIMENSION ISTRT(2), IGP(2), IGE(2) DATA IBLNK,IC,I00F0/32,67,48/, IDOTE/'.E'/, ICB/'C '/ NRT = ISTRT(1) IP = 81 IGP(1) = NRT IGP(2) = ISTRT(2) IFRST = 1 NC = 0 IMODE = MODE RETURN ENTRY GNXCF (ICD) 15 IF (IP - NC) 100, 100, 20 20 IF (NRT - NROFS(INDX) - NRFIL(INDX)) 22, 22, 115 C READ A RECORD IF RECORD NOT ALREADY IN ARRAY KEEP 22 IF (NRT - NROFS(INDX) - 1) 115, 25, 23 23 IF (NRT - NRSAV) 25, 2501, 25 25 CALL SFS1DR (FID, NRT, 40, KEEP) NRSAV = NRT - 1 NC = IRNSC (KEEP, 1, 72) C C FORCE COMMENT (COL 1 = C) IF BLANK CARD C IF (NC) 2500, 2500, 25010 2500 NC = MAX0(NC, 1) KEEP(1) = ICB 25010 CONTINUE C NCSAV = NC GO TO 2502 2501 NRT = NRT + 1 NC = NCSAV 2502 CONTINUE IF (KEEP(1) - IDOTE) 2503, 115, 2503 2503 CONTINUE IF (IMODE) 27, 28, 28 27 NC = 72 28 IF (IFRST) 30, 30, 75 C CHECK NEXT FORTRAN RECORD FOR CONTINUATION , OR TERMINATE SCAN 30 IPS = 1 CALL ICHGS (KEEP, IPS, IP) CALL GNXCH (ICD) IF (ICD - IC) 40, 70, 40 40 DO 50 I = 1,5 IF (ICD - IBLNK) 45, 50, 45 45 IF (ICD - I00F0) 115, 50, 115 50 CALL GNXCH (ICD) IF (ICD - IBLNK) 60, 115, 60 60 IF (ICD - I00F0 ) 65, 115, 65 C SET RECORD NO. AND CHARACTER POINTERS FOR CONTINUATION CARD 65 IGP(1) = NRT - 1 IGP(2) = 7 GO TO 15 70 IGP(1) = NRT - 1 GO TO 20 C FIRST CALL TO SFSGS ONLY 75 IPS = IGP(2) IGP(1) = NRT - 1 IFRST = 0 IF (IPS - NC) 80, 80, 20 80 CALL ICHGS (KEEP, IPS, IP) C GET NEXT CHARACTER AND CHECK END POINTS 100 CALL GNXCH (ICD) IGP(2) = IGP(2) + 1 IF (IGP(1) - IGE(1)) 102, 101, 120 101 IF (IGP(2) - IGE(2)) 102, 102, 120 102 CONTINUE IF (IMODE) 125, 125, 105 105 IF (ICD - IBLNK) 125, 100, 125 115 IF (IFRST) 120, 120, 117 117 ICD = -NRT + 1 GO TO 125 120 ICD = 0 125 RETURN END