BEGIN
STRING(255)FN PRINTNAME(INTEGER N)
INTEGER V, K
owninteger count=0
      count=count+1
       if count=1 then result="JAMES"
      if count=2 then result="JIM"
      result="???"
END

STRING(255)FN MESSAGE(INTEGER N)
!***********************************************************************
!*       OUTPUTS AN ERROR MESSAGE STORED IN A COMPRESSED FORMAT        *
!*       1  %REPEAT is not required                                    *
!*       2  Label & has already been set in this block                 *
!*       4  & is not a Switch name at current textual level            *
!*       5  Switch name & in expression or assignment                  *
!*       6  Switch label &(#) set a second time                        *
!*       7  Name & has already been declared                           *
!*       8  Routine or fn & has more parameters than specified         *
!*       9  Parameter # of & differs in type from specification        *
!*      10  Routine or fn & has fewer parameters than specified        *
!*      11  Label & referenced at line # has not been set              *
!*      12  %CYCLE at line # has two control clauses                   *
!*      13  %REPEAT for %CYCLE at line # is missing                    *
!*      14  %END is not required                                       *
!*      15  # %ENDs are missing                                        *
!*      16  Name & has not been declared                               *
!*      17  Name & does not require parameters or subscripts           *
!*      18  # too few parameters provided for &                        *
!*      19  # too many parameters provided for &                       *
!*      20  # too few subscripts provided for array &                  *
!*      21  # too many subscripts provided for array &                 *
!*      22  Actual parameter # of & conflicts with specification       *
!*      23  Routine name & in an expression                            *
!*      24  Integer operator has Real operands                         *
!*      25  Real expression in integer context                         *
!*      26  # is not a valid %EVENT number                             *
!*      27  & is not a routine name                                    *
!*      28  Routine or fn & has specification but no body              *
!*      29  %FUNCTION name & not in expression                         *
!*      30  %RETURN outwith routine body                               *
!*      31  %RESULT outwith fn or map body                             *
!*      34  Too many textual levels                                    *
!*      37  Array & has too many dimensions                            *
!*      38  Array & has upper bound # less than lower bound            *
!*      39  Size of Array & is more than X'FFFFFF' bytes               *
!*      40  Declaration is not at head of block                        *
!*      41  Constant cannot be evaluated at compile time               *
!*      42  # is an invalid repetition factor                          *
!*      43  %CONSTANT name & not in expression                         *
!*      44  Invalid constant initialising & after # items              *
!*      45  Array initialising items expected ## items given #         *
!*      46  Invalid %EXTERNAL %EXTRINSIC or variable %SPEC             *
!*      47  %ELSE already given at line #                              *
!*      48  %ELSE invalid after %ON %EVENT                             *
!*      49  Attempt to initialise %EXTRINSIC or %FORMAT &              *
!*      50  Subscript of # is outwith the bounds of &                  *
!*      51  %FINISH is not required                                    *
!*      52  %REPEAT instead of %FINISH for %START at line #            *
!*      53  %FINISH for %START at line # is missing                    *
!*      54  %EXIT outwith %CYCLE %REPEAT body                          *
!*      55  %CONTINUE outwith %CYCLE %REPEAT body                      *
!*      56  %EXTERNALROUTINE & at wrong textual level                  *
!*      57  Executable statement found at textual level zero           *
!*      58  Program among external routines                            *
!*      59  %FINISH instead of %REPEAT for %CYCLE at line #            *
!*      61  Name & has already been used in this %FORMAT               *
!*      62  & is not a %RECORD or %RECORD %FORMAT name                 *
!*      63  %RECORD length is greater than # bytes                     *
!*      64  Name & requires a subname in this context                  *
!*      65  Subname & is not in the %RECORD %FORMAT                    *
!*      66  Expression assigned to record &                            *
!*      67  Records && and & have different formats                    *
!*      69  Subname && is attached to & which is not of type %RECORD   *
!*      70  String declaration has invalid max length of #             *
!*      71  & is not a String variable                                 *
!*      72  Arithmetic operator in a String expression                 *
!*      73  Arithmetic constant in a String expression                 *
!*      74  Resolution is not the correct format                       *
!*      75  String expression contains a sub expression                *
!*      76  String variable & in arithmetic expression                 *
!*      77  String constant in arithmetic expression                   *
!*      78  String operator '.' in arithmetic expression               *
!*      80  Pointer variable & compared with expression                *
!*      81  Pointer variable & equivalenced to expression              *
!*      82  & is not a pointer name                                    *
!*      83  && and & are not equivalent in type                        *
!*      86  Global pointer && equivalenced to local &                  *
!*      87  %FORMAT name & use in expression                           *
!*      90  Untyped name & used in expression                          *
!*      91  %FOR control variable & not integer                        *
!*      92  %FOR clause has zero step                                  *
!*      93  %FOR clause has noninteger number of traverses             *
!*      95  Name & not valid in assembler                              *
!*      96  Operand # not valid in assembler                           *
!*      97  Assembler construction not valid                           *
!*      98  Addressability                                             *
!*      99  Facility not supported by target hardware                  *
!*     101  Source line has too many continuations                     *
!*     102  Workfile of # Kbytes is too small                          *
!*     103  Dictionary completely full                                 *
!*     104  Dictionary completely full                                 *
!*     105  Too many textual levels                                    *
!*     106  String constant too long                                   *
!*     107  Compiler tables are completely full                        *
!*     108  Condition too complicated                                  *
!*     109  Compiler inconsistent                                      *
!*     110  Input ended                                                *
!*     201  Long integers are inefficient as subscripts                *
!*     202  Name & not used                                            *
!*     203  Label & not used                                           *
!*     204  Global %FOR control variable &                             *
!*     205  Name & not addressable                                     *
!*     206  Semicolon in comment text                                  *
!*     207  %CONSTANT variable & not initialised                       *
!*     208  Unsupported precision used - nearest available substituted *
!*     209  Target machine is word addressed?                          *
!*     210  Redundant %ALIAS provided                                  *
!*     255  SEE IMP MANUAL                                             *
!***********************************************************************
CONSTBYTEINTEGERARRAY OUTTT(0:63)='?','A','B','C','D','E','F','G',
                                        'H','I','J','K','L','M','N',
                                        'O','P','Q','R','S','T','U',
                                        'V','W','X','Y','Z','&','-',
                                        '/','''','(',')',
                                        'a','b','c','d','e','f','g',
                                        'h','i','j','k','l','m','n',
                                        'o','p','q','r','s','t','u',
                                        'v','w','x','y','z','.','%',
                                        '#','?'(2)
CONSTINTEGER WORDMAX= 780,DEFAULT= 776
CONSTshortINTEGERARRAY WORD(0:WORDMAX)=0,C
              1, 32769, 32771, 32772, 32773,     2, 32775, 32776,
          32777, 32778, 32780, 32781, 32782, 32783, 32784,     4,
          32776, 32771, 32772, 32785, 32786, 32788, 32789, 32790,
          32792, 32794,     5, 32786, 32788, 32776, 32782, 32795,
          32797, 32798,     6, 32786, 32800, 32801, 32781, 32785,
          32802, 32804,     7, 32805, 32776, 32777, 32778, 32780,
          32806,     8, 32808, 32797, 32810, 32776, 32777, 32811,
          32812, 32814, 32815,     9, 32817, 32819, 32820, 32776,
          32821, 32782, 32823, 32824, 32825,    10, 32808, 32797,
          32810, 32776, 32777, 32828, 32812, 32814, 32815,    11,
          32775, 32776, 32829, 32789, 32831, 32819, 32777, 32772,
          32780, 32781,    12, 32832, 32789, 32831, 32819, 32777,
          32834, 32835, 32837,    13, 32769, 32839, 32832, 32789,
          32831, 32819, 32771, 32840,    14, 32842, 32771, 32772,
          32773,    15, 32819, 32843, 32844, 32840,    16, 32805,
          32776, 32777, 32772, 32780, 32806,    17, 32805, 32776,
          32845, 32772, 32846, 32812, 32797, 32848,    18, 32819,
          32850, 32851, 32812, 32852, 32839, 32776,    19, 32819,
          32850, 32854, 32812, 32852, 32839, 32776,    20, 32819,
          32850, 32851, 32848, 32852, 32839, 32855, 32776,    21,
          32819, 32850, 32854, 32848, 32852, 32839, 32855, 32776,
             22, 32856, 32858, 32819, 32820, 32776, 32860, 32862,
          32825,    23, 32808, 32788, 32776, 32782, 32863, 32795,
             24, 32864, 32866, 32777, 32868, 32869,    25, 32868,
          32795, 32782, 32871, 32873,    26, 32819, 32771, 32772,
          32785, 32875, 32876, 32878,    27, 32776, 32771, 32772,
          32785, 32880, 32788,    28, 32808, 32797, 32810, 32776,
          32777, 32825, 32882, 32883, 32884,    29, 32885, 32788,
          32776, 32772, 32782, 32795,    30, 32887, 32889, 32880,
          32884,    31, 32891, 32889, 32810, 32797, 32893, 32884,
             34, 32894, 32854, 32792, 32895,    37, 32897, 32776,
          32777, 32850, 32854, 32898,    38, 32897, 32776, 32777,
          32900, 32901, 32819, 32902, 32814, 32903, 32901,    39,
          32904, 32820, 32897, 32776, 32771, 32811, 32814, 32905,
          32907,    40, 32908, 32771, 32772, 32789, 32911, 32820,
          32784,    41, 32912, 32914, 32916, 32917, 32789, 32919,
          32804,    42, 32819, 32771, 32863, 32921, 32923, 32925,
             43, 32927, 32788, 32776, 32772, 32782, 32795,    44,
          32929, 32931, 32933, 32776, 32936, 32819, 32937,    45,
          32897, 32933, 32937, 32938, 32940, 32937, 32941, 32819,
             46, 32929, 32942, 32944, 32797, 32946, 32948,    47,
          32949, 32778, 32941, 32789, 32831, 32819,    48, 32949,
          32921, 32936, 32950, 32876,    49, 32951, 32953, 32954,
          32944, 32797, 32956, 32776,    50, 32958, 32820, 32819,
          32771, 32889, 32960, 32961, 32820, 32776,    51, 32963,
          32771, 32772, 32773,    52, 32769, 32965, 32820, 32963,
          32839, 32967, 32789, 32831, 32819,    53, 32963, 32839,
          32967, 32789, 32831, 32819, 32771, 32840,    54, 32969,
          32889, 32832, 32769, 32884,    55, 32970, 32889, 32832,
          32769, 32884,    56, 32972, 32776, 32789, 32976, 32792,
          32794,    57, 32977, 32979, 32981, 32789, 32792, 32794,
          32982,    58, 32983, 32985, 32986, 32988,    59, 32963,
          32965, 32820, 32769, 32839, 32832, 32789, 32831, 32819,
             61, 32805, 32776, 32777, 32778, 32780, 32990, 32782,
          32783, 32956,    62, 32776, 32771, 32772, 32785, 32991,
          32797, 32991, 32956, 32788,    63, 32991, 32993, 32771,
          32995, 32814, 32819, 32907,    64, 32805, 32776, 32997,
          32785, 32999, 32782, 32783, 32873,    65, 33001, 32776,
          32771, 32772, 32782, 32960, 32991, 32956,    66, 33003,
          33005, 32953, 33007, 32776,    67, 33009, 33011, 33012,
          32776, 33013, 33014, 33016,    69, 33001, 33011, 32771,
          33018, 32953, 32776, 33020, 32771, 32772, 32820, 32823,
          32991,    70, 33021, 33023, 32777, 32921, 33026, 32993,
          32820, 32819,    71, 32776, 32771, 32772, 32785, 33021,
          32946,    72, 33027, 32866, 32782, 32785, 33021, 32795,
             73, 33027, 32931, 32782, 32785, 33021, 32795,    74,
          33029, 32771, 32772, 32960, 33031, 33033,    75, 33021,
          32795, 33035, 32785, 33037, 32795,    76, 33021, 32946,
          32776, 32782, 33038, 32795,    77, 33021, 32931, 32782,
          33038, 32795,    78, 33021, 32866, 33040, 32782, 33038,
          32795,    80, 33041, 32946, 32776, 33043, 32862, 32795,
             81, 33041, 32946, 32776, 33045, 32953, 32795,    82,
          32776, 32771, 32772, 32785, 33048, 32788,    83, 33011,
          33012, 32776, 32844, 32772, 33050, 32782, 32823,    86,
          33052, 33048, 33011, 33045, 32953, 33054, 32776,    87,
          32956, 32788, 32776, 33055, 32782, 32795,    90, 33056,
          32788, 32776, 32990, 32782, 32795,    91, 33058, 32835,
          32946, 32776, 32772, 32871,    92, 33058, 33059, 32777,
          32982, 33061,    93, 33058, 33059, 32777, 33062, 32878,
          32820, 33064,    90, 33056, 32788, 32776, 32990, 33066,
          32946,    95, 32805, 32776, 32772, 32875, 32782, 33067,
             96, 33069, 32819, 32772, 32875, 32782, 33067,    97,
          33071, 33073, 32772, 32875,    98, 33076,    99, 33079,
          32772, 33081, 33083, 33084, 33086,   101, 33088, 32831,
          32777, 32850, 32854, 33090,   102, 33093, 32820, 32819,
          33095, 32771, 32850, 33097,   103, 33098, 33100, 33102,
            104, 33098, 33100, 33102,   105, 32894, 32854, 32792,
          32895,   106, 33021, 32931, 32850, 33103,   107, 33104,
          33106, 32844, 33100, 33102,   108, 33108, 32850, 33110,
            109, 33104, 33113,   110, 33116, 33117,   201, 33118,
          33119, 32844, 33121, 33066, 32848,   202, 32805, 32776,
          32772, 32990,   203, 32775, 32776, 32772, 32990,   204,
          33052, 33058, 32835, 32946, 32776,   205, 32805, 32776,
          32772, 33124,   206, 33127, 32782, 33129, 33131,   207,
          32927, 32946, 32776, 32772, 33132,   208, 33135, 33138,
          32990, 33140, 33141, 33143, 33145,   209, 33148, 33150,
          32771, 33152, 33153,   210, 33155, 33157, 32852,   255,
          33159, 33160, 33161,     0
CONSTINTEGERARRAY LETT(0: 394)=0,C
        X'7890A80B',X'02A00000',X'53980000',X'5D7E8000',
        X'652E3AD3',X'652C8000',X'190C52D8',X'36000000',
        X'510E6000',X'436652C3',X'49C80000',X'452CB700',
        X'672E8000',X'53700000',X'69453980',X'4565F1D6',
        X'42000000',X'27BD3A47',X'50000000',X'5D0DB280',
        X'43A00000',X'47AE594B',X'5DA00000',X'692F1A6B',
        X'43600000',X'592ED2D8',X'4BC6194B',X'679D37DC',
        X'5F900000',X'439E74CF',X'5D6CB768',X'590C52D8',
        X'36FFB000',X'672C77DD',X'48000000',X'694DB280',
        X'1D0DB280',X'492C7643',X'652C8000',X'257EBA53',
        X'5D280000',X'4D700000',X'5B7E5280',X'610E50DB',
        X'4BA4B966',X'69443700',X'6784B1D3',X'4D4CB200',
        X'210E50DB',X'4BA4B900',X'7A000000',X'5F300000',
        X'494CD34B',X'65980000',X'69CE1280',X'4D95F680',
        X'6784B1D3',X'4D4C70E9',X'537DC000',X'4D2EF2E4',
        X'652CD2E5',X'4B7472C8',X'594DD280',X'781B2199',
        X'0A000000',X'69BDE000',X'477DDA65',X'5F600000',
        X'47643AE7',X'4B980000',X'4D7E4000',X'5B4E79D3',
        X'5D380000',X'7829C200',X'7829C266',X'4394A000',
        X'497CB980',X'652E3AD3',X'65280000',X'67AC59C7',
        X'654E1A66',X'697DE000',X'4D2EE000',X'6195FB53',
        X'492C8000',X'5B0DDC80',X'439650F2',X'031E9AC3',
        X'58000000',X'610E50DB',X'4BA4B900',X'477DD359',
        X'531E9980',X'6F4E9400',X'43700000',X'137692CF',
        X'4B900000',X'5F84B943',X'697E4000',X'252C3600',
        X'5F84B943',X'5D266000',X'537692CF',X'4B900000',
        X'477DDA4B',X'71A00000',X'6D0D94C8',X'782AC29D',
        X'28000000',X'5DADB14B',X'64000000',X'657EBA53',
        X'5D280000',X'45AE8000',X'5D780000',X'457C9C80',
        X'7832A707',X'2849E700',X'7890AA2B',X'24700000',
        X'5FAE9BD3',X'69400000',X'7890A9AB',X'18A00000',
        X'5B0E0000',X'297DE000',X'592ED2D9',X'66000000',
        X'039650F2',X'494DB2DD',X'674DF766',X'6B8612E4',
        X'457EB748',X'592E7980',X'597EF2E4',X'274F5280',
        X'30F0C30D',X'0C30CF00',X'45CE92E6',X'092C7643',
        X'650E94DF',X'5C000000',X'512C3200',X'077DD9E9',
        X'43768000',X'470DD75F',X'68000000',X'45280000',
        X'4BB4366B',X'43A4B200',X'477DB853',X'59280000',
        X'5376D0D9',X'53200000',X'652E12E9',X'53A537DC',
        X'4D0C7A5F',X'64000000',X'7819E727',X'2809CA00',
        X'1376D0D9',X'53200000',X'477DD9E9',X'43768000',
        X'53753A53',X'436539D3',X'5D380000',X'433692E4',
        X'53A4B6E6',X'4BC612C7',X'692C8000',X'7BE80000',
        X'4F4ED2DC',X'782B0A0B',X'24702600',X'782B0A25',
        X'12726486',X'6D0E54C3',X'4564A000',X'789A0286',
        X'7829898A',X'7879C000',X'03A692DB',X'61A00000',
        X'69780000',X'53753A53',X'436539CA',X'7831E91B',
        X'02A00000',X'27AC59C7',X'654E1A00',X'6944A000',
        X'457EB749',X'66000000',X'78312713',X'26400000',
        X'53767A4B',X'43200000',X'789A80A5',X'28000000',
        X'782B04A8',X'7819E729',X'1272A280',X'782B0A0B',
        X'24702625',X'1EAA849D',X'0A000000',X'6F95F74E',
        X'0BC4B1EB',X'690C564A',X'67A43A4B',X'5B2DDA00',
        X'4D7EB748',X'752E5780',X'2195F3E5',X'43680000',
        X'436DF74E',X'4BC692E5',X'5D0D8000',X'657EBA53',
        X'5D2E6000',X'6B9CB200',X'7890A19F',X'24200000',
        X'592DD3E9',X'50000000',X'4F94B0E9',X'4B900000',
        X'652E3AD3',X'652E6000',X'67AC5743',X'5B280000',
        X'27AC5743',X'5B280000',X'0BC6194B',X'679D37DC',
        X'439E74CF',X'5D2C8000',X'652C77E5',X'48000000',
        X'252C77E5',X'49980000',X'36D80000',X'43748000',
        X'510ED280',X'494CD34B',X'652DDA00',X'4D7E56C3',
        X'69980000',X'43A690C7',X'512C8000',X'6F4531D0',
        X'27A654DD',X'4E000000',X'492C7643',X'650E94DF',
        X'5C000000',X'5B0F0000',X'03953A51',X'5B2E94C6',
        X'252E77D9',X'6BA537DC',X'477E594B',X'47A00000',
        X'4D7E56C3',X'68000000',X'477DDA43',X'53766000',
        X'67AC4000',X'43953A51',X'5B2E94C6',X'3DDBC000',
        X'217D3769',X'4B900000',X'477DB843',X'652C8000',
        X'4B8EB4ED',X'4364B747',X'4B200000',X'617D3769',
        X'4B900000',X'4B8EB4ED',X'4364B768',X'0F65F143',
        X'58000000',X'597C70D8',X'6B9CA000',X'2B769CE1',
        X'4B200000',X'7831E900',X'47643AE7',X'4A000000',
        X'67A4B800',X'5D7DD4DD',X'692CF2E4',X'69943B4B',
        X'659CB980',X'43980000',X'439E72DB',X'4564B900',
        X'1F84B943',X'5D200000',X'039E72DB',X'4564B900',
        X'477DD9E9',X'65AC7A53',X'5F700000',X'0324994B',
        X'679C3153',X'594E9C80',X'0D0C74D9',X'53A72000',
        X'67AE185F',X'65A4B200',X'45C80000',X'690E53CB',
        X'68000000',X'510E526F',X'4394A000',X'277EB947',
        X'4A000000',X'477DDA53',X'5DAC3A53',X'5F766000',
        X'2F7E55CD',X'5364A000',X'17173A4B',X'66000000',
        X'676C3658',X'094C7A53',X'5F743972',X'477DB859',
        X'4BA4B672',X'4DAD9600',X'597DD380',X'077DB853',
        X'592E4000',X'690C564B',X'66000000',X'077DD253',
        X'694DF700',X'477DB859',X'531C3A4B',X'48000000',
        X'537477DD',X'674E7A4B',X'5DA00000',X'13761AE8',
        X'4B7492C8',X'197DD380',X'537692CF',X'4B966000',
        X'5374B34D',X'531D32DD',X'68000000',X'4324994B',
        X'679C3159',X'4A000000',X'272DB4C7',X'5F65F700',
        X'477DB6CB',X'5DA00000',X'692F1A00',X'53753A53',
        X'436539CB',X'48000000',X'2B767AE1',X'617E5A4B',
        X'48000000',X'6194B1D3',X'674DF700',X'38000000',
        X'5D2C394B',X'67A00000',X'43B434D9',X'43159280',
        X'67AC59E9',X'53A6BA4B',X'48000000',X'290E53CB',
        X'68000000',X'5B0C7453',X'5D280000',X'6F7E5200',
        X'4324994B',X'679CB27E',X'252C9ADD',X'490DDA00',
        X'78098483',X'26000000',X'2628A000',X'126A0000',
        X'1A09CA83',X'18000000'
INTEGER I,J,K,M,Q,S
STRING(70)OMESS
      OMESS=" "
      CYCLE I=1,1,WORDMAX-1
         ->FOUND IF N=WORD(I)
      REPEAT
      I=DEFAULT
FOUND:
      J=1
      CYCLE
         K=WORD(I+J)
         IF K&X'8000'=0 THEN EXIT
         K=K&X'7FFF'
         OMESS=OMESS." " UNLESS J=1
         {%UNTIL M&1=0} CYCLE
            M=LETT(K); S=25
            {%UNTIL S<0} CYCLE
               Q=M>>S&63; 
               IF Q¬=0 THEN OMESS=OMESS.TOSTRING(OUTTT(Q))
               S=S-6
            REPEAT UNTIL S<0
            K=K+1
         REPEAT UNTIL M&1=0
         J=J+1
      REPEAT
      RESULT=OMESS
END
STRING(16)FN SWRITE(INTEGER VALUE, PLACES)
STRING (16) S
STRING(1)SIGN
INTEGER D0, D1, D2
      PLACES=PLACES&15
      SIGN=" "
      S=""
      IF VALUE<0 THEN SIGN="-" AND VALUE=-VALUE
      D0=VALUE
      CYCLE
         D1=D0//10
         D2=D0-10*D1
         S=TOSTRING(D2+'0').S
         D0=D1
      REPEAT UNTIL D0=0
      S=SIGN.S
      S=" ".S WHILE LENGTH(S)<=PLACES
      RESULT=S
END
ROUTINE FAULT(INTEGER N, DATA, IDENT)
!***********************************************************************
!*    SETS UP AN ERROR MESSAGE AND SHOVES IT OUT ONTO THE LISTING      *
!*    AN ALSO OPTIONALLY TO THE TERMINAL                               *
!***********************************************************************
INTEGER I, J, S, T, Q, QMAX, LENGTH
STRING(255)MESS1,MESS2,WK1,WK2
      MESS1=""; MESS2=""
      IF N=100 THEN START;              ! SYNTAX FAULTS ARE SPECIAL
         MESS1="
*    Failed to analyse line ".SWRITE(99,2)."
     "
         J=0;  S=0;  T=0;  Q=DATA;  QMAX=IDENT>>16
         LENGTH=IDENT&X'FFFF'
         IF Q=QMAX THEN S=T
      FINISH ELSE START
         MESS1="
*".SWRITE(99, 4)."   "
         MESS1=MESS1."FAULT".SWRITE(N,2)
         MESS2=MESSAGE(N)
         IF MESS2->WK1.("##").WK2 THEN C
            MESS2=WK1.SWRITE(IDENT,1).WK2
         IF MESS2->WK1.("#").WK2 THEN C
            MESS2=WK1.SWRITE(DATA,1).WK2
         IF MESS2->WK1.("&&").WK2 THEN C
            MESS2=WK1.PRINTNAME(DATA).WK2
         IF MESS2->WK1.("&").WK2 THEN C
               MESS2=WK1.PRINTNAME(IDENT).WK2
         IF N>100 THEN MESS2=MESS2." Disaster"
      FINISH
         PRINTSTRING(MESS1)
         PRINTSTRING(MESS2) IF MESS2#""
         NEWLINE
      IF N=109 THEN MONITOR
!      %IF N=109 %THEN PARM_DCOMP=1 %AND CODEOUT
      IF N>100 THEN STOP
END
ROUTINE WARN(INTEGER N,V)
STRING(30) T; STRING(120) S
      S=MESSAGE(N+200)
      IF S->S.("&").T THEN S=S.PRINTNAME(V).T
      PRINTSTRING("
?  Warning :- ".S." at line No".SWRITE(101,1))
      NEWLINE
END
    FAULT(16,0,0)
      WARN(2,76)
ENDOFPROGRAM