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( “AB”, R, SUM, B, RA, IA);
   if SUM ≠ 9 then
     OUTREAL(99, SUM);
   P2(BA, SS[2], SS, PR, RPR, IPR, BPR);
   if SUM ≠ 276 then
     OUTREAL(99, SUM);
   WORK :;
   OUTREAL(99, 0);
   P3(4·6, - 200, true, RA, IA, BA, if true then SS[2] else
     FAIL);
   if SUM ≠ 83 then
     OUTREAL(99, SUM);
   P1( “CD”, RPR, IPR, BPR, RA, IA);
   if SUM ≠ 500 then
     OUTREAL(99, SUM);
   P3(RPR, IPR, BPR, RA, IA, BA, FAIL);
   if SUM ≠ 3002 then
     OUTREAL(99, SUM);
   if false then
     FAIL : OUTREAL(99, - 1);
end