10 // General sample program 20 // 30 WHILE NOT(EOD) DO 40 READ a 50 PRINT a;" ";verbaal$(a) 60 ENDWHILE 70 // 80 DATA 1, 12, 34, 112, 1009, 1234567890 90 // 100 FUNC verbaal$(getal#) CLOSED 110 // 120 // ************************************ 130 // ** FUNC Verbaal$ ( Integer ) ** 140 // ************************************ 150 // 160 // Geschreven door Jos Visser, 25-06-1987 170 // Aangepast voor PDCOMAL, 10-9-92 180 // 190 // 200 // Functie : 210 // Deze functie neemt als parameter een integer getal, 220 // positief danwel negatief, en geeft een string terug 230 // die weergeeft hoe dat getal op zijn Nederlands 240 // geschreven kan worden. 250 // 260 // Parameters in : 270 // Integer getal 280 // 290 // Parameters uit : 300 // String, maximaal 132 karakters lang 310 // 320 // Packages ed. : 330 // Geen 340 // 350 PROC skipspaces(REF a$) CLOSED 360 IF a$<>"" THEN 370 WHILE a$(LEN(a$):LEN(a$))=" " DO a$:=a$(1:LEN(a$)-1) 380 ENDIF 390 ENDPROC 400 // 410 FUNC cijfer$(nr#) CLOSED 420 DIM a$ OF 5 430 a$:="nul een twee drie vier vijf zes zevenacht negentien "(1+nr#*5:5+nr#*5) 440 skipspaces(a$) 450 RETURN a$ 460 ENDFUNC 470 // 480 FUNC t'11'19$(nr#) CLOSED 490 DIM a$ OF 10 500 a$:="tien elf twaalf dertien veertien vijftien zestien zeventienachtien negentien"(1+(nr#-10)*9:9+(nr#-10)*9) 510 skipspaces(a$) 520 RETURN a$ 530 ENDFUNC 540 // 550 FUNC tiental$(nr#) CLOSED 560 DIM a$ OF 10 570 nr#:=nr# DIV 10 580 a$:="twintig dertig veertig vijftig zestig zeventigtachtig negentig"(1+(nr#-2)*8:8+(nr#-2)*8) 590 skipspaces(a$) 600 RETURN a$ 610 ENDFUNC 620 // 630 FUNC duizend$(nr#) CLOSED 640 honderd#:=nr# DIV 100 650 rest#:=nr# MOD 100 660 IF honderd#>1 THEN 670 result$:=cijfer$(honderd#)+"honderd" 680 ELIF honderd#=1 690 result$:="honderd" 700 ELSE 710 result$:="" 720 ENDIF 730 IF rest#<=10 THEN 740 IF rest#<>0 OR honderd#=0 THEN result$:+cijfer$(rest#) 750 ELIF rest#<20 760 result$:+t'11'19$(rest#) 770 ELSE 780 IF rest# MOD 10<>0 THEN result$:=result$+cijfer$(rest# MOD 10)+"en" 790 IF rest# DIV 10>0 THEN result$:+tiental$(rest#) 800 ENDIF 810 RETURN result$ 820 ENDFUNC 830 // 840 DIM result$ OF 132, subresult$ OF 40 850 result$:="" 860 IF getal#<0 THEN 870 negatief#:=TRUE 880 getal#:=-getal# 890 ELSE 900 result$:="" 910 negatief#:=FALSE 920 ENDIF 930 FOR macht#:=9 DOWNTO 0 STEP 3 DO 940 subgetal#:=getal# DIV 10^macht# 950 getal#:=getal# MOD 10^macht# 960 IF subgetal#>0 OR (macht#=0 AND result$="") THEN 970 subresult$:=duizend$(subgetal#) 980 IF macht#<>3 OR subgetal#<>1 THEN 990 result$:=result$+", "+subresult$ 1000 ELSE 1010 IF result$="" THEN result$:=" " 1020 ENDIF 1030 CASE macht# OF 1040 WHEN 9 1050 result$:+" miljard " 1060 WHEN 6 1070 result$:+" miljoen " 1080 WHEN 3 1090 result$:+"duizend " 1100 OTHERWISE 1110 NULL 1120 ENDCASE 1130 ENDIF 1140 skipspaces(result$) 1150 ENDFOR 1160 result$:=result$(3:) 1170 IF negatief# THEN result$:="min "+result$ 1180 RETURN result$ 1190 ENDFUNC 1200 //