9000  REM  ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  ******************
9001  REM  ***
9002  REM  ***    (A104)  36176  REV A 1/72
9003  REM  ***    STGINT: SUBROUTINES TO CONVERT BETWEEN STRINGS AND
9004  REM  ***          POSITIVE INTEGERS
9005  REM  ***
9006  REM  ***  CONTRIBUTED PROGRAM  ************************************
9020  REM
9030  REM  **  ENTER SUBROUTINE WITH Z9= (MAX) LENGTH OF STRING 
9040  REM      AND Z$ DIMENSIONED IN MAIN PROGRAM.
9050  REM   *  IF A STRING TO NUMBER CONVERSION, ENTER WITH Z8=0 AND
9060  REM      'Z$' AS THE STRING.  THE NUMBER IS RETURNED AS 'Z'
9070  REM   *  IF A NUMBER TO STRING CONVERSION, ENTER WITH Z8=1 AND
9080  REM      AND 'Z' AS THE NUMBER.  THE STRING IS RETURNED AS 'Z$'
9090  REM
9100  DIM Y$[10]
9110  Y$="0123456789"
9120  IF Z8=0 THEN 9310
9130  IF Z8=1 THEN 9160
9140  PRINT "Z8 NOT PROPERLY SPECIFIED"
9150  STOP 
9160  IF Z<0 THEN 9290
9170  IF INT(Z)#Z THEN 9290
9180  IF Z>((10^Z9)-1) THEN 9270
9190  Z2=Z3=Z4=0
9200  FOR Z1=Z9 TO 1 STEP -1
9210  Z3=Z3+1
9220  Z2=INT(Z/(10^(Z1-1)))-10*Z4
9230  Z4=(10*Z4)+Z2
9240  Z$[Z3,Z3]=Y$[Z2+1,Z2+1]
9250  NEXT Z1
9260  RETURN 
9270  PRINT "NUMBER TOO LARGE FOR STRING LENGTH"
9280  STOP 
9290  PRINT "NEGATIVE OR NON-INTEGER NUMBER DETECTED"
9300  STOP 
9310  Z=0
9320  Z7=Z9
9330  IF Z$[Z7,Z7]#" " THEN 9360
9340  Z7=Z7-1
9350  GOTO 9330
9360  Z2=0
9370  FOR Z1=Z7 TO 1 STEP -1
9380  IF Z$[Z1,Z1]>"4" THEN 9430
9390  FOR Z3=0 TO 4
9400  IF Z$[Z1,Z1]=Y$[Z3+1,Z3+1] THEN 9480
9410  NEXT Z3
9420  GOTO 9460
9430  FOR Z3=5 TO 9
9440  IF Z$[Z1,Z1]=Y$[Z3+1,Z3+1] THEN 9480
9450  NEXT Z3
9460  PRINT "NON-NUMERIC CHARACTER DETECTED."
9470  STOP 
9480  Z=Z+Z3*10^Z2
9490  Z2=Z2+1
9500  NEXT Z1
9510  RETURN 
9520  END 
