001: 002: type string: 1 -> character 003: type BooleanXBoolean: [Boolean: x; Boolean: y] 004: type characterXcharacter: [character: x; character: y] 005: type integerXinteger: [integer: x; integer: y] 006: 007: type Boolean2Boolean: Boolean -> Boolean 008: type integer2integer: integer -> integer 009: type character2integer: character -> integer 010: type Boolean2integer: Boolean -> integer 011: type string2integer: string -> integer 012: type integerXinteger2integer: integerXinteger -> integer 013: type integerXinteger2Boolean: integerXinteger -> Boolean 014: type characterXcharacter2Boolean: characterXcharacter -> Boolean 015: type BooleanXBoolean2Boolean: BooleanXBoolean -> Boolean 016: type integer2address: integer -> address 017: type address2integer: address -> integer 018: type integer2string: integer -> string 019: type integer2character: integer -> character 020: type integer2Boolean: integer -> Boolean 021: 022: 023: external function printInteger: integer2integer 024: external function printCharacter: character2integer 025: external function printBoolean: Boolean2integer 026: 027: external function printS: string2integer 028: external function printI: integer2integer 029: external function printC: character2integer 030: external function printB: Boolean2integer 031: 032: external function inS: integer2string 033: external function inI: integer2integer 034: external function inC: integer2character 035: 036: function entry: string2integer 037: 038: entry (arg) := { 039: [integer:x; integer:y; integer: result] 040: 041: y := 1; 042: x := 3; 043: y := x - y; 044: 045: result := printInteger(y); 046: return y; 047: }