CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE CHECKS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INCLUDE 'SY:ENTRY.CMN' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CALL DSASTR C ERRFLG = NO SS = S RR = R CC = C DO 600 ST=1,NUMSCR IF (ST.EQ.1) THEN F1 = 1 F2 = NUMFLD(1) ELSE F1 = NUMFLD(1) + 1 F2 = FLAST END IF S = ST R = 1 C = 1 DO 590 F = F1,F2 CALL FNDFLD(FORWD,NO) FLDBGN = BUFCHR(F,1) FLDLEN = BUFCHR(F,2) FLDATR = BUFCHR(F,3) IF (FLDATR.EQ.2 .OR. FLDATR.EQ.4 * .OR. FLDATR.EQ.6 .OR. FLDATR.EQ.8) CALL CHKREQ(SS) IF (ERRFLG.EQ.YES) THEN CALL UVT100(CUP,R,C) RETURN END IF IF (FLDATR.EQ.3 .OR. FLDATR.EQ.4 * .OR. FLDATR.EQ.7 .OR. FLDATR.EQ.8) CALL CHKFIL(SS) IF (ERRFLG.EQ.YES) THEN CALL UVT100(CUP,R,C) RETURN END IF IF (FLDATR.GE.5) THEN CALL CHKNUM(SS) IF (ERRFLG.EQ.YES) THEN CALL UVT100(CUP,R,C) RETURN END IF CALL CHKRNG(SS,F) IF (ERRFLG.EQ.YES) THEN CALL UVT100(CUP,R,C) RETURN END IF END IF 590 CONTINUE 600 CONTINUE C S = SS R = RR C = CC RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE CHKREQ(SS) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INCLUDE 'SY:ENTRY.CMN' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C DO 490 I=1,FLDLEN IF (BUFFER((FLDBGN-1)+I).NE.BLANK) GOTO 480 490 CONTINUE C CCC FIELD IS EMPTY: (ONLY BLANKS FOUND) ERRFLG = YES IF (SS.EQ.S) THEN CALL MESSGE(7,YES,NOSCR,CUPNM) ELSE CALL UVT100(CUP,23,80) CALL UVT100(ED,1) CALL MESSGE(7,YES,NOCLE,CUPNM) END IF RETURN C CCC FIELD IS NOT EMPTY: 480 RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE CHKFIL(SS) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INCLUDE 'SY:ENTRY.CMN' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C NUMBLK = 0 DO 490 I=1,FLDLEN IF (BUFFER((FLDBGN-1)+I).EQ.BLANK) NUMBLK = NUMBLK+1 490 CONTINUE C IF (NUMBLK.EQ.0 .OR. NUMBLK.EQ.FLDLEN) THEN CCC FIELD IS FILLED OR LEFT EMPTY: (NO BLANKS OR ALL BLANKS FOUND) RETURN ELSE CCC FIELD IS PARTIALLY FILLED: ERRFLG = YES IF (SS.EQ.S) THEN CALL MESSGE(4,YES,NOSCR,CUPNM) ELSE CALL UVT100(CUP,23,80) CALL UVT100(ED,1) CALL MESSGE(4,YES,NOCLE,CUPNM) END IF RETURN END IF C END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE CHKNUM(SS) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INCLUDE 'SY:ENTRY.CMN' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C DO 490 I=1,FLDLEN TCHR = BUFFER((FLDBGN-1)+I) IF ( (TCHR.LT."060 .OR. * TCHR.GT."071) * .AND. TCHR.NE.BLANK ) GOTO 480 490 CONTINUE C CCC FIELD CONTAINS ONLY NUMERICS (0-9, OR ' '): RETURN C CCC FIELD CONTAINS AT LEAST 1 NON-NUMERIC CHARACTER: 480 ERRFLG = YES IF (SS.EQ.S) THEN CALL MESSGE(10,YES,NOSCR,CUPNM) ELSE CALL UVT100(CUP,23,80) CALL UVT100(ED,1) CALL MESSGE(10,YES,NOCLE,CUPNM) END IF RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE CHKRNG(SS,F) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INCLUDE 'SY:ENTRY.CMN' C INTEGER*4 TMPNUM C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C NUMBLK = 0 DO 490 I=1,FLDLEN IF (BUFFER((FLDBGN-1)+I).EQ.BLANK) NUMBLK = NUMBLK+1 490 CONTINUE C CCC IF FIELD IS EMPTY: IF (NUMBLK.EQ.FLDLEN) RETURN C DECODE(FLDLEN,2005,BUFFER(FLDBGN)) TMPNUM 2005 FORMAT(BN,I) MINI = BUFCHR(F,4) MAXI = BUFCHR(F,5) C IF (MINI.NE.0 .OR. MAXI.NE.0) THEN IF (TMPNUM.LT.MINI .OR. TMPNUM.GT.MAXI) THEN ERRFLG = YES IF (SS.EQ.S) THEN CALL MESSGE(11,YES,NOSCR,CUPNM) ELSE CALL UVT100(CUP,23,80) CALL UVT100(ED,1) CALL MESSGE(11,YES,NOCLE,CUPNM) END IF RETURN END IF END IF C RETURN END