1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        OC-DC:   OCTAL-TO-DECIMAL CONVERTER
4  REM
5  REM        36712 REV  A   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8930  PRINT 
8940  PRINT "OCTAL ";
8950  INPUT Z
8960  IF Z=0 THEN 9420
8970  GOSUB 9000
8980  PRINT "DECIMAL ";Z
8990  GOTO 8930
9000  REM  **********   OCTAL-TO-DECIMAL  ********** 
9010  LET Z1=0
9020  LET Z2=SGN(Z)
9030  LET Z=ABS(Z)
9040  IF Z>777777. OR INT(Z)#Z THEN 9360
9050  LET Z3=INT(Z/100000.)
9060  IF Z3=0 THEN 9100
9070  GOSUB 9390
9080  LET Z1=Z1+Z3*32768.
9090  LET Z=Z-Z3*100000.
9100  LET Z3=INT(Z/10000)
9110  IF Z3=0 THEN 9150
9120  GOSUB 9390
9130  LET Z1=Z1+Z3*4096
9140  LET Z=Z-Z3*10000
9150  LET Z3=INT(Z/1000)
9160  IF Z3=0 THEN 9200
9170  GOSUB 9390
9180  LET Z1=Z1+Z3*512
9190  LET Z=Z-Z3*1000
9200  LET Z3=INT(Z/100)
9210  IF Z3=0 THEN 9250
9220  GOSUB 9390
9230  LET Z1=Z1+Z3*64
9240  LET Z=Z-Z3*100
9250  LET Z3=INT(Z/10)
9260  IF Z3=0 THEN 9300
9270  GOSUB 9390
9280  LET Z1=Z1+Z3*8
9290  LET Z=Z-Z3*10
9300  LET Z3=Z
9310  GOSUB 9390
9320  LET Z=Z1+Z
9330  IF Z2=0 OR Z2=1 THEN 9350
9340  LET Z=-Z
9350  RETURN 
9360  PRINT 
9370  PRINT "ERROR - NUMBER OUT OF RANGE"
9380  STOP 
9390  IF Z3#8 AND Z3#9 THEN 9430
9400  PRINT 
9410  PRINT "ERROR - NUMBER IS NOT OCTAL"
9420  STOP 
9430  RETURN 
9440  END 
