INTEGER FUNCTION NXTARG(ISTR) CC C NXTARG - GET NEXT ARGUMENT FROM INPUT STRING. C C EXIT - C FUNCTION RETURNS VALUE OF TERMINATOR CHAR C INCLUDE '[214,10]INPCOM.COM' LOGICAL*1 ISTR(1) LOGICAL*1 SFC(4), SDEL(4), TCH(5) DATA SFC/'"','''','%',0/ ! SPECIAL FIRST CHARS DATA SDEL/0,2,1,3/ ! COUNT FOR TERMINATOR SCAN DELAY DATA TCH/',',' ','/','\',0/ ! TERMINATOR CHARS C NXTARG = -1 ! PRESET FOR NO ARG 1 INPTR = INPTR+1 ! BUMP CHAR POINTER IF (INPTR.GT.INCNT) RETURN ! IF END OF INPUT IF (INPUT(INPTR).EQ.1H ) GOTO 1 ! IGNORE BLANKS CC C WE FOUND THE FIRST NON-BLANK, COPY INTO THE RETURN STRING BUFFER C UNTIL WE FIND A SEPARATOR C ICH = INPUT(INPTR) ! SO HAS A NULL ITSDEL = SDEL(INDEX(SFC,ICH)+1) ! SET SCAN DELAY 9 IPTR = 0 DO 10 INPTR=INPTR,INCNT IPTR = IPTR+1 ! BUMP STRING POINTER ISTR(IPTR) = INPUT(INPTR) ICH = INPUT(INPTR+1) ! GET NEXT CHAR ITSDEL = ITSDEL-1 ! DECREMENT SCAN DELAY IF (ITSDEL.GE.0) GOTO 10 ! IF NOT TIME FOR TERMINATOR CHK IF (INDEX(TCH,ICH).NE.0) GOTO 99 ! IF FOUND TERMINATOR IF (ICH.EQ.0) GOTO 99 ! DITTO 10 CONTINUE ICH = 0 ! SET TERMINATOR 99 INPTR = INPTR+1 ! POINT AT SEPARATOR ISTR(IPTR+1) = 0 ! STORE STRING TERMINATOR NXTARG = ICH ! RETURN TERMINATOR RETURN END