CALC_IFB: PROC;
/*THIS ROUTINE IS RESPONSIBLE FOR CALCULATING THE RELATION*/
/*IS-FOLLOWED-BY. THIS RELATION IS THE PRODUCT OF THE */
/*IS-END-OF, IS-FOLLOWED-DIRECTLY-BY AND BEGINS-WITH RELA-*/
/*TIONS. */
CALC_IFB_A: PROC;
/*THIS ROUTINE IS RESPONSIBLE FOR ADDING THE ENDMARKER TO THE*/
/*RELATION,IS-FOLLOWED-BY. THIS IS DONE BY APPENDING THE */
/*STARTING SYMBOL COLUMN OF THE IS-END-OF RELATION TO THE IS-*/
/*FOLLOWED-BY RELATION. */
DCL I FIXED;
DCL J FIXED;
/* ADD IT. */
CALL RSTARY(ADDR(ARRAY2),'T04'); /*RESTORE IS-END-OF
RELATION.*/
J=CHRNUM(STRSYM); /*GET STARTING SYMBOL COLUMN.*/
DO I=1 TO NUMVOC;
IF TSTBIT(I,J,ADDR(ARRAY2)) THEN
CALL SETBIT(I,NUMVOC+1,ADDR(ARRAY1));
ELSE
CALL RSTBIT(I,NUMVOC+1,ADDR(ARRAY1));
END;
/* ANALYZE THE GRAMMAR. */
PUT SKIP LIST('BEGINNING PHASE 6 PROCESSING.');
/* CALCULATE THE RELATION, IS-FOLLOWED-BY. */
PUT SKIP LIST('CALCULATING IS-FOLLOWED-BY...');
CALL CALC_IFB; /*CALCULATE THE RELATION.*/
CALL PRTARY('*** IS-FOLLOWED-BY RELATION ***',TRUE,
NUMVOC,NUMVOC,ADDR(ARRAY1));
/* ADD THE ENDMARKER TO THE IS-FOLLOWED-BY RELATION. */
PUT SKIP LIST('ADDING ENDMARKER TO IS-FOLLOWED-BY...');
CALL CALC_IFB_A; /*CALCULATE THE RELATION.*/
CALL PRTARY('*** IS-FOLLOWED-BY W/_|_ RELATION ***',TRUE,
NUMVOC,NUMVOC+1,ADDR(ARRAY1));
/* RETURN TO CALLER. */
PUT SKIP LIST('PHASE 6 PROCESSING COMPLETE.');
END LL1P60;