#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1  %begin

int main(int argc, char **argv) { /*%begin*/
  _imp_initialise(argc, argv);

  //     2  %recordformat  stackfm( %string(255) idname,

  struct STACKFM {
    union {
      struct {
        _imp_string255 IDNAME;
        int VARNO;
        unsigned char AFORM;
        unsigned char BASE;
        unsigned char TYPE;
        unsigned char FORM;
        unsigned char SCOPE;
        unsigned char DIM;
        int DISP;
        int EXTDISP;
        int FORMAT;
        int SIZE;
        int PBASE;
        int EXTRA;
      };
    };
  };

  //     3+  %integer var no,
  //     4+  %byteinteger aform, base,
  //     5+  %byteinteger type, form, scope, dim,
  //     6+  %integer disp, extdisp,
  //     7+           format, size, pbase, extra )
  //     8
  //     9  %record(stackfm) lhs,rhs

  struct STACKFM LHS;
  struct STACKFM RHS;

  //    10
  //    11  %routine swap

  void SWAP(void) {
    //    12   %record(stackfm) temp

    struct STACKFM TEMP;

    //    13   temp = lhs

    TEMP = LHS;

    //    14   lhs = rhs

    LHS = RHS;

    //    15   rhs = temp

    RHS = TEMP;

    //    16  %end { of "swap" }

    return;
  } /* end of SWAP */

  //    17
  //    18  %endofprogram

  _imp_stop(0);
  return 0;
end_0:;
}