
%BEGIN
%INTEGER L,M,N
! TEST OF INT & INTPT
%LONGREAL X
%INTEGER I,J
      L=X'FEDCBA98'

      %FOR J=0,1,1 %CYCLE
         %FOR I=0,1,30 %CYCLE
            N=(-1)****J*(L>>I)
            X=N-0.00001
            M=INTPT(X)
            %UNLESS N=M+1 %START
               WRITE(I,1)
               WRITE(N-M,5)
               NEWLINE
               %MONITOR
               %STOP
            %FINISH
            M=INT(X)
            %UNLESS M=N %START
               WRITE(I,1)
               WRITE(N-M,5)
               NEWLINE
               %MONITOR
               %STOP
            %FINISH
         %REPEAT
      %REPEAT
      PRINTSTRING("PART 1 OK ")
%begin
%const %integer imax = 2147483647
%const %integer ct = 78
%integer i, j
%long %real r
%const %long %real %array vals (1:ct) = %c
    0.0, 0.5, -0.5, -4.5, 4.5, -4.2,
    2147483646.0, -2147483646.0, -2147483645.0, 2147483645.0,
    2147483646.3, -2147483646.3, -2147483645.3, 2147483645.3,
    2147483646.5, -2147483646.5, -2147483645.5, 2147483645.5,
    2147483646.7, -2147483646.7, -2147483645.7, 2147483645.7,
    2147483647.0, -2147483647.0, -2147483648.0, 2147483648.0,
    -2147483649.0, 2147483649.0,
    2147483647.3, -2147483647.3, -2147483648.3, 2147483648.3,
    -2147483649.3, 2147483649.3,
    2147483647.5, -2147483647.5, -2147483648.5, 2147483648.5,
    -2147483649.5, 2147483649.5,
    2147483647.7, -2147483647.7, -2147483648.7, 2147483648.7,
    -2147483649.7, 2147483649.7,
    2147483662.0, 2147483663.0, 2147483664.0, 2147483665.0,
    2147483662.3, 2147483663.3, 2147483664.3, 2147483665.3,
    2147483662.5, 2147483663.5, 2147483664.5, 2147483665.5,
    2147483662.7, 2147483663.7, 2147483664.7, 2147483665.7,
    -2147483662.0, -2147483663.0, -2147483664.0, -2147483665.0,
    -2147483662.3, -2147483663.3, -2147483664.3, -2147483665.3,
    -2147483662.5, -2147483663.5, -2147483664.5, -2147483665.5,
    -2147483662.7, -2147483663.7, -2147483664.7, -2147483665.7
%for j=1,1,ct %cycle
%begin
%on%event 1,2 %Start
      printstring("Overflow Trapped"); %stop;->end
%finish
   r = vals (j)
   i = int (r)
      %unless mod(r-i)<=0.5 %then %Start
      print (r,6,2)
      write (i,12)
      printstring ("  fail")
      newline
      %stop
      %finish
end:%end
%repeat
%end
      PRINTSTRING("TEST OK")
%ENDOFPROGRAM
