A large commit.
[pdp8.git] / sw / src / pascal / ZAHLWO.PS
diff --git a/sw/src/pascal/ZAHLWO.PS b/sw/src/pascal/ZAHLWO.PS
new file mode 100644 (file)
index 0000000..5f083ce
--- /dev/null
@@ -0,0 +1,55 @@
+PROGRAM ZAHLWOERTER(INPUT,OUTPUT);
+
+   VAR  N: INTEGER;
+
+   PROCEDURE EINER(E: INTEGER);
+      BEGIN CASE E OF
+                1: WRITE("EIN");
+                2: WRITE("ZWEI");
+                3: WRITE("DREI");
+                4: WRITE("VIER");
+                5: WRITE("FUENF");
+                6: WRITE("SECHS");
+                7: WRITE("SIEBEN");
+                8: WRITE("ACHT");
+                9: WRITE("NEUN");
+               10: WRITE("ZEHN");
+               11: WRITE("ELF");
+               12: WRITE("ZWOELF");
+            END
+      END (* EINER *);
+
+   PROCEDURE ZEHNER(Z: INTEGER);
+      BEGIN CASE Z OF
+                1: WRITE("ZEHN");
+                2: WRITE("ZWANZIG");
+                3: WRITE("DREISSIG");
+                4: WRITE("VIERZIG");
+                5: WRITE("FUENFZIG");
+                6: WRITE("SECHZIG");
+                7: WRITE("SIEBZIG");
+                8: WRITE("ACHTZIG");
+                9: WRITE("NEUNZIG")
+            END
+      END (* ZEHNER *);
+
+
+BEGIN READLN;
+   WHILE NOT EOF DO
+   BEGIN
+      READ(N); WRITE("ZAHL:",N:5,"    WORT:  ");
+      IF N=1
+         THEN WRITE("EINS")
+         ELSE IF N<=12
+                 THEN EINER(N)
+                 ELSE IF N<=19
+                         THEN BEGIN EINER(N-10);WRITE("ZEHN") END
+                         ELSE IF N MOD 10 = 0
+                                 THEN ZEHNER(N DIV 10)
+                                 ELSE BEGIN EINER(N MOD 10);
+                                            WRITE("UND");
+                                            ZEHNER(N DIV 10)
+                                      END;
+      WRITELN
+   END
+END.