MODULE HW; IMPORT SYSTEM, Libdl, Args; VAR libc: INTEGER; puts: PROCEDURE [linux] (pStr: INTEGER); PROCEDURE OutStringLn (s: ARRAY OF CHAR); BEGIN puts(SYSTEM.ADR(s[0])) END OutStringLn; PROCEDURE main; VAR i: INTEGER; s: ARRAY 80 OF CHAR; BEGIN OutStringLn("Hello"); OutStringLn(""); i := 0; WHILE i < Args.argc DO Args.GetArg(i, s); INC(i); OutStringLn(s) END; OutStringLn(""); i := 0; WHILE i < Args.envc DO Args.GetEnv(i, s); INC(i); OutStringLn(s) END; OutStringLn(""); OutStringLn("Bye") END main; BEGIN libc := Libdl.open("libc.so.6", Libdl.LAZY); SYSTEM.PUT(SYSTEM.ADR(puts), Libdl.sym(libc, "puts")); ASSERT(puts # NIL); main END HW.