SUBROUTINE CMCONT(CARD,LAST,MXLINE, COMPLT,LINE,NEWLST) NOLINEUP C C COMBINE INPUT CARD IMAGES INTO A SINGLE LINE IMAGE, C REMOVING CONTINUATION CHARACTERS. C C INPUTS-- C . CARD(1:72) - FIRST 72 COLUMNS OF CARD IMAGE - CHAR*1(72) C . LAST - LAST POSITION USED IN LINE() FROM PREVIOUS CALL. C . ZERO IF THIS IS START OF NEW LINE. C . MXLINE - MAXIMUM NUMBER OF CHARACTERS ALLOWED IN LINE() C OUTPUTS-- C . COMPLT - =1 IF LINE IS COMPLETE, =0 IF MORE INPUT NEEDED C . LINE(1:MXLINE) - RESULT OF COMBINING INPUTS - CHAR*1(MXLINE) C . NEWLST - LAST CHARACTER POSITION FILLED IN LINE() C INCLUDE (SCANLIB.PARAMS) INCLUDE (SCANLIB.CMTABL) C CHARACTER*1 CARD(72), LINE(MXLINE) INTEGER LAST,MXLINE, COMPLT,NEWLST CHARACTER*1 TOKEN(TOKNSZ) INTEGER SCANPT, SCNTRM,NCHARS,TRMTYP INTEGER WIDTH DATA WIDTH / 9 / C EOL = 73 SCANPT = 1 DO UNTIL (TRMTYP.EQ.CONTIN .OR. SCNTRM.GE.72) C SCAN UNTIL IS FOUND OUTSIDE A QUOTED STRING OR COMMENT C OR UNTIL END OF CARD IS REACHED CALL CMPOSL(CARD,SCANPT, SCNTRM,TOKEN,NCHARS,TRMTYP) SCANPT = SCNTRM + 1 END UNTIL C IF (TRMTYP.EQ.CONTIN .AND. SCNTRM.LE.72) THEN COMPLT = 0 C DO NOT COPY CONTINUATION CHARACTER-- SCNTRM = SCNTRM - 1 ELSE COMPLT = 1 ENDIF C SCNTRM = MIN0(SCNTRM,72) NEWLST = LAST + SCNTRM DO FOR I=1,SCNTRM INDEX = LAST + I IF (INDEX.LE.MXLINE) LINE(INDEX) = CARD(I) END FOR IF (NEWLST.GT.MXLINE) THEN NEWLST = MXLINE ISTART = NEWLST - WIDTH + 1 C *** ERROR 10 - STATEMENT TOO LONG CALL CMERMS(10,LINE(ISTART),WIDTH) ENDIF RETURN END