#include <perms.h>

//          Edinburgh IMP77 Compiler - Version 8.4
//
//     1
//     2  %BEGIN

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

  //     3  !***********************************************************************
  //     4  !*    A TEST TO CHECK THE LINE NUMBER OF A FAILURE AT RUN TIME         *
  //     5  !***********************************************************************
  //     6  %INTEGERARRAY A(0:4)

  int A[5];

  //     7  %INTEGER I

  int I;
  auto void FRED(int *J);

  //     8  %routinespec fred(%integername j)
  //     9        printstring("This gives diagnostics showing i = 10

  _imp_PRINTSTRING(_imp_str_literal("This gives diagnostics showing i = 10\n"));

  //    10+ ")
  //    11     I=10

  I = 10;

  //    12  fred(i)

  FRED(/*?*/ &I);

  //    13  %stop

  _imp_stop(0);

  //    14  %routine fred(%integername j)

  void FRED(int *J) {
    //    15  %IF j<0 %THEN %START

    if (*J >= 0) goto L_0001;

      //    16        !
      //    17        !
      //    18        %STOP

    _imp_stop(0);

    //    19  %FINISH %ELSE A(j)=A(j)+1

  L_0001:;
    A[*J] = A[*J] + 1;

    //    20        !
    //    21  %end

    return;
  } /* end of FRED */

  //    22  %ENDOFPROGRAM

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