
             Edinburgh IMP77 Compiler - Version 8.4


        LANG 0000
        PUSHI #0x00000000
        DEF V_0001 NIL  record, name, format=0, constant
        INIT 1
        DEF V_0002 REM  integer, function, format=1, prim-spec-indirect
        START
        DEF V_0003 P  integer, simple, format=1, 0
        DEF V_0004 Q  integer, simple, format=1, 0
        FINISH
        DEF V_0003 FLOAT  real, function, format=1, prim-spec-indirect
        START
        DEF V_0004 N  integer, simple, format=1, 0
        FINISH
        DEF V_0004 TOSTRING  string, function, format=1, prim-spec-indirect
        START
        DEF V_0005 C  integer, simple, format=1, 0
        FINISH
        DEF V_0005 ADDR  integer, function, format=1, prim-spec-indirect
        START
        DEF V_0006 P  type=0, name, format=0, 0
        FINISH
        DEF V_0006 INTEGER  integer, map, format=1, prim-spec
        START
        DEF V_0007 N  integer, simple, format=1, 0
        FINISH
        DEF V_0007 BYTEINTEGER  byte-integer, map, format=2, prim-spec
        START
        DEF V_0008 N  integer, simple, format=1, 0
        FINISH
        DEF V_0008 STRING  string, map, format=0, prim-spec
        START
        DEF V_0009 N  integer, simple, format=1, 0
        FINISH
        DEF V_0009 RECORD  record, map, format=0, prim-spec
        START
        DEF V_000a N  integer, simple, format=1, 0
        FINISH
        DEF V_000a REAL  real, map, format=1, prim-spec
        START
        DEF V_000b N  integer, simple, format=1, 0
        FINISH
        DEF V_000b LONGREAL  long-real, map, format=4, prim-spec
        START
        DEF V_000c N  integer, simple, format=1, 0
        FINISH
        DEF V_000c LENGTH  byte-integer, map, format=2, prim-spec
        START
        DEF V_000d S  string, simple, format=255, 0
        FINISH
        DEF V_000d CHARNO  byte-integer, map, format=2, prim-spec
        START
        DEF V_000e S  string, simple, format=255, 0
        DEF V_000f N  integer, simple, format=1, 0
        FINISH
        DEF V_000e INT  integer, function, format=1, prim-spec-indirect
        START
        DEF V_000f R  long-real, simple, format=4, 0
        FINISH
        DEF V_000f SHORTINTEGER  short-integer, map, format=3, prim-spec
        START
        DEF V_0010 N  integer, simple, format=1, 0
        FINISH
        DEF V_0010 TYPEOF  integer, function, format=1, external-spec-indirect
        START
        DEF V_0011 N  type=0, name, format=0, 0
        FINISH
        DEF V_0011 SIZEOF  integer, function, format=1, external-spec-indirect
        START
        DEF V_0012 N  type=0, name, format=0, 0
        FINISH
        DEF V_0012 TYPENAME  string, function, format=255, external-spec-indirect
        START
        DEF V_0013 T  integer, simple, format=1, 0
        FINISH
        DEF V_0013 ARRAYENTRYSIZE  integer, function, format=1, external-spec-indirect
        START
        DEF V_0014 N  type=0, name, format=0, 0
        FINISH
        DEF V_0014 ARRAYENTRYTYPE  integer, function, format=1, external-spec-indirect
        START
        DEF V_0015 N  type=0, name, format=0, 0
        FINISH
        DEF V_0015 ARRAYDIMENSIONS  integer, function, format=1, external-spec-indirect
        START
        DEF V_0016 N  type=0, name, format=0, 0
        FINISH
        DEF V_0016 ARRAYLOWERBOUND  integer, function, format=1, external-spec-indirect
        START
        DEF V_0017 N  type=0, name, format=0, 0
        DEF V_0018 INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_0017 ARRAYUPPERBOUND  integer, function, format=1, external-spec-indirect
        START
        DEF V_0018 N  type=0, name, format=0, 0
        DEF V_0019 INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_0018 EVENTFM  record, record-format, format=24, 0
        START
        DEF V_0000 EVENT  integer, simple, format=1, 0
        DEF V_0000 SUB  integer, simple, format=1, 0
        DEF V_0000 INFO  integer, simple, format=1, 0
        DEF V_0000 LINE  integer, simple, format=1, 0
        DEF V_0000 MESSAGE  string, simple, format=255, 0
        FINISH
        DEF V_0019 EVENT  record, map, format=24, external-spec
        START
        FINISH
        DEF V_001a INPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_001b INPUTNAME  string, function, format=255, external-spec-indirect
        START
        FINISH
        DEF V_001c SELECTINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_001d N  integer, simple, format=1, 0
        FINISH
        DEF V_001d OPENINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_001e N  integer, simple, format=1, 0
        DEF V_001f FD  string, simple, format=255, 0
        FINISH
        DEF V_001e OPENBINARYINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_001f N  integer, simple, format=1, 0
        DEF V_0020 FD  string, simple, format=255, 0
        FINISH
        DEF V_001f CLOSEINPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0020 RESETINPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0021 SEEKINPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0022 DISPLACEMENT  integer, simple, format=1, 0
        DEF V_0023 STARTPOINT  integer, simple, format=1, 0
        FINISH
        DEF V_0022 TELLINPUT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0023 READSYMBOL  type=0, routine, format=0, external-spec
        START
        DEF V_0024 P  type=0, name, format=0, 0
        FINISH
        DEF V_0024 NEXTSYMBOL  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0025 READBUFFER  integer, function, format=1, external-spec-indirect
        START
        DEF V_0026 PTR  type=0, name, format=0, 0
        DEF V_0027 COUNT  integer, simple, format=1, 0
        FINISH
        DEF V_0026 PROMPT  type=0, routine, format=0, external-spec
        START
        DEF V_0027 S  string, simple, format=31, 0
        FINISH
        DEF V_0027 CURRENTPROMPT  string, function, format=31, external-spec-indirect
        START
        FINISH
        DEF V_0028 GETMAXINPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0029 FILEEND  type=0, predicate, format=0, external-spec
        START
        FINISH
        DEF V_002a ALLOWEOFEVENT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_002b BLOCKEOFEVENT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_002c OUTPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_002d OUTPUTNAME  string, function, format=255, external-spec-indirect
        START
        FINISH
        DEF V_002e SELECTOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_002f N  integer, simple, format=1, 0
        FINISH
        DEF V_002f OPENOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0030 N  integer, simple, format=1, 0
        DEF V_0031 FD  string, simple, format=255, 0
        FINISH
        DEF V_0030 OPENBINARYOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0031 N  integer, simple, format=1, 0
        DEF V_0032 FD  string, simple, format=255, 0
        FINISH
        DEF V_0031 CLOSEOUTPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0032 RESETOUTPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0033 SEEKOUTPUT  type=0, routine, format=0, external-spec
        START
        DEF V_0034 DISPLACEMENT  integer, simple, format=1, 0
        DEF V_0035 STARTPOINT  integer, simple, format=1, 0
        FINISH
        DEF V_0034 TELLOUTPUT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0035 PRINTSYMBOL  type=0, routine, format=0, external-spec
        START
        DEF V_0036 SYM  integer, simple, format=1, 0
        FINISH
        DEF V_0036 WRITEBUFFER  integer, function, format=1, external-spec-indirect
        START
        DEF V_0037 PTR  type=0, name, format=0, 0
        DEF V_0038 COUNT  integer, simple, format=1, 0
        FINISH
        DEF V_0037 DEBUGSYMBOL  type=0, routine, format=0, external-spec
        START
        DEF V_0038 SYM  integer, simple, format=1, 0
        FINISH
        DEF V_0038 DEBUGREAL  type=0, routine, format=0, external-spec
        START
        DEF V_0039 D  long-real, simple, format=4, 0
        FINISH
        DEF V_0039 GETMAXOUTPUTSTREAM  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_003a FLUSHOUTPUT  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_003b SKIPSYMBOL  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_003c PRINTSTRING  type=0, routine, format=0, external-spec
        START
        DEF V_003d S  string, simple, format=255, 0
        FINISH
        DEF V_003d DEBUGSTRING  type=0, routine, format=0, external-spec
        START
        DEF V_003e S  string, simple, format=255, 0
        FINISH
        DEF V_003e DEBUGNEWLINE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_003f DEBUGSPACE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0040 DEBUGSPACES  type=0, routine, format=0, external-spec
        START
        DEF V_0041 COUNT  integer, simple, format=1, 0
        FINISH
        DEF V_0041 WRITE  type=0, routine, format=0, external-spec
        START
        DEF V_0042 V  integer, simple, format=1, 0
        DEF V_0043 P  integer, simple, format=1, 0
        FINISH
        DEF V_0042 SPACE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0043 SPACES  type=0, routine, format=0, external-spec
        START
        DEF V_0044 N  integer, simple, format=1, 0
        FINISH
        DEF V_0044 NEWLINE  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0045 NEWLINES  type=0, routine, format=0, external-spec
        START
        DEF V_0046 N  integer, simple, format=1, 0
        FINISH
        DEF V_0046 PRINTFL  type=0, routine, format=0, external-spec
        START
        DEF V_0047 F  long-real, simple, format=4, 0
        DEF V_0048 DP  integer, simple, format=1, 0
        FINISH
        DEF V_0047 PRINTREAL  type=0, routine, format=0, external-spec
        START
        DEF V_0048 F  long-real, simple, format=4, 0
        DEF V_0049 SF  integer, simple, format=1, 0
        DEF V_004a PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_0048 PRINTFLOAT  type=0, routine, format=0, external-spec
        START
        DEF V_0049 F  long-real, simple, format=4, 0
        DEF V_004a SF  integer, simple, format=1, 0
        FINISH
        DEF V_0049 INTPT  integer, function, format=1, external-spec-indirect
        START
        DEF V_004a R  long-real, simple, format=4, 0
        FINISH
        DEF V_004a TOUPPER  type=0, routine, format=0, external-spec
        START
        DEF V_004b S  string, name, format=0, 0
        FINISH
        DEF V_004b TOLOWER  type=0, routine, format=0, external-spec
        START
        DEF V_004c S  string, name, format=0, 0
        FINISH
        DEF V_004c ITOS  string, function, format=255, external-spec-indirect
        START
        DEF V_004d N  integer, simple, format=1, 0
        DEF V_004e PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_004d FTOS  string, function, format=255, external-spec-indirect
        START
        DEF V_004e F  long-real, simple, format=4, 0
        DEF V_004f SF  integer, simple, format=1, 0
        DEF V_0050 PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_004e FTOSP  string, function, format=255, external-spec-indirect
        START
        DEF V_004f F  long-real, simple, format=4, 0
        DEF V_0050 PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_004f READ  type=0, routine, format=0, external-spec
        START
        DEF V_0050 PTR  type=0, name, format=0, 0
        FINISH
        DEF V_0050 SUBSTRING  string, function, format=255, external-spec-indirect
        START
        DEF V_0051 S  string, simple, format=255, 0
        DEF V_0052 FROM  integer, simple, format=1, 0
        DEF V_0053 TO  integer, simple, format=1, 0
        FINISH
        DEF V_0051 TRIM  string, function, format=255, external-spec-indirect
        START
        DEF V_0052 S  string, simple, format=255, 0
        DEF V_0053 MAX  integer, simple, format=1, 0
        FINISH
        DEF V_0052 SETDEBUG  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0053 CLEARDEBUG  type=0, routine, format=0, external-spec
        START
        FINISH
        DEF V_0054 DEBUGMODE  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0055 SHOWDEBUG  type=0, predicate, format=0, external-spec
        START
        FINISH
        DEF V_0056 SETDEBUGLEVEL  type=0, routine, format=0, external-spec
        START
        DEF V_0057 LVL  integer, simple, format=1, 0
        FINISH
        DEF V_0057 INT2ASCII  string, function, format=255, external-spec-indirect
        START
        DEF V_0058 NN  integer, simple, format=1, 0
        DEF V_0059 BASE  integer, simple, format=1, 0
        DEF V_005a PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_0058 FORMATNUMBER  string, function, format=255, external-spec-indirect
        START
        DEF V_0059 N  integer, simple, format=1, 0
        DEF V_005a BASE  integer, simple, format=1, 0
        DEF V_005b PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_0059 INT2HEX  string, function, format=255, external-spec-indirect
        START
        DEF V_005a NN  integer, simple, format=1, 0
        DEF V_005b PLACES  integer, simple, format=1, 0
        FINISH
        DEF V_005a INT2BIN  string, function, format=32, external-spec-indirect
        START
        DEF V_005b NN  integer, simple, format=1, 0
        FINISH
        DEF V_005b SHORT2BIN  string, function, format=16, external-spec-indirect
        START
        DEF V_005c NN  short-integer, simple, format=3, 0
        FINISH
        DEF V_005c GETENVCOUNT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_005d GETENVNAME  string, function, format=255, external-spec-indirect
        START
        DEF V_005e INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_005e GETENV  string, function, format=255, external-spec-indirect
        START
        DEF V_005f INDEX  integer, simple, format=1, 0
        FINISH
        DEF V_005f GETENVINDEX  integer, function, format=1, external-spec-indirect
        START
        DEF V_0060 VARNAME  string, simple, format=255, 0
        FINISH
        DEF V_0060 GETENVASSTRING  string, function, format=255, external-spec-indirect
        START
        DEF V_0061 ENVNAME  string, simple, format=255, 0
        FINISH
        DEF V_0061 GETENVASINTEGER  integer, function, format=1, external-spec-indirect
        START
        DEF V_0062 VARNAME  string, simple, format=255, 0
        FINISH
        DEF V_0062 GETARGCOUNT  integer, function, format=1, external-spec-indirect
        START
        FINISH
        DEF V_0063 GETARG  string, function, format=255, external-spec-indirect
        START
        DEF V_0064 INDEX  integer, simple, format=1, 0
        FINISH
        ALIAS "_imp_cliparam"
        DEF V_0064 CLIPARAM  string, function, format=255, external-spec-indirect
        START
        FINISH
        DEF V_0065 NEW  record, map, format=0, external-spec
        START
        DEF V_0066 TEMPLATE  type=0, name, format=0, 0
        FINISH
        DEF V_0066 DISPOSE  type=0, routine, format=0, external-spec
        START
        DEF V_0067 TEMPLATE  type=0, name, format=0, 0
        FINISH
        DEF V_0067 SQRT  long-real, function, format=4, external-spec-indirect
        START
        DEF V_0068 X  long-real, simple, format=4, 0
        FINISH
        DEF V_0068 PI  long-real, function, format=4, external-spec-indirect
        START
        FINISH
        DEF V_0069 SINE  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006a X  long-real, simple, format=4, 0
        FINISH
        DEF V_006a COSINE  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006b X  long-real, simple, format=4, 0
        FINISH
        DEF V_006b LOG2  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006c X  long-real, simple, format=4, 0
        FINISH
        DEF V_006c LOG  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006d X  long-real, simple, format=4, 0
        FINISH
        DEF V_006d LOG10  long-real, function, format=4, external-spec-indirect
        START
        DEF V_006e X  long-real, simple, format=4, 0
        FINISH
        DEF V_006e EXIT  type=0, routine, format=0, external-spec
        START
        DEF V_006f STATUS  integer, simple, format=1, 0
        FINISH
        LINE 3
     1  ! File of externals followed by a main program.
     2  
     3  %recordformat rf ( %integer i, %real r, %integer rf)  ;! Are record format vars in a sub-scope?  Or is it just that formats are in a different name space?
        DEF V_006f RF  record, record-format, format=111, 0
        START
        DEF V_0000 I  integer, simple, format=1, 0
        DEF V_0000 R  real, simple, format=1, 0
        DEF V_0000 RF  integer, simple, format=1, 0
        FINISH
        LINE 6
     4  
     5  ! owns and externals are simpler declarations
     6  %externalinteger xi1
        DEF V_0070 XI1  integer, simple, format=1, external
        INIT 1
        LINE 7
     7  %externalintegername xin1
        DEF V_0071 XIN1  integer, name, format=1, external
        INIT 1
        LINE 8
     8  %externalreal xr1
        DEF V_0072 XR1  real, simple, format=1, external
        INIT 1
        LINE 9
     9  %externalinteger xi2,xi3
        DEF V_0073 XI2  integer, simple, format=1, external
        INIT 1
        DEF V_0074 XI3  integer, simple, format=1, external
        INIT 1
        LINE 10
    10  %externalreal xcr1 = 3.1415
        PUSHR code=0 len=6 "3.1415"
        DEF V_0075 XCR1  real, simple, format=1, external
        INIT 1
        LINE 11
    11  %externalrealarray xra1(0:9)
        PUSHI #0x00000000
        PUSHI #0x00000009
        BOUNDS
        DEF V_0076 XRA1  real, array, format=1, external
        INIT 10
        LINE 12
    12  %externalrealarrayname xran1
        DEF V_0077 XRAN1  real, 12, format=1, external
        INIT 1
        LINE 13
    13  %externallongreal xclr1 = 3.1415
        PUSHR code=0 len=6 "3.1415"
        DEF V_0078 XCLR1  long-real, simple, format=4, external
        INIT 1
        LINE 14
    14  %externallongrealarray xlra1(0:9)
        PUSHI #0x00000000
        PUSHI #0x00000009
        BOUNDS
        DEF V_0079 XLRA1  long-real, array, format=4, external
        INIT 10
        LINE 15
    15  %externallongrealarrayname xlran1
        DEF V_007a XLRAN1  long-real, 12, format=4, external
        INIT 1
        LINE 16
    16  %externalintegernamearray xina1(0:9)
        PUSHI #0x00000000
        PUSHI #0x00000009
        BOUNDS
        DEF V_007b XINA1  integer, name-array, format=1, external
        INIT 10
        LINE 17
    17  %externalintegernamearrayname xinan1
        DEF V_007c XINAN1  integer, name-array-name, format=1, external
        INIT 1
        LINE 18
    18  %externalstring(82) xs1
        DEF V_007d XS1  string, simple, format=82, external
        INIT 1
        LINE 19
    19  %externalstring(82)%name xsn1
        DEF V_007e XSN1  string, name, format=82, external
        INIT 1
        LINE 20
    20  %externalstring(82)%array xsa1(4:7)
        PUSHI #0x00000004
        PUSHI #0x00000007
        BOUNDS
        DEF V_007f XSA1  string, array, format=82, external
        INIT 4
        LINE 21
    21  %externalstring(82)%arrayname xsan1
        DEF V_0080 XSAN1  string, 12, format=82, external
        INIT 1
        LINE 22
    22  %externalstring(82)%namearray xsna1(4:7)
        PUSHI #0x00000004
        PUSHI #0x00000007
        BOUNDS
        DEF V_0081 XSNA1  string, name-array, format=82, external
        INIT 4
        LINE 23
    23  %externalstring(82)%namearrayname xsnan1
        DEF V_0082 XSNAN1  string, name-array-name, format=82, external
        INIT 1
        LINE 24
    24  %externalrecord (rf) xrec1
        DEF V_0083 XREC1  record, simple, format=111, external
        INIT 1
        LINE 25
    25  %externalrecord (rf) %name xrecn1
        DEF V_0084 XRECN1  record, name, format=111, external
        INIT 1
        LINE 26
    26  %externalrecord (rf) %array xreca1(2:3)
        PUSHI #0x00000002
        PUSHI #0x00000003
        BOUNDS
        DEF V_0085 XRECA1  record, array, format=111, external
        INIT 2
        LINE 27
    27  %externalrecord (rf) %array %name xrecan1
        DEF V_0086 XRECAN1  record, 12, format=111, external
        INIT 1
        LINE 28
    28  %externalrecord (rf) %name %array xrecna1(2:3)
        PUSHI #0x00000002
        PUSHI #0x00000003
        BOUNDS
        DEF V_0087 XRECNA1  record, name-array, format=111, external
        INIT 2
        LINE 29
    29  %externalrecord (rf) %name %array %name xrecnan1
        DEF V_0088 XRECNAN1  record, name-array-name, format=111, external
        INIT 1
        LINE 31
    30  
    31  %externalintegerfn ifn1
        DEF V_0089 IFN1  integer, function, format=1, external-indirect
        START
        FINISH
        LINE 32
    32    %result = xi1
        PUSH V_0070
        RESULT
        LINE 33
    33  %end
        END
        LINE 34
    34  %externalintegermap imap1
        DEF V_008a IMAP1  integer, map, format=1, external
        START
        FINISH
        LINE 35
    35    %result == xi1
        PUSH V_0070
        MAP
        LINE 36
    36  %end
        END
        LINE 37
    37  %externalroutine rt1
        DEF V_008b RT1  type=0, routine, format=0, external
        START
        FINISH
        LINE 38
    38    %integer i1
        DEF V_008c I1  integer, simple, format=1, 0
        LINE 39
    39    %routine rt1
        GOTO L_0000
        DEF V_008d RT1  type=0, routine, format=0, 0
        START
        FINISH
        LINE 40
    40    %end
        END
        LOCATE L_0000
        LINE 41
    41  %end
        END
        LINE 42
    42  %externalpredicate test1
        DEF V_008c TEST1  type=0, predicate, format=0, external
        START
        FINISH
        LINE 43
    43    %true
        TRUE
        LINE 44
    44  %end
        END
        LINE 46
    45    
    46  %begin
        BEGIN
        LINE 47
    47    %integermapspec imap1
        DEF V_008d IMAP1  integer, map, format=1, 0-spec
        START
        FINISH
        LINE 48
    48    %integer i1
        DEF V_008e I1  integer, simple, format=1, 0
        LINE 49
    49    %integername in1
        DEF V_008f IN1  integer, name, format=1, 0
        LINE 50
    50    %shortinteger si1
        DEF V_0090 SI1  short-integer, simple, format=3, 0
        LINE 51
    51    %shortintegername sin1
        DEF V_0091 SIN1  short-integer, name, format=3, 0
        LINE 52
    52    %byteinteger bi1
        DEF V_0092 BI1  byte-integer, simple, format=2, 0
        LINE 53
    53    %byteintegername bin1
        DEF V_0093 BIN1  byte-integer, name, format=2, 0
        LINE 54
    54    %real r1
        DEF V_0094 R1  real, simple, format=1, 0
        LINE 55
    55    %realslong
        LINE 56
    56    %real qr1
        DEF V_0095 QR1  long-real, simple, format=4, 0
        LINE 57
    57    %realsnormal
        LINE 58
    58    %constreal cr1 = 3.1415
        PUSHR code=0 len=6 "3.1415"
        DEF V_0096 CR1  real, simple, format=1, constant-indirect
        INIT 1
        LINE 59
    59    %longreal lr1
        DEF V_0097 LR1  long-real, simple, format=4, 0
        LINE 60
    60    %constlongreal clr1 = 3.1415
        PUSHR code=0 len=6 "3.1415"
        DEF V_0098 CLR1  long-real, simple, format=4, constant-indirect
        INIT 1
        LINE 61
    61    %integerfn ifn1
        GOTO L_0000
        DEF V_0099 IFN1  integer, function, format=1, 0-indirect
        START
        FINISH
        LINE 62
    62      %result = i1
        PUSH V_008e
        RESULT
        LINE 63
    63    %end
        END
        LOCATE L_0000
        LINE 64
    64    %integermap imap1
        GOTO L_0000
        DEF V_008d IMAP1  integer, map, format=1, 0
        START
        FINISH
        LINE 65
    65      %result == i1
        PUSH V_008e
        MAP
        LINE 66
    66    %end
        END
        LOCATE L_0000
        LINE 67
    67    %routine rt1
        GOTO L_0000
        DEF V_009a RT1  type=0, routine, format=0, 0
        START
        FINISH
        LINE 68
    68      %integer i1
        DEF V_009b I1  integer, simple, format=1, 0
        LINE 69
    69      %integer local1
        DEF V_009c LOCAL1  integer, simple, format=1, 0
        LINE 70
    70      %routine rt1
        GOTO L_0000
        DEF V_009d RT1  type=0, routine, format=0, 0
        START
        FINISH
        LINE 71
    71        %integer local1
        DEF V_009e LOCAL1  integer, simple, format=1, 0
        LINE 72
    72        local1 = 1
        PUSH V_009e
        PUSHI #0x00000001
        ASSVAL
        LINE 73
    73        i1 = 1
        PUSH V_009b
        PUSHI #0x00000001
        ASSVAL
        LINE 74
    74      %end
        END
        LOCATE L_0000
        LINE 75
    75      local1 = 2
        PUSH V_009c
        PUSHI #0x00000002
        ASSVAL
        LINE 76
    76      i1 = 2
        PUSH V_009b
        PUSHI #0x00000002
        ASSVAL
        LINE 77
    77    %end
        END
        LOCATE L_0000
        LINE 78
    78    %predicate test1
        GOTO L_0000
        DEF V_009b TEST1  type=0, predicate, format=0, 0
        START
        FINISH
        LINE 79
    79      %false
        FALSE
        LINE 80
    80    %end
        END
        LOCATE L_0000
        LINE 81
    81    %realarray ra1, ra1b(0:9), ra2, ra2b(10:19)
        DEF V_009c RA1  real, array, format=1, 0
        DEF V_009d RA1B  real, array, format=1, 0
        PUSHI #0x00000000
        PUSHI #0x00000009
        DIM 0001 0002
        DEF V_009e RA2  real, array, format=1, 0
        DEF V_009f RA2B  real, array, format=1, 0
        PUSHI #0x0000000a
        PUSHI #0x00000013
        DIM 0001 0002
        LINE 82
    82    %realarrayname ran1, ran2
        DEF V_00a0 RAN1  real, 12, format=1, 0
        DEF V_00a1 RAN2  real, 12, format=1, 0
        LINE 83
    83    %longrealarray lra1, lra1b(0:9), lra2, lra2b(10:19)
        DEF V_00a2 LRA1  long-real, array, format=4, 0
        DEF V_00a3 LRA1B  long-real, array, format=4, 0
        PUSHI #0x00000000
        PUSHI #0x00000009
        DIM 0001 0002
        DEF V_00a4 LRA2  long-real, array, format=4, 0
        DEF V_00a5 LRA2B  long-real, array, format=4, 0
        PUSHI #0x0000000a
        PUSHI #0x00000013
        DIM 0001 0002
        LINE 84
    84    %longrealarrayname lran1, lran2
        DEF V_00a6 LRAN1  long-real, 12, format=4, 0
        DEF V_00a7 LRAN2  long-real, 12, format=4, 0
        LINE 85
    85    %integernamearray ina1, ina1b(0:9), ina2, ina2b(10:19)
        DEF V_00a8 INA1  integer, name-array, format=1, 0
        DEF V_00a9 INA1B  integer, name-array, format=1, 0
        PUSHI #0x00000000
        PUSHI #0x00000009
        DIM 0001 0002
        DEF V_00aa INA2  integer, name-array, format=1, 0
        DEF V_00ab INA2B  integer, name-array, format=1, 0
        PUSHI #0x0000000a
        PUSHI #0x00000013
        DIM 0001 0002
        LINE 86
    86    %integernamearrayname inan1, inan2
        DEF V_00ac INAN1  integer, name-array-name, format=1, 0
        DEF V_00ad INAN2  integer, name-array-name, format=1, 0
        LINE 87
    87    %string(82) s1, s2
        DEF V_00ae S1  string, simple, format=82, 0
        DEF V_00af S2  string, simple, format=82, 0
        LINE 88
    88    %string(82)%name sn1, sn2
        DEF V_00b0 SN1  string, name, format=82, 0
        DEF V_00b1 SN2  string, name, format=82, 0
        LINE 89
    89    %string(82)%array sa1, sa1b(4:7), sa2, sa2b(9:10), sa3(1:100)
        DEF V_00b2 SA1  string, array, format=82, 0
        DEF V_00b3 SA1B  string, array, format=82, 0
        PUSHI #0x00000004
        PUSHI #0x00000007
        DIM 0001 0002
        DEF V_00b4 SA2  string, array, format=82, 0
        DEF V_00b5 SA2B  string, array, format=82, 0
        PUSHI #0x00000009
        PUSHI #0x0000000a
        DIM 0001 0002
        DEF V_00b6 SA3  string, array, format=82, 0
        PUSHI #0x00000001
        PUSHI #0x00000064
        DIM 0001 0001
        LINE 90
    90    %string(82)%arrayname san1, san2, san3
        DEF V_00b7 SAN1  string, 12, format=82, 0
        DEF V_00b8 SAN2  string, 12, format=82, 0
        DEF V_00b9 SAN3  string, 12, format=82, 0
        LINE 91
    91    %string(82)%namearray sna1, sna2(4:7), sna3(1:2)
        DEF V_00ba SNA1  string, name-array, format=82, 0
        DEF V_00bb SNA2  string, name-array, format=82, 0
        PUSHI #0x00000004
        PUSHI #0x00000007
        DIM 0001 0002
        DEF V_00bc SNA3  string, name-array, format=82, 0
        PUSHI #0x00000001
        PUSHI #0x00000002
        DIM 0001 0001
        LINE 92
    92    %string(82)%namearrayname snan1, snan2
        DEF V_00bd SNAN1  string, name-array-name, format=82, 0
        DEF V_00be SNAN2  string, name-array-name, format=82, 0
        LINE 93
    93    %record (rf) rec1, rec2
        DEF V_00bf REC1  record, simple, format=111, 0
        DEF V_00c0 REC2  record, simple, format=111, 0
        LINE 94
    94    %record (rf) %name recn1, recn2
        DEF V_00c1 RECN1  record, name, format=111, 0
        DEF V_00c2 RECN2  record, name, format=111, 0
        LINE 95
    95    %record (rf) %array reca1,reca2(2:3),reca3(4:5)
        DEF V_00c3 RECA1  record, array, format=111, 0
        DEF V_00c4 RECA2  record, array, format=111, 0
        PUSHI #0x00000002
        PUSHI #0x00000003
        DIM 0001 0002
        DEF V_00c5 RECA3  record, array, format=111, 0
        PUSHI #0x00000004
        PUSHI #0x00000005
        DIM 0001 0001
        LINE 96
    96    %record (rf) %array %name recan1,recan2
        DEF V_00c6 RECAN1  record, 12, format=111, 0
        DEF V_00c7 RECAN2  record, 12, format=111, 0
        LINE 97
    97    %record (rf) %name %array recna1,recna2(2:3),recna3(1:2)
        DEF V_00c8 RECNA1  record, name-array, format=111, 0
        DEF V_00c9 RECNA2  record, name-array, format=111, 0
        PUSHI #0x00000002
        PUSHI #0x00000003
        DIM 0001 0002
        DEF V_00ca RECNA3  record, name-array, format=111, 0
        PUSHI #0x00000001
        PUSHI #0x00000002
        DIM 0001 0001
        LINE 98
    98    %record (rf) %name %array %name recnan1,recnan2
        DEF V_00cb RECNAN1  record, name-array-name, format=111, 0
        DEF V_00cc RECNAN2  record, name-array-name, format=111, 0
        LINE 101
    99  
   100    ! owns and externals are simpler declarations
   101    %owninteger oi1
        DEF V_00cd OI1  integer, simple, format=1, own
        INIT 1
        LINE 102
   102    %ownintegername oin1
        DEF V_00ce OIN1  integer, name, format=1, own
        INIT 1
        LINE 103
   103    %ownreal or1
        DEF V_00cf OR1  real, simple, format=1, own
        INIT 1
        LINE 104
   104    %ownlongreal olr1
        DEF V_00d0 OLR1  long-real, simple, format=4, own
        INIT 1
        LINE 105
   105    %owninteger oi2,oi3
        DEF V_00d1 OI2  integer, simple, format=1, own
        INIT 1
        DEF V_00d2 OI3  integer, simple, format=1, own
        INIT 1
        LINE 106
   106    %ownreal ocr1 = 3.1415
        PUSHR code=0 len=6 "3.1415"
        DEF V_00d3 OCR1  real, simple, format=1, own
        INIT 1
        LINE 107
   107    %ownlongreal oclr1 = 3.1415
        PUSHR code=0 len=6 "3.1415"
        DEF V_00d4 OCLR1  long-real, simple, format=4, own
        INIT 1
        LINE 108
   108    %ownrealarray ora1(0:9)
        PUSHI #0x00000000
        PUSHI #0x00000009
        BOUNDS
        DEF V_00d5 ORA1  real, array, format=1, own
        INIT 10
        LINE 109
   109    %ownrealarrayname oran1
        DEF V_00d6 ORAN1  real, 12, format=1, own
        INIT 1
        LINE 110
   110    %ownlongrealarray olra1(0:9)
        PUSHI #0x00000000
        PUSHI #0x00000009
        BOUNDS
        DEF V_00d7 OLRA1  long-real, array, format=4, own
        INIT 10
        LINE 111
   111    %ownlongrealarrayname olran1
        DEF V_00d8 OLRAN1  long-real, 12, format=4, own
        INIT 1
        LINE 112
   112    %ownintegernamearray oina1(0:9)
        PUSHI #0x00000000
        PUSHI #0x00000009
        BOUNDS
        DEF V_00d9 OINA1  integer, name-array, format=1, own
        INIT 10
        LINE 113
   113    %ownintegernamearrayname oinan1
        DEF V_00da OINAN1  integer, name-array-name, format=1, own
        INIT 1
        LINE 114
   114    %ownstring(82) os1
        DEF V_00db OS1  string, simple, format=82, own
        INIT 1
        LINE 115
   115    %ownstring(82)%name osn1
        DEF V_00dc OSN1  string, name, format=82, own
        INIT 1
        LINE 116
   116    %ownstring(82)%array osa1(4:7)
        PUSHI #0x00000004
        PUSHI #0x00000007
        BOUNDS
        DEF V_00dd OSA1  string, array, format=82, own
        INIT 4
        LINE 117
   117    %ownstring(82)%arrayname osan1
        DEF V_00de OSAN1  string, 12, format=82, own
        INIT 1
        LINE 118
   118    %ownstring(82)%namearray osna1(4:7)
        PUSHI #0x00000004
        PUSHI #0x00000007
        BOUNDS
        DEF V_00df OSNA1  string, name-array, format=82, own
        INIT 4
        LINE 119
   119    %ownstring(82)%namearrayname osnan1
        DEF V_00e0 OSNAN1  string, name-array-name, format=82, own
        INIT 1
        LINE 120
   120    %ownrecord (rf) orec1
        DEF V_00e1 OREC1  record, simple, format=111, own
        INIT 1
        LINE 121
   121    %ownrecord (rf) %name orecn1
        DEF V_00e2 ORECN1  record, name, format=111, own
        INIT 1
        LINE 122
   122    %ownrecord (rf) %array oreca1(2:3)
        PUSHI #0x00000002
        PUSHI #0x00000003
        BOUNDS
        DEF V_00e3 ORECA1  record, array, format=111, own
        INIT 2
        LINE 123
   123    %ownrecord (rf) %array %name orecan1
        DEF V_00e4 ORECAN1  record, 12, format=111, own
        INIT 1
        LINE 124
   124    %ownrecord (rf) %name %array orecna1(2:3)
        PUSHI #0x00000002
        PUSHI #0x00000003
        BOUNDS
        DEF V_00e5 ORECNA1  record, name-array, format=111, own
        INIT 2
        LINE 125
   125    %ownrecord (rf) %name %array %name orecnan1
        DEF V_00e6 ORECNAN1  record, name-array-name, format=111, own
        INIT 1
        LINE 127
   126  
   127    %switch sw1(0:255), sw2('a':'z')
        PUSHI #0x00000000
        PUSHI #0x000000ff
        BOUNDS
        DEF V_00e7 SW1  type=0, switch, format=0, 0
        PUSHI #0x00000061
        PUSHI #0x0000007a
        BOUNDS
        DEF V_00e8 SW2  type=0, switch, format=0, 0
        LINE 129
   128  
   129    %integer %array ia3, ia4(1:10), ia5(2:11,0:1,0:2)
        DEF V_00e9 IA3  integer, array, format=1, 0
        DEF V_00ea IA4  integer, array, format=1, 0
        PUSHI #0x00000001
        PUSHI #0x0000000a
        DIM 0001 0002
        DEF V_00eb IA5  integer, array, format=1, 0
        PUSHI #0x00000002
        PUSHI #0x0000000b
        PUSHI #0x00000000
        PUSHI #0x00000001
        PUSHI #0x00000000
        PUSHI #0x00000002
        DIM 0003 0001
        LINE 131
   130  
   131    %integernamearray in3a1(2:11,0:1,0:2)
        DEF V_00ec IN3A1  integer, name-array, format=1, 0
        PUSHI #0x00000002
        PUSHI #0x0000000b
        PUSHI #0x00000000
        PUSHI #0x00000001
        PUSHI #0x00000000
        PUSHI #0x00000002
        DIM 0003 0001
        LINE 133
   132  
   133    i1 = 1
        PUSH V_008e
        PUSHI #0x00000001
        ASSVAL
        LINE 134
   134  %endofprogram
        END
        END
