Create a PL/I source file, opdemo.pli

  1. Right-click the project in PL/I Explorer and select New > PL/I Source File.
  2. In the New file name field, enter opdemo.pli. Click Finish. The code panel appears with skeleton code for opdemo.pli.
  3. Overwrite the skeleton contents with the following code:
     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;
    
  4. Save the file.

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.