MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

PL/1 Sample programs

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming
View previous topic :: View next topic  
Author Message
mangsk
Beginner


Joined: 05 Jun 2004
Posts: 46
Topics: 18

PostPosted: Sat Sep 30, 2006 1:04 pm    Post subject: PL/1 Sample programs Reply with quote

Hi,

Can anybody provide me sample PL/1 programs which have -
1. File Handling
2. Static calls to other programs
3. Embedded SQL statements
4. PL/1 - CICS programs

Thanks in advance.
_________________
Regards,
Mangsk
Back to top
View user's profile Send private message Yahoo Messenger MSN Messenger
shekar123
Advanced


Joined: 22 Jul 2005
Posts: 528
Topics: 90
Location: Bangalore India

PostPosted: Sun Oct 01, 2006 11:16 am    Post subject: Reply with quote

mangsk,

I have a sample PGM for file handling.Hope it helps.
Code:

 /*PROGRAM TO READ FROM A FILE AND GENERATE A REPORT                  */
 /*********************************************************************/
 /*    PROGRAM NAME : TESTPGM                                         */
 /*    DESCRIPTION  : THIS PROGRAM READS RECORDS FROM A FILE ONE BY   */
 /*                   ONE AND GENERATES A REPORT WITH STANDARD HEADER */
 /*                   AND FOOTER AND ALSO TAKES CARE OF INCREASING    */
 /*                   LINE NUMBERS IN THE REPORT                      */
 /*********************************************************************/
 TESTPGM:PROCEDURE OPTIONS(MAIN);                                       
    DCL DATETIMEVAR  CHAR (17)     INIT(' ');                           
    DCL EOUT_LC      FIXED DEC (3) INIT (0);                           
    DCL INREC                      CHAR (80);                           
    DCL MORE_RECORDS BIT (1);                                           
    DCL NO           BIT (1) INITIAL('0'B);                             
    DCL YES          BIT (1) INITIAL('1'B);                             
                                                                       
    DCL 1 PAGENUM       FIXED DEC (3) INIT (1);                         
    DCL 1 PAGELN,                                          /* PAGE NO */
          2 FILLER      CHAR (60)     INIT (' '),                       
          2 PAGESHOW    CHAR (17)     INIT ('PAGE    :        '),       
          2 PAGEDISP    PIC 'ZZ9'     INIT (1);                         
                                                                       
    DCL 1 DATELN,                                         /* RUN DATE */
          2 FILLER      CHAR (60)   INIT (' '),                         
          2 DATESHOW    CHAR (10)   INIT ('RUN DATE: '),               
          2 DATEDISP    CHAR (10)   INIT ('  /  /    ');               
                                                                       
    DCL 1 TIMELN,                                         /* RUN TIME */
          2 FILLER      CHAR (60)   INIT (' '),                         
          2 TIMESHOW    CHAR (12)   INIT ('RUN TIME:   '),             
          2 TIMEDISP    CHAR (08)   INIT ('  :  :  ');                 
                                                                       
    DCL 1 PGMSHOW,                                                     
          2 FILLER1     CHAR (60)   INIT (' '),                         
          2 FILLER2     CHAR (20)   INIT ('PROGRAM :    TESTPGM');     
                                                                       
    DCL 1 ENDRPRTLN,                                 /* END OF REPORT */
          2 FILLER1     CHAR (30)   INIT (' '),                         
          2 FILLER2     CHAR (25)   INIT ('***** END OF REPORT ****'), 
          2 FILLER3     CHAR (25)   INIT (' ');                         
                                                                       
    DCL   BLANKLN       CHAR (80)   INIT (' ');                         
                                                                       
    DCL 1 HEADERLN,                                                     
          2 FILLER1  CHAR (20) INIT (' '),                             
          2 FILLER2  CHAR (35) INIT ('    SUMMARY REPORT FOR OCTOBER'),
          2 FILLER3  CHAR (25) INIT (' ');                             
                                                                       
    DCL DATETIME BUILTIN,                                               
         SUBSTR  BUILTIN;                                               
    DCL INP FILE RECORD INPUT,                                         
        OUT FILE RECORD OUTPUT;                                         
         ON ENDFILE(INP)                                               
            MORE_RECORDS = NO;                                         
            CLOSE FILE(INP);                                           
         ON ENDFILE(OUT)                                               
            CLOSE FILE(OUT);                                           
                                                                       
    MORE_RECORDS = YES;                                                 
    OPEN FILE (INP);                                                   
    OPEN FILE (OUT);                                                   
         READ FILE (INP) INTO (INREC);                                 
         DATETIMEVAR = DATETIME;                                       
         PUT SKIP LIST('DATETIMEVAR',DATETIMEVAR);                     
         SUBSTR(DATEDISP,7,4) = SUBSTR(DATETIMEVAR,1,4);               
         SUBSTR(DATEDISP,1,2) = SUBSTR(DATETIMEVAR,5,2);               
         SUBSTR(DATEDISP,4,2) = SUBSTR(DATETIMEVAR,7,2);               
         SUBSTR(TIMEDISP,1,2) = SUBSTR(DATETIMEVAR,9,2);               
         SUBSTR(TIMEDISP,4,2) = SUBSTR(DATETIMEVAR,11,2);               
         SUBSTR(TIMEDISP,7,2) = SUBSTR(DATETIMEVAR,13,2);               
         CALL HEADER_PROC;                                             
                                                                       
    DO WHILE(MORE_RECORDS);                                             
         WRITE FILE (OUT) FROM (INREC);                                 
         IF EOUT_LC >= 55                                               
            THEN DO;                                                   
                   EOUT_LC  = 0;                                       
                   PAGENUM  = PAGENUM + 1;                             
                   PAGEDISP = PAGENUM;                                 
                   CALL HEADER_PROC;                                   
                 END;                                                   
         EOUT_LC = EOUT_LC + 1;                                         
         READ FILE (INP) INTO (INREC);                                 
    END;                                                               
                                                                       
         WRITE FILE (OUT) FROM (BLANKLN);                               
         WRITE FILE (OUT) FROM (ENDRPRTLN);                             
         CLOSE FILE(INP);                                               
         CLOSE FILE(OUT);                                               
                                                                       
 HEADER_PROC: PROC;                                                     
         WRITE FILE (OUT) FROM (PAGELN);                               
         WRITE FILE (OUT) FROM (DATELN);                               
         WRITE FILE (OUT) FROM (TIMELN);                               
         WRITE FILE (OUT) FROM (PGMSHOW);                               
         WRITE FILE (OUT) FROM (BLANKLN);                               
         WRITE FILE (OUT) FROM (HEADERLN);                             
         WRITE FILE (OUT) FROM (BLANKLN);                               
         EOUT_LC = EOUT_LC + 7;                                         
 END HEADER_PROC;                                                       
                                                                       
 END TESTPGM;                                                           

RUN JCL
Code:

//STEP010  EXEC PGM=TESTPGM                                             
//STEPLIB  DD   DSN=USERID.PLI.LOADLIB,DISP=SHR                         
//INP      DD   DSN=USERID.TEST.DATA,DISP=SHR                           
//OUT      DD   SYSOUT=*,DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)           
//SYSPRINT DD   SYSOUT=*                                               
//SYSOUT   DD   SYSOUT=*                                               
//                                                                     

INPUT DATASET
Code:

1
2
3
4
5

OUTPUT REPORT
Code:

                                                            PAGE    :          1
                                                            RUN DATE: 10/01/2006
                                                            RUN TIME:   21:30:41
                                                            PROGRAM :    TESTPGM
                                                                               
                        SUMMARY REPORT FOR OCTOBER                                                                                                             
1                                                                               
2                                                                               
3                                                                               
4                                                                               
5                                                                               
                                                                               
                              ***** END OF REPORT ****                         

_________________
Shekar
Grow Technically
Back to top
View user's profile Send private message
mangsk
Beginner


Joined: 05 Jun 2004
Posts: 46
Topics: 18

PostPosted: Mon Oct 02, 2006 7:47 am    Post subject: Reply with quote

Shekar,

Thanks much! That was of good help..
Please post other samples as well on the same thread if you get some..

Mangsk
_________________
Regards,
Mangsk
Back to top
View user's profile Send private message Yahoo Messenger MSN Messenger
shekar123
Advanced


Joined: 22 Jul 2005
Posts: 528
Topics: 90
Location: Bangalore India

PostPosted: Mon Oct 02, 2006 1:29 pm    Post subject: Reply with quote

mangsk,

Try this untested PLI DB2 Program which inserts rows in a DB2 Table
Code:

 /* ISRTPGM:  THIS PROGRAM INSERTS ROWS INTO A DB2 TABLE              */
 ISRTPGM: PROCEDURE OPTIONS(MAIN);                                     
    DCL INP FILE RECORD INPUT;                                         
    DCL SYSPRINT FILE PRINT;
        ON ENDFILE(INP)                                                 
           MORE_RECORDS = NO;                                           
           CLOSE FILE(INP);                                             
                                                                       
    DCL MORE_RECORDS BIT (1);                                           
    DCL NO           BIT (1) INITIAL('0'B);                             
    DCL YES          BIT (1) INITIAL('1'B);                             
    DCL EOUT_LC      FIXED DEC (3) INIT (0);                           
                                                                       
    DCL 1 DCLEMPLOYEE,                                                 
          2 EMPNO    CHAR(06),                                         
          2 EMPNAME  CHAR(20),                                         
          2 EMPAGE   FIXED DECIMAL (02);                               
                                                                       
    DCL 1 INREC,                                                       
          2 EMPNO    CHAR(06),                                         
          2 FILLER1  CHAR(01) INIT (' '),                               
          2 EMPNAME  CHAR(20),                                         
          2 FILLER2  CHAR(01) INIT (' '),                               
          2 EMPAGE   FIXED DECIMAL (02),                               
          2 FILLER3  CHAR(50) INIT (' ');                               
                                                                       
   DCL 1 SQLCA,                                                         
         2 SQLCAID       CHAR(8),                                       
         2 SQLCABC       FIXED(31) BINARY,                             
         2 SQLCODE       FIXED(31) BINARY,                             
         2 SQLERRM       CHAR(70) VAR,                                 
         2 SQLERRP       CHAR(8),                                       
         2 SQLERRD(6)    FIXED(31) BINARY,
         2 SQLWARN,                                                     
           3 SQLWARN0    CHAR(1),                                       
           3 SQLWARN1    CHAR(1),                                       
           3 SQLWARN2    CHAR(1),                                       
           3 SQLWARN3    CHAR(1),                                       
           3 SQLWARN4    CHAR(1),                                       
           3 SQLWARN5    CHAR(1),                                       
           3 SQLWARN6    CHAR(1),                                       
           3 SQLWARN7    CHAR(1),                                       
           3 SQLWARN8    CHAR(1),                                       
           3 SQLWARN9    CHAR(1),                                       
           3 SQLWARNA    CHAR(1),                                       
         2 SQLSTATE      CHAR(5);                                       
                                                                       
    MORE_RECORDS = YES;                                                 
    OPEN FILE (INP);                                                   
         READ FILE (INP) INTO (INREC);                     
         DO WHILE(MORE_RECORDS);                                       
            EXEC SQL                                                   
                 INSERT INTO EMPLOYEE VALUES (                         
                                              :EMPNO    ,               
                                              :ENMPNAME ,               
                                              :EMPAGE                   
                                             );                         
                                                                       
            IF SQLCODE = 0 THEN                                         
               DO;                                                     
                 PUT SKIP LIST ('RECORD INSERTED');                     
                 EOUT_LC = EOUT_LC + 1;                                 
               END;                                                     
                                                                       
            EXEC SQL COMMIT ;                                           
            READ FILE (INP) INTO (INREC);                                 
         END;                                                           
         PUT SKIP LIST ('TOTAL RECORDS INSERTED :',EOUT_LC);           
 END ISRTPGM;                                                                       

_________________
Shekar
Grow Technically
Back to top
View user's profile Send private message
mf_learner
Beginner


Joined: 04 May 2006
Posts: 11
Topics: 4

PostPosted: Tue Oct 10, 2006 4:35 pm    Post subject: Compile PL/I pgm Reply with quote

Hi,

I am new to PL/I and need to write a new program on PL/I for doing a simple select from DB2 tables and preparing a report from that.

The above is going to create a great reference ground for me - thanks to Shekhar for this, but what I want to know is how this PL/I would be compiled - i.e if anyone could pass me on the compile jcl for creating the load of say, ISRTPGM (as created by Shekhar, above), it would be very helpful.

When I compile a PL/I would it create a Load and a DBRM as in a Cobol pgm, and do I need to bind them as well.

Thanks.
_________________
Thanks
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12378
Topics: 75
Location: San Jose

PostPosted: Tue Oct 10, 2006 8:29 pm    Post subject: Reply with quote

mf_learner,

check this link

http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/C2714572/3.1?DT=20020918091353

Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
shekar123
Advanced


Joined: 22 Jul 2005
Posts: 528
Topics: 90
Location: Bangalore India

PostPosted: Wed Oct 11, 2006 2:02 am    Post subject: Reply with quote

Kolusu,

This is really a very good link.Thanks.
_________________
Shekar
Grow Technically
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group