126.544: One hundred and twenty-six, point five double four /... 'n' twenny siks.../
I am right, am I not? (Or should I say "Aren't I?" :-)
Well, that's how I was taught fourty years ago or so.
BTW, has anyone here also written a program to fill checks (or cheques), but in English?
I am interested in the full numbers routine. Who still fills checks these days?
That was equivalent to about US$ 100.00 by mid February '86. I think at least twice that amount was required to buy a new HP-42S then. Perhaps even more. One ought literally to be a millionaire to buy HP here :-)
Back in the day I had an Olivetti electrical printer which a third-party interface would turn into a parallel line printer for a fraction of the price of a dot-matrix printer. Those were the days!
Code:
10 CLS: KEYOFF: CLEAR 500: DIM MU$(19),M$(11)
15 PRINT CHR$(27);"Z"
20 K=1000000#
30 FOR I=0 TO 19
40 READ MU$(I)
50 NEXT
60 FOR I=0 TO 9
70 READ MD$(I),MC$(I)
80 NEXT
90 FOR I=0 TO 11
100 READ M$(I)
110 NEXT
120 CLS:X$=""
130 INPUT " Quantia ";N
140 INPUT "Data (DD,MM,AA) ";D,M,A
150 LINEINPUT "A: ";P$
160 IF A=0 THEN A=92
170 IF N=0 THEN 710
180 CV=(N-INT(N))*100
190 GOSUB 930
200 IF N<1 THEN 420
210 IF N>1.99 THEN N$="S" ELSE N$=""
220 CN=INT((N/1000-INT(N/1000))*1000)
230 MR=INT(((N/K-INT(N/K))*K)/1000)
240 CT=INT(N/K)
250 IF CT=0 THEN 290
260 GOSUB 730
270 IF CT>1 THEN X$=X$+" MILHÕES " ELSE X$=X$+" MILHÃO "
280 IF MR=0 AND CN=0 THEN X$=X$+"DE "
290 IF MR=0 THEN 340
300 IF CT>0 AND CN=0 AND (MR<100 OR MR MOD 100=0) THEN X$=X$+"E "
310 CT=MR
320 GOSUB 730
330 X$=X$+" MIL "
340 IF CN=0 THEN 390
350 IF N>1000 AND (CN<100 OR CN MOD 100=0) THEN X$=X$+"E "
360 CT=CN
370 GOSUB 730
380 X$=X$+" "
390 X$=X$+"CRUZEIRO"+N$
400 IF CV=0 THEN 460
410 X$=X$+" E "
420 IF CV<>1 THEN N$="S" ELSE N$=""
430 CT=CV
440 GOSUB 730
450 X$=X$+" CENTAVO"+N$
460 PRINT TAB(10);
470 IF LEN(X$)<57 THEN GOSUB 840: GOTO 640
480 FOR I=56 TO 42 STEP -1
490 IF MID$(X$,I,1)=" " THEN 510
500 NEXT
510 NC=I-1
520 FOR I=1 TO 56-NC
530 PRINT "*";
540 NEXT
550 PRINT " ";
560 FOR I=1 TO LEN(X$)
570 PRINT MID$(X$,I,1);
580 IF I=NC+1 THEN PRINT
590 NEXT
600 PRINT " ";
610 FOR I=1 TO 67+NC-LEN(X$)
620 PRINT "*";
630 NEXT
640 PRINT: PRINT " ";P$
650 PRINT TAB(32)"Curitiba,";: IF D=1 THEN PRINT" 1§"; ELSE PRINT USING"###";D;
660 PRINT TAB(48)M$(M-1); TAB(64)A
670 PRINT: PRINT
680 PRINT "Outro cheque? "
690 A$=INKEY$
700 IF A$<>"S" AND A$<>"s" AND A$<>"N" AND A$<>"n" THEN 690
710 IF A$="S" OR A$="s" THEN 120
720 END
730 DZ=(CT/100-INT(CT/100))*100
740 UN=(DZ/10-INT(DZ/10))*10
750 IF CT=100 AND DZ=0 THEN X$=X$+"CEM": GOTO 830
760 IF CT/100<1 THEN 790
770 X$=X$+MC$(CT/100)
780 IF DZ>0 THEN X$=X$+" E "
790 IF DZ<20 THEN X$=X$+MU$(DZ): GOTO 830
800 X$=X$+MD$(DZ/10)
810 IF UN>0 THEN X$=X$+" E "
820 X$=X$+MU$(UN)
830 RETURN
840 FOR I=1 TO LEN(X$)
850 PRINT MID$(X$,I,1);
860 NEXT
870 PRINT " ";
880 FOR I=1 TO 123-LEN(X$)
890 PRINT "*";
900 IF I=56-LEN(X$) THEN PRINT
910 NEXT
920 RETURN
930 ND=LOG(N)/LOG(10)+1
940 Q$=STR$(N)
950 IF CV=0 THEN Q$=Q$+".00"
960 PRINT TAB(52);
970 FOR I=1 TO 16-LEN(Q$)-(ND-1)\3
980 PRINT "*";
990 NEXT
1000 PRINT TAB((66-LEN(Q$))-(ND-1)\3)
1010 CD=ND MOD 3
1020 IF CD=0 THEN CD=3
1030 FOR I=1 TO ND
1040 PRINT MID$(Q$,I+1,1);
1050 IF I=CD AND CD<ND-1 THEN PRINT ".";: CD=CD+3
1060 NEXT
1070 PRINT ",";
1080 PRINT MID$(Q$,I+2,2)
1090 PRINT
1100 RETURN
1110 DATA ,UM,DOIS,TRÊS,QUATRO,CINCO,SEIS,SETE,OITO,NOVE,DEZ,ONZE,DOZE,TREZE,QUATORZE,QUINZE,DEZESSEIS,DEZESETE,DEZOITO,DEZENOVE
1120 DATA ,,,CENTO,VINTE,DUZENTOS,TRINTA,TREZENTOS,QUARENTA,QUATROCENTOS,CINQÜENTA,QUINHENTOS,SESSENTA,SEISCENTOS,SETENTA,SETECENTOS,OITENTA,OITOCENTOS,NOVENTA,NOVECENTOS
1130 DATA Janeiro,Fevereiro,Março,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro