begin
   comment LIBRARY 1;
   integer
     SUM;
   procedure P1(S, R, I, B, RA, IA);
      string
        S;
        real
        R;
        integer
        I;
        boolean
        B;
        real array
        RA;
        integerarray
        IA;
      SUM ≔ SUM + R + I + (if B then 1 else 0) + RA[1] +
        IA[1];
   procedure P2(BA, L, SW, PR, RPR, IPR, BPR);
      boolean array
        BA;
        label
        L;
        switch
        SW;
        procedure
        PR;
        real procedure
        RPR;
        integerprocedure
        IPR;
        boolean procedure
        BPR;
   begin
      PR;
      SUM ≔ SUM + RPR + IPR;
      if BPR then
        goto L;
      if BA[1] then
        goto SW[2]
   end;
   procedure P3(R, I, B, RA, IA, BA, L);
      value
        R,
        I,
        B,
        RA,
        IA,
        BA,
        L;
      real
        R;
        integer
        I;
        boolean
        B;
        real array
        RA;
        integerarray
        IA;
        boolean array
        BA;
        label
        L;
   begin
      SUM ≔ SUM + R + I + RA[1] + IA[1] + (if B then 1
      else 0) + (if BA[1] then 1 else 0);
      if BA[1] then
        goto L
   end;
   real
     R;
   boolean
     B;
   real array
     RA[1 : 1];
   integerarray
     IA[1 : 1];
   boolean array
     BA[1 : 1];
   integerprocedure IPR;
      IPR ≔ 2 × SUM;
   real procedure RPR;
      RPR ≔ 3 × SUM;
   boolean procedure BPR;
      BPR ≔ ¬ B;
   procedure PR;
      SUM ≔ 5 × SUM + 1;
   switch SS ≔      WORK,
     FAIL;
   SUM ≔ 0;
   IA[1] ≔ - 2;
   RA[1] ≔ 3·55;
   BA[1] ≔ false;
   B ≔ true;
   R ≔ 6·4;
   P1(RA, “AB”, “AB”, “AB”, “AB”, “AB” );
   P1(SS, RA, RA, RA, SS, SS);
   P1(PR, SS, SS, SS, PR, PR);
   P1(SS[2], PR, PR, PR, SS[2], SS[2]);
   P1(true, SS[2], SS[2], SS[2], true, true);
   P1(R, false, false, R, R, R);
   P2( “AB”, “AB”, “AB”, “AB”, “AB”, “AB”, “AB” );
   P2(RA, RA, RA, RA, RA, RA, RA);
   P2(SS, SS, SS[2], SS, SS, SS, SS);
   P2(PR, PR, PR, R, PR, PR, PR);
   P2(FAIL, SS, FAIL, FAIL, FAIL, FAIL, FAIL);
   P2(true, true, true, true, true, true, true);
   P2(R, R, R, R, R, R, R);
   P3( “AB”, “AB”, “AB”, “AB”, “AB”, “AB”, “AB” );
   P3(RA, RA, RA, R, R, R, RA);
   P3(SS, SS, SS, SS, SS, SS, SS);
   P3(PR, PR, PR, PR, PR, PR, PR);
   P3(FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, SS);
   P3(true, true, R, true, true, true, true);
   P3(true, true, R, R, R, R, R);
   WORK :;
   if false then
     FAIL : OUTREAL(99, - 1);
end