home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib32b.dsk / NUM.TO.LETTERS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  60 lines

  1. 10  REM  **********************
  2. 20  REM  * NUM.TO.LETTERS     *
  3. 30  REM  * BY MARK CRAVEN     *
  4. 40  REM  * COPYRIGHT (C) 1987 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  TEXT : HOME : INVERSE : PRINT " NUMBERS TO LETTERS ": NORMAL 
  9. 90  PRINT : PRINT "BY MARK CRAVEN": PRINT : PRINT "COPYRIGHT 1987 BY MICROSPARC, INC."
  10. 100  VTAB 23: PRINT "RETURN TO CONTINUE...";: GET X$: POKE  -16368,0: HOME 
  11. 110  FOR I = 1 TO 9: READ TH$(I):H$(I) = TH$(I): NEXT 
  12. 120  FOR I = 0 TO 9: READ T$(I): NEXT : REM  TEENS
  13. 130  FOR I = 2 TO 9: READ T1$(I): NEXT : REM  'TENS'
  14. 140  HOME :S$ = "":S1$ = "":TH$ = "":H$ = "":T$ = "":T1$ = "": VTAB 4: PRINT "ENTER YOUR OWN NUMBER (-9999 TO +9999)": PRINT "OR RETURN FOR A RANDOM NUMBER": PRINT : PRINT 
  15. 150  INPUT "";N$: IF N$ = ""  THEN 230
  16. 160  IF  LEFT$(N$,1) = "-"  THEN S$ = "-":S1$ = "MINUS":N$ =  MID$ (N$,2)
  17. 170  IF N$ = "0"  THEN  PRINT "THE NUMBER IS 0.":A$ = "ZERO": GOSUB 500: GOTO 390
  18. 180  FOR I = 1 TO  LEN(N$): IF  ASC( MID$ (N$,I,1)) <48  OR  ASC( MID$ (N$,I,1)) >57  THEN  CALL 65338: GOTO 140
  19. 190  NEXT I: IF  LEN(N$) >4  THEN  CALL 65338: GOTO 140
  20. 200  IF  VAL(N$) = 0  THEN  CALL 65338: GOTO 140
  21. 210  IF  LEFT$(N$,1) = "0"  THEN N$ =  MID$ (N$,2): GOTO 210
  22. 220  GOTO 250
  23. 230 N% =  INT(5000 * RND(1)): IF N% <1  THEN N% = 1
  24. 240 N$ =  STR$(N%)
  25. 250 J =  LEN(N$)
  26. 260  PRINT "THE NUMBER IS ";S$;N$: PRINT 
  27. 270  CALL  -958
  28. 280  ON J GOTO 370,320,300,290
  29. 290 TH$ = TH$( VAL( MID$ (N$,1,1))) +" THOUSAND": REM  THOUSANDS NAME
  30. 300  IF  MID$ (N$,J -2,1) = "0"  THEN H$ = "": GOTO 320: REM  NO HUNDREDS --GO TO 'TENS'
  31. 310 H$ = H$( VAL( MID$ (N$,J -2,1))) +" HUNDRED": REM  NAME OF THE HUNDREDS NUMBER
  32. 320  IF  MID$ (N$,J -1,1) = "0"  THEN T$ = "": GOTO 370: REM  NO 'TENS' VALUE
  33. 330  IF  MID$ (N$,J -1,1) < >"1"  THEN 350: REM  SKIP THE 'TEENS'
  34. 340 T$ = T$( VAL( MID$ (N$,J,1))):U$ = "": GOTO 380: REM  'TEEN' VALUE --NO UNITS-PRINT IT OUT
  35. 350 T$ = T1$( VAL( MID$ (N$,J -1,1))): GOTO 370: REM  THE TENS DIGIT THEN TO THE UNITS
  36. 360  IF  MID$ (N$,J -1,1) = "0"  THEN T$ = "": GOTO 380: REM  NO 'TENS'-- DO UNITS
  37. 370 U$ = H$( VAL( MID$ (N$,J,1))): REM  NAME OF UNITS DIGIT
  38. 380 A$ = S1$ +TH$ +H$ +T$ +U$: GOSUB 500
  39. 390  VTAB 23: PRINT "RETURN TO CONTINUE-ESCAPE TO QUIT";: GET X$: POKE  -16368,0
  40. 400  IF X$ =  CHR$(27)  THEN  END 
  41. 410  GOTO 140
  42. 420  DATA  " ONE"," TWO"," THREE"," FOUR"," FIVE"," SIX"," SEVEN"," EIGHT"," NINE": REM  THOUSANDS, HUNDREDS AND UNITS
  43. 430  DATA  " TEN"," ELEVEN"," TWELVE"," THIRTEEN"," FOURTEEN"," FIFTEEN"," SIXTEEN"," SEVENTEEN"," EIGHTEEN"," NINETEEN": REM  TEENS
  44. 440  DATA  " TWENTY"," THIRTY"," FORTY"," FIFTY"," SIXTY"," SEVENTY"," EIGHTY"," NINETY": REM  'TENS'
  45. 450  REM  ******************
  46. 460  REM  *                *
  47. 470  REM  * TEXT FORMATTER *
  48. 480  REM  *                *
  49. 490  REM  ******************
  50. 500  IF NC = 0  THEN NC = 40:MC = 40
  51. 510  IF MC <NC  THEN MC = MC +40: GOTO 510
  52. 520 LM =  INT((MC -NC)/2) +1
  53. 530  IF  LEFT$(A$,1) = " "  THEN A$ =  MID$ (A$,2): GOTO 530
  54. 540  IF  LEN(A$) < = NC  THEN 590
  55. 550 Y$ = A$: FOR J1 = NC +1 TO 1  STEP  -1: IF  MID$ (Y$,J1,1) = " "  THEN 570
  56. 560  NEXT :J1 = NC +1
  57. 570 A$ =  LEFT$(Y$,J1 -1): GOSUB 590: IF J1 >0  THEN A$ =  MID$ (Y$,J1)
  58. 580  GOTO 530
  59. 590  HTAB LM: PRINT A$;: IF  LEN(A$) < >MC  THEN  PRINT 
  60. 600 A$ = "": RETURN