OPDEMO: PROC(JCLPARM) OPTIONS(MAIN) REORDER;
 
 
 DCL JCLPARM CHAR(20) VARYING;
 /*-------------------------------------------------------------------*/
 /*                        F I L E S                                  */
 /*-------------------------------------------------------------------*/
  DCL SYSIN FILE RECORD INPUT  ENVIRONMENT(FB RECSIZE(80));
  DCL SYSUT1 FILE RECORD INPUT  ENVIRONMENT(FB RECSIZE(80));
  DCL SYSUT2 FILE RECORD OUTPUT ENVIRONMENT(FB RECSIZE(80));
  
  DCL SYSPRINT FILE STREAM OUTPUT PRINT ENV (F RECSIZE (132));
 /*-------------------------------------------------------------------*/
 /*            S T R U C T U R E S    &    A R R A Y S                */
 /*-------------------------------------------------------------------*/
 /*-------------------------------------------------------------------*/
 /*                E X T E R N A L    E N T R I E S                   */
 /*-------------------------------------------------------------------*/
 /*-------------------------------------------------------------------*/
 /*                 O T H E R    V A R I A B L E S                    */
 /*-------------------------------------------------------------------*/
 DCL ACCUMULATOR     FIXED BIN(31) INIT(1);
 DCL ASCII_ALPHABET char(38)
   init('!ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ');
 DCL chTemp char(1);                                                                       
 DCL EBCDIC_ALPHABET char(38) init
   ('5AC1C2C3C4C5C6C7C8C9D1D2D3D4D5D6D7D8D9E2E3E4E5E6E7E8E9'x || 
    'F0F1F2F3F4F5F6F7F8F940'x);
 DCL EOF_SYSIN      CHAR(1) INIT('0');
 
 DCL EOF_SYSUT1     CHAR(1) INIT('0');
 DCL ITERATIONS     FIXED BIN(31) INIT(0);
 DCL JCLTRANS       CHAR(20) VARYING; 
 DCL REC_BUFF       char(80);
 
 DCL REPLY_STR      CHAR(120) VARYING;
 
 DCL STATIC_STR     CHAR(200) varying 
   init('Hi Dave - this is your static string');
 
 DCL SYSIN_NUM_RECS PIC '9999';
 
 DCL SYSPRINT_BUFF  CHAR(132);
 
 DCL VAR_NUMERIC    PIC '9999';
                                                                       
 /*-------------------------------------------------------------------*/
 /*              B U I L T I N     F U N C T I O N S                  */
 /*-------------------------------------------------------------------*/
 
 DCL PLIRETC BUILTIN;
 DCL TRANSLATE BUILTIN;
 DCL DELAY   BUILTIN;
 
 
 /*-------------------------------------------------------------------*/
 /*                   M O D U L E     L O G I C                       */
 /*-------------------------------------------------------------------*/
  on error begin;
    PUT SKIP LIST('On Error Triggered' || oncode());
    goto AFTERON;
  end;
 
  on conversion begin;
    PUT SKIP LIST('On Conversion Triggered');
    goto AFTERON;
  end;
  ON ENDFILE (SYSIN)
     begin;
       EOF_SYSIN = '1';
       put skip list('SYSIN EOF Reached - Num Recs: ' || 
                     sysin_num_recs);
     end;
  ON ENDFILE (SYSUT1)
     begin;
       EOF_SYSUT1 = '1';
       put skip list('SYSUT1 EOF Reached');
     end;
 SYSPRINT_BUFF = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || /* 26 */
                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || /* 52 */
                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || /* 78 */
                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || /* 104 */
                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' || /* 130 */
                 '12';
 open file(sysprint);
 PUT SKIP LIST(SYSPRINT_BUFF);
 
 put skip list('Length of JCLPARM: ' || length(jclparm));
 PUT DATA(JCLPARM);
 PUT SKIP;
 if (JCLPARM = 'DISPLAYREPLY') then
   do;
     DISPLAY('STARTING OPDEMO.PLI') REPLY(reply_str);
     put skip list('Reply String: ' || reply_str);
   end;
 else
   do;
   
     /* Read SYSIN to EOF */
     sysin_num_recs = '0';
     open input file(sysin);
     do while(eof_sysin = '0');
         read file(sysin) into (rec_buff);
         if (eof_sysin = '0') then
           sysin_num_recs = sysin_num_recs + 1;
     end;
     close file(sysin);
   
   end;
 /***********************************************************/
 /*  Open SYSUT1 and read until EOF translating records and */
 /*  Writing them to SYSUT2                                 */
 /***********************************************************/
 
 open file(sysut1) input;
 open file(sysut2) output;
 do while(eof_sysut1 = '0');
    read file(sysut1) into(rec_buff);
    if (eof_sysut1 = '0') then
      do;
        rec_buff = Translate(rec_buff, ascii_alphabet, ebcdic_alphabet);
        write file(sysut2) from(rec_buff);
      end;
 end;
 close file(sysut1);
 close file(sysut2);
 STARTIT:
 PUT SKIP DATA(ACCUMULATOR);
 ACCUMULATOR = ACCUMULATOR + 15;
 PUT SKIP DATA(ACCUMULATOR);
 PUT SKIP LIST('Triggering ON Unit');
 VAR_NUMERIC = 'DAVE';
 PUT SKIP DATA(VAR_NUMERIC); 
 AFTERON:
 PUT SKIP LIST('SLEEPING for 3 Seconds');
 Delay(3000);  /*  Sleep for 3 seconds */
 Iterations = Iterations + 1;
 /*  Let's run for about 6 seconds */
 If Iterations < 2 then
   goto startit;
 END;
 
                  		By default, saving a file automatically triggers a build of the project. You can see the progress of the build process in Eclipse's Console view.