51 lines
1.1 KiB
Text
51 lines
1.1 KiB
Text
|
hack : module
|
||
|
|
||
|
dcl i int;
|
||
|
newmode otto = array (bool, bool) byte;
|
||
|
newmode str1 = struct (f1 int, f2 bool);
|
||
|
newmode str2 = struct (f1 otto);
|
||
|
|
||
|
dcl a otto := [[1,1],[1,1]];
|
||
|
dcl b str1 := [10, false];
|
||
|
dcl c str2;
|
||
|
|
||
|
fred : proc (a int in, b int loc);
|
||
|
writetext(stdout, "a is '%C'; b is '%C'.%/", a, b);
|
||
|
end fred;
|
||
|
|
||
|
klaus : proc ();
|
||
|
writetext(stdout, "here's klaus calling.%/");
|
||
|
end klaus;
|
||
|
|
||
|
king : proc (p otto loc, x otto in);
|
||
|
dcl i, j bool;
|
||
|
p := [[h'ff,h'ff],[h'ff,h'ff]];
|
||
|
do for i:= lower(bool) to upper(bool);
|
||
|
do for j:= lower(bool) to upper(bool);
|
||
|
writetext(stdout, "x(%C, %C) = %C.%/", i, j, x(i, j));
|
||
|
writetext(stdout, "p(%C, %C) = %C.%/", i, j, p(i, j));
|
||
|
od;
|
||
|
od;
|
||
|
end king;
|
||
|
|
||
|
ralph : proc (x str1 in);
|
||
|
writetext(stdout, "x.f1 = %C, x.f2 = %C.%/", x.f1, x.f2);
|
||
|
end ralph;
|
||
|
|
||
|
whitney : proc (x str2 in);
|
||
|
dcl i, j bool;
|
||
|
|
||
|
do for i:= lower(bool) to upper(bool);
|
||
|
do for j:= lower(bool) to upper(bool);
|
||
|
writetext(stdout, "x.f1(%C, %C) = %C.%/", i, j, x.f1(i, j));
|
||
|
od;
|
||
|
od;
|
||
|
|
||
|
end whitney;
|
||
|
|
||
|
c := [a];
|
||
|
i:=12;
|
||
|
writetext(stdout, "done.%/");
|
||
|
|
||
|
end hack;
|