SUBROUTINE STRADB 1 (KBASE,INP1,LIN,I1SIGN,INP2,LIN2,I2SIGN,NEWB,LNEW) COMMON/STR/IBLK,IDASH,IPLUS,IZERO,IAYE,ISIGN1,ISIGN2 1 ,IBASE,LINA,LINA2,INPA11,INPA21,NEW(132) BYTE INP11,INP21,NEWB(1),INP1(1),INP2(1) BYTE IBLK,IDASH,IPLUS,IZERO,IAYE,ISIGN1,ISIGN2 1 ,IBASE,LINA,LINA2,INPA11,INPA21 C.. C.. THIS ROUTINE ADDS (SUBS) TWO STRINGS TOGETHER C.. COPY OF STRADD BUT NO CHECKS OR CONVERSIONS C.. C.. C.. NEW LENGTH = MAX(INP1+INP2)+1 C.. C** TYPE 444,KBASE,INP1,LIN,I1SIGN,INP2,LIN2,I2SIGN,NEWB,LNEW 444 FORMAT(//' KBASE=',I3/ 1 ' INP1=',O6,' LIN=',I2,' I1SIGN=',I2/ 2 ' INP2=',O6,' LIN2=',I2,' I2SIGN=',I2/ 3 ' NEWB=',O6,' LNEW=',I2) LNEW=LIN IF(LIN2.GT.LIN) LNEW=LIN2 LNEW=LNEW+1 C.. C.. ADD C.. CALL DOBYTE(NEWB(1),NEWB(LNEW+1),0) DO 20 I=1,LNEW LNEWS=LNEW-I+1 LIN2S=LIN2-I+1 MADDS=0 IF(LIN2S.GT.0) MADDS=INP2(LIN2S) LINS=LIN-I+1 MINS=0 IF(LINS.GT.0) MINS=INP1(LINS) NEWB(LNEWS)=I1SIGN*MINS+I2SIGN*MADDS 20 CONTINUE C.. C.. CHECK OUT CARRIES AND/OR MINUSES C.. NEGAT=0 DO 40 I=1,LNEW IF(NEWB(I))41,40,42 40 CONTINUE C..ANSWER IS ZERO LNEW=1 GO TO 43 C.. C.. ANSWER IS NEGAT C.. 41 NEGAT=1 DO 44 I=1,LNEW NEWB(I)=-NEWB(I) 44 CONTINUE C.. C.. ANSWER IS PLUS C.. 42 DO 50 I=1,LNEW IF(NEWB(I).GE.0) GO TO 50 NEWB(I-1)=NEWB(I-1)-1 NEWB(I)=NEWB(I)+KBASE GO TO 42 50 CONTINUE ICARRY=0 C.. C.. CHECK OUT CARRIES C.. DO 45 I=1,LNEW LNEWS=LNEW-I+1 NEWB(LNEWS)=NEWB(LNEWS)+ICARRY ICARRY=0 IF(NEWB(LNEWS).LT.KBASE) GO TO 45 ICARRY=1 NEWB(LNEWS)=NEWB(LNEWS)-KBASE 45 CONTINUE C.. C.. CHECK OUT NEGATIVES C.. IF(NEGAT.LE.0) GO TO 43 DO 46 LNEWS=1,LNEW NEWB(LNEWS)=-NEWB(LNEWS) 46 CONTINUE 43 CONTINUE C.. C.. GET RID OF LEADING ZEROS C.. IF(LNEW.LE.1) GO TO 88 IF(NEWB(1).NE.0) GO TO 88 CALL BYTEDO(NEWB(1),NEWB(LNEW+1),NEWB(2)) LNEW=LNEW-1 GO TO 43 88 CONTINUE C** TYPE 444,KBASE,INP1,LIN,I1SIGN,INP2,LIN2,I2SIGN,NEWB,LNEW RETURN END