SPL,L,O,"" ! NAME INTV(7) "92425-16025 REV.1841 780927" ! ! !------------------------------------------------------------- ! ! ! F. WARREN 17MAY76 REV. A ! ! "C" COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ! ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM ! MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED ! TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR ! WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. ! !------------------------------------------------------------- ! ! LET GET BE FUNCTION,EXTERNAL,DIRECT ! GET A CHAR ! ! INTV ASCII-TO-INTEGER (RIGHT/JUSTIFIED) INTV: FUNCTION(S1,FAIL) FEXIT,GLOBAL LET S1(1) BE INTEGER ! INTEGER STRING LET AT BE INTEGER ! WORKING NUMBER AK _ S1(1) ! START WITH CCNT IF AK = 0 THEN GO TO A2 ! NO DIGITS AT _ 0 ! START WITH 0 EX _ 10 ! ASSUME BASE 10 .B. _ @S1 ! POINT GET TO STRING .A. _ S1(1) ! GET LAST CHAR IF GET # "B" THEN GO TO A1 ! NOT OCTAL EX _ 8 ! RESET BASE AK _ AK - 1 ! CLIP OFF "B" IF AK = 0 THEN GO TO A2 ! NO DIGITS A1: FOR IJ _ 1 TO AK DO THRU AA ! FOR ALL DIGITS .B. _ @S1 ! POINT TO STRING .A. _ IJ ! IJ TH CHAR ACHR _ GET ! GET THE CHAR IF ACHR = " " THEN GO TO AA ! SKIP BLANKS IF ACHR < "0" THEN GO TO A2 ! ERROR IF ACHR > "9" THEN GO TO A2 ! ERROR IF EX = 8 AND CHAR > "7" THEN GO TO A2 ! ERROR VA _ ACHR - 60K ! CONVERT TO NUMBER AT _ EX * AT + VA ! CONVERT TO INTEGER AND ADD AA: .A._0 ! CONTINUE STATEMENT FAIL_0 ! SET TO SUCCEED RETURN AT ! RETURN VALUE A2: ! FAIL_ -1 ! SET FAIL FLAG FRETURN -1 ! FAILED TO CONVERT END ! END END$