SUBROUTINE GRCORD (ERX, EOF) LOGICAL ERX, EOF LOGICAL ERX2, EOF2 INTEGER GCHAR INTEGER RCOUNT INTEGER RTYPE INTEGER RSTYPE INTEGER RTMAX INTEGER RSZMAX INTEGER RECORD (41) INTEGER RSIZE INTEGER RSIZES (20) INTEGER ICLP02 COMMON /RECORD/ RCOUNT COMMON /RECORD/ RTYPE COMMON /RECORD/ RSTYPE COMMON /RECORD/ RTMAX COMMON /RECORD/ RSZMAX COMMON /RECORD/ RECORD COMMON /RECORD/ RSIZE COMMON /RECORD/ RSIZES COMMON /RECORD/ ICLP02 INTEGER DICT (400) INTEGER ID, CID, DTSTRT, DTSTOP COMMON /DARRAY/ DICT COMMON /DARRAY/ ID, CID, DTSTRT, DTSTOP INTEGER ECODE INTEGER CMCHAN INTEGER RBCHAN INTEGER OBCHAN INTEGER MPCHAN INTEGER DBCHAN INTEGER TTYIN INTEGER TTYOUT COMMON /IODEFN/ ECODE COMMON /IODEFN/ CMCHAN COMMON /IODEFN/ RBCHAN COMMON /IODEFN/ OBCHAN COMMON /IODEFN/ MPCHAN COMMON /IODEFN/ DBCHAN COMMON /IODEFN/ TTYIN COMMON /IODEFN/ TTYOUT INTEGER I C WRITE (DBCHAN, 1) C 1FORMAT (' ENTER GRCORD') CONTINUE 13050 CONTINUE CALL RDSEQ (RBCHAN, RECORD, 2, ECODE) IF (ECODE .NE. 1) GO TO 9999 C WRITE (DBCHAN, 2) RECORD(1) C 2FORMAT (' IN GRCORD WITH RECORD(1)=', I5) RTYPE = GCHAR (RECORD, 1) RSTYPE = GCHAR (RECORD, 2) RCOUNT = RCOUNT + 1 IF (.NOT.((RTYPE.GT.RTMAX).OR.(RTYPE.LE.0)))GO TO 13051 IF (.NOT. (RTYPE.NE.0))GO TO 13052 CALL ERROR(4) 13052 CONTINUE GO TO 13050 13051 CONTINUE RSIZE = RSIZES (RTYPE) IF (RSIZE.EQ.0) RSIZE = (RSTYPE+1)/2 + 1 IF (.NOT. ((RSIZE.EQ.0).OR.(RSIZE.GT.RSZMAX)))GO TO 13054 CALL ERROR (4) 13054 CONTINUE C WRITE (DBCHAN, 3) RSIZE C 3FORMAT (' IN GRCORD WITH RSIZE=', I5) IF (.NOT. (RSIZE.GT.1))GO TO 13056 CALL RDSEQ (RBCHAN, RECORD (2), 2*(RSIZE - 1), ECODE) IF (ECODE .NE. 1) GO TO 9999 13056 CONTINUE ID = RECORD(2) C WRITE (DBCHAN, 4) C 4FORMAT (' EXIT GRCORD') ERX = .FALSE. EOF = .FALSE. RETURN 9999 ERX = .FALSE. EOF = .TRUE. RETURN END