hello.ob07 794 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. MODULE Hello;
  2. IMPORT SYSTEM, Libdl, Args;
  3. VAR
  4. libc: INTEGER;
  5. puts: PROCEDURE [linux] (pStr: INTEGER);
  6. PROCEDURE OutStringLn (s: ARRAY OF CHAR);
  7. BEGIN
  8. puts(SYSTEM.ADR(s[0]))
  9. END OutStringLn;
  10. PROCEDURE main;
  11. VAR
  12. i: INTEGER;
  13. s: ARRAY 80 OF CHAR;
  14. BEGIN
  15. OutStringLn("Hello");
  16. OutStringLn("");
  17. i := 0;
  18. WHILE i < Args.argc DO
  19. Args.GetArg(i, s);
  20. INC(i);
  21. OutStringLn(s)
  22. END;
  23. OutStringLn("");
  24. i := 0;
  25. WHILE i < Args.envc DO
  26. Args.GetEnv(i, s);
  27. INC(i);
  28. OutStringLn(s)
  29. END;
  30. OutStringLn("");
  31. OutStringLn("Bye")
  32. END main;
  33. BEGIN
  34. libc := Libdl.open("libc.so.6", Libdl.LAZY);
  35. SYSTEM.PUT(SYSTEM.ADR(puts), Libdl.sym(libc, "puts"));
  36. ASSERT(puts # NIL);
  37. main
  38. END Hello.