C C C F N D S Y M C C SEPERATE AND PACK A SYMBOL C C THIS ROUTINE CHECKS FOR A SYMBOL IN THE SPECIFIED BUFFER.CHARACTERS C ARE CHECKED,BEGINNING AT THE CURRENT BUFFER POINTER UNTIL AN C ILLEGAL SYMBOL CHARACTER IS FOUND. THE BUFFER POINTER IS UPDATED TO C POINT TO THIS CHARACTER. THE CHARACTERS ARE THEN PACKED, LEFT C JUSTIFIED AND BLANK FILLED AND FNDSYM RETURNS TO THE CALLING ROUTINE C LEGAL CHARACTERS ARE THE LETTERS A THROUGH Z , THE DIGITS 0 THROUGH C 9 , THE DOLLAR SIGN $ , AND THE PERIOD "." .A SPECIAL CASE IS THE C PLUS SIGN "+" WHICH MAY OCCUR AS THE FIRST CHARACTER OF A SYMBOL. C THE PLUS SIGN IS RESERVED FOR THE EXTENDED INSTRUCTIONS. THE CALLING C SEQUENCE IS: C CALL FNDSYM ( BUFFER , INDEX , EOB , SYMBOL ) C WHERE C BUFFER- INTEGER ARRAY WHICH IS THE CHARACTER BUFFER WHICH WILL C BE SEARCHED FOR A SYMBOL. EACH WORD OF THE ARRAY MUST C CONTAIN 1 CHARACTER BLANK FILLED. C INDEX- INTEGER VARIABLE WHICH IS THE BUFFER POINTER. INDEX WILL C POINT TO THE NEXT CHARACTER IN BUFFER WHICH C IS TO BE CHECKED. C EOB- INTEGER VARIABLE WHICH IS THE LAST CHARACTER IN THE C BUFFER (ie. END-OF-BUFFER INDICATOR). C SYMBOL- INTEGER ARRAY WHICH WILL CONTAIN THE PACKED SYMBOL ( IF C FOUND ) ON RETURN.IF NO SYMBOL WAS FOUND SYMBOL WILL C BE BLANK FILLED C SUBROUTINE FNDSYM ( BUFFER , INDEX , EOB , SYMBOL ) INCLUDE 'BSUCOM.CMN' INTEGER BUFFER(80), INDEX , SYMBOL(6) , EOB INTEGER NEWSYM(12), BLANKS , TABS EQUIVALENCE ( KEYCHR(12) , BLANKS ) , ( KEYCHR(28) , TABS ) D WRITE (4,1) INDEX D 1 FORMAT (' FNDSYM STARTING AT ',I5) DO 10 I = 1 , 12 !BLANK FILL SYMBOL CONTAINER NEWSYM(I) = BLANKS 10 CONTINUE K = INDEX DO 15 I = K ,EOB !LOOK FOR NEXT NON-BLANK CHARACTER INDEX = I IF ( BUFFER(I) .NE. BLANKS .AND. * BUFFER(I) .NE. TABS)GO TO 17 15 CONTINUE GO TO 50 !OOPS - NO CHARACTERS C 17 CONTINUE J = 1 K = INDEX DO 40 I = INDEX , EOB IF ( BUFFER(I) .GE. KEYCHR(18) .AND. * BUFFER(I) .LE. KEYCHR(19) ) GO TO 20 !?A - Z? IF ( BUFFER(I) .GE. KEYCHR(16) .AND. * BUFFER(I) .LE. KEYCHR(17) ) GO TO 19 !?0 - 9? IF ( BUFFER(I) .EQ. KEYCHR( 1) .AND. J .EQ. 1 ) GO TO 20 !?+? IF ( BUFFER(I) .EQ. KEYCHR(11) .OR. * BUFFER(I) .EQ. KEYCHR(26) ) GO TO 20 !? . OR $ ? GO TO 50 !END OF SYMBOL (NON-SYMBOL CHARACTER FOUND) 19 CONTINUE IF ( J .EQ. 1 ) GO TO 50 20 CONTINUE IF ( J .GT. 12 ) GO TO 30 NEWSYM(J) = BUFFER(I) J = J + 1 30 CONTINUE K = I 40 CONTINUE 50 CONTINUE INDEX = K D WRITE (4,2) NEWSYM D 2 FORMAT (' FNDSYM FOUND SYMBOL ',12A1,' BEFORE PACKING') CALL PACK ( NEWSYM , SYMBOL ) !PACK SYMBOL RETURN END