SUBROUTINE STRCHK(KBASE,INP1,INP2,IERR) COMMON/STR/IBLK,IDASH,IPLUS,IZERO,IAYE,I1SIGN,I2SIGN 1 ,IBASE,LIN,LIN2,INP11,INP21,NEW(132) BYTE IBLK,IDASH,IPLUS,IZERO,IAYE,I1SIGN,I2SIGN 1 ,IBASE,LIN,LIN2,INP11,INP21 BYTE INP1(1),INP2(1) DATA IBLK,IPLUS,IDASH,IZERO,IAYE/' ','+','-','0','A'/ C.. C.. THIS ROUTINE CHECKS BOTH INP1 STRINGS C.. C.. CHECK LENGTH OF INP1 + INP2 C.. IERR=1 IBASE=KBASE IF(IBASE.LT.0) IBASE=-KBASE I1SIGN=1 I2SIGN=1 IF(IBASE.LE.1.OR.IBASE.GT.36) GO TO 98 LIN=0 IF(INP1(1).EQ.0) LIN=1 LIN2=0 IF(INP2(1).EQ.0) LIN2=1 IF(INP1(1).EQ.IDASH) I1SIGN=-I1SIGN INP11=INP1(1) IF(LIN.EQ.1) INP11=IZERO IF(INP11.EQ.IDASH.OR.INP11.EQ.IPLUS) INP1(1)=IZERO IF(INP2(1).EQ.IDASH) I2SIGN=-I2SIGN INP21=INP2(1) IF(LIN2.EQ.1) INP21=IZERO IF(INP21.EQ.IDASH.OR.INP21.EQ.IPLUS) INP2(1)=IZERO IERR=2 DO 1 I=1,80 IF(LIN.GT.0) GO TO 11 IF(INP1(I).EQ.0.OR.INP1(I).EQ.IBLK) LIN=I-1 INP1(I)=INP1(I)-IZERO IF(IBASE.GT.10.AND.LIN.EQ.0.AND.INP1(I).GT.9) 1 INP1(I)=INP1(I)+IZERO-IAYE+10 IF(LIN.EQ.0.AND.(INP1(I).GE.IBASE.OR.INP1(I).LT.0))GO TO 99 11 IF(LIN2.GT.0) GO TO 13 IF(INP2(I).EQ.0.OR.INP2(I).EQ.IBLK) LIN2=I-1 INP2(I)=INP2(I)-IZERO IF(IBASE.GT.10.AND.LIN.EQ.0.AND.INP2(I).GT.9) 1 INP2(I)=INP2(I)+IZERO-IAYE+10 IF(LIN2.EQ.0.AND.(INP2(I).GE.IBASE.OR.INP2(I).LT.0))GO TO 99 13 IF(LIN.GT.0.AND.LIN2.GT.0) GO TO 12 1 CONTINUE 12 IERR=3 IF(LIN.LE.0.OR.LIN2.LE.0) GO TO 99 IERR=0 RETURN 98 TYPE 198,IBASE 198 FORMAT('0*** ERROR IN STRCHK *** IBASE=',I4) 999 TYPE 888,IERR 888 FORMAT(' *** ERROR NUMBER =',I1,'***'/) RETURN 99 TYPE 199,LIN,(INP1(I),I=1,5),LIN2,(INP2(I),I=1,5) 1 ,(INP1(I),I=1,5),(INP2(I),I=1,5) 199 FORMAT('0*** ERROR IN STRCHK *** IN(',I2,')=',5A1, 1 ' OPER(',I2,')=',5A1/' IN=',5I6,' OPER=',5I6) GO TO 999 END