C NUMBER.FT C C NUMBER SUBROUTINE FOR OS/8 FORTRAN 4 C SUBROUTINE NUMBER (XS,YS,HGT,ANUM,ANG,IDIG) DIMENSION ANMPAS(21) DO 5 J=1,21 ANMPAS(J)=0. 5 CONTINUE IDGCNT=1 J=1 10 PABS=ABS(ANUM) IPART=PABS FPART=PABS-IPART C COUNT NUMBER OF DIGITS TO PRINT 20 IF (IPART/(10.**IDGCNT).LT.1) GOTO 30 C DONE WITH WHOLE PART OF NUMBER WHEN JUMP IDGCNT=IDGCNT+1 GOTO 20 30 IF (IDGCNT.GT.21) GOTO 100 PABS=(FLOAT(IPART)+.5)/10**(IDGCNT-1) DO 40 J=1,IDGCNT ANMPAS(J)=AINT(PABS) PABS=(PABS-ANMPAS(J))*10. 40 CONTINUE C FILL UP ARRAY WITH WHOLE ELEMENTS J=IDGCNT LDIG=IDGCNT+IDIG+1 IF (LDIG.GT.20) GOTO 100 IF (IDIG.LT.0) GOTO 51 J=J+1 ANMPAS(J)=-2. C FOR DECIMAL POINT IF (IDIG.LT.1) GOTO 51 C FOR IDIG=0 CASE DO 50 IPART=1,IDIG+1 C EXTRA PLACE TO CHECK FOR ROUNDING PABS=FPART*10. J=J+1 ANMPAS(J)=AINT(PABS) FPART=PABS-ANMPAS(J) 50 CONTINUE FPART=-3. IF (ANUM.LT.0) GOTO 52 C PREPARE FOR POSITIVE NUMBER ROUNDING IF (ANMPAS(J).LT.5) GOTO 55 ANMPAS(J-1)=ANMPAS(J-1)+1 59 IF (ANMPAS(J-1).NE.10) GOTO 55 C BE SHURE NOT TO INDEX THE DECIMAL POINT IF (ANMPAS(J-2).NE.-2.) GOTO 53 J=J-1 IF (ANUM.GE.1) GOTO 53 ANMPAS(J-2)=1. GOTO 55 53 ANMPAS(J-2)=ANMPAS(J-2)+1 J=J-1 C CHECK TO OVERFLOW ANMPAS IF (J.NE.2) GOTO 59 FPART=1. C MOVE ARRAY DOWN BY ONE TO ADD - OR 1 FOR .99+ 52 LDIG=LDIG+1 J=1 DO 60 J=1,LDIG-1 ANMPAS(LDIG-J+1)=ANMPAS(LDIG-J) 60 CONTINUE ANMPAS(1)=FPART GOTO 55 51 FPART=-3. IF (LDIG.LE.0) GOTO 100 C FOR NEG. NUMBERS WITH TOO FEW PLACES IF (ANUM.LT.0) GOTO 52 55 IF (LDIG.GT.21 .OR.LDIG.LE.0) GOTO 100 CALL SYMB (XS,YS,HGT,ANMPAS,ANG,LDIG) 120 RETURN 100 WRITE (0,200) 200 FORMAT (' NUMBER OF DIGITS NOT 1-19') END