DEADSOFTWARE

Добавлена процедура NEW для аллокации обычных массивов
[dsw-obn.git] / test.c
diff --git a/test.c b/test.c
index c3a4b1467f51256bbec89e210374cb69d90a44d8..fc0033339d03fff36dbd6f52ba6989c3df777c0c 100644 (file)
--- a/test.c
+++ b/test.c
@@ -8,15 +8,30 @@ static char source_test[] =
        "(* Main module *)"
        "MODULE Test;"
        "IMPORT Out;"
+       ""
+       "VAR"
+       "  nx- : INTEGER;"
+       "  p : POINTER TO ARRAY 3 OF INTEGER;"
+       ""
+       "PROCEDURE ChParam(VAR i : INTEGER);"
+       "BEGIN"
+       "  i := 1234;"
+       "END ChParam;"
+       ""
        "BEGIN;"
+       "  NEW(p);"
+       "  p[0] := 1;"
+       "  "
        "  Out.Open;"
-       "  Out.Int(666, 0);"
+       "  ChParam(nx);"
+       "  Out.Int(nx, 0);"
        "  Out.Ln;"
        "END Test."
 ;
 
 static char source_out[] =
        "MODULE Out;"
+       "(* Interface to outer program ;) *)"
        "VAR"
        "  Open-     : PROCEDURE;"
 //     "  Char-     : PROCEDURE(ch : CHAR);"
@@ -59,14 +74,21 @@ typedef void (*TOutInt)(int, int);
 static TOutInt * OutIntPtr;
 void ImplOutInt(int i, int n)
 {
-       printf("%i", i);
+       char number[22];
+       snprintf(number, 22, "%i", i);
+       int len = strlen(number);
+       for(int i = 0; i < n - len; i++)
+       {
+               putchar(' ');
+       }
+       printf("%s", number);
 }
 
 typedef void (*TOutLn)();
 static TOutLn * OutLnPtr;
 void ImplOutLn()
 {
-       printf("\n");
+       putchar('\n');
 }
 
 void init_system_modules()