z/OS MVS Programming: Callable Services for High-Level Languages
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Pascal example

z/OS MVS Programming: Callable Services for High-Level Languages
SA23-1377-02

**********************************************************************
*                                                                    *
*     PASCAL example. The data object is permanent and already       *
*     allocated.  A scroll area is used.                             *
*                                                                    *
**********************************************************************
 program BPAGEPAS;

   %include CSRBPPAS

   CONST
     m               = 250;
     n               = 250;
     p               = 250;
     kelement_size   = 4;
     a_size          = m*n*kelement_size;
     b_size          = n*p*kelement_size;
     c_size          = m*p*kelement_size;

   VAR
     a               : array (.1..m, 1..n.) of integer;
     b               : array (.1..n, 1..p.) of integer;
     c               : array (.1..m, 1..p.) of integer;
     i               : integer;
     j               : integer;
     k               : integer;
     rc              : integer;
     rsn             : integer;

   BEGIN
          csrirp (a(.1,1.), a_size, csr_forward,
                  kelement_size*m,
                  0,
                  50,
                  rc,
                  rsn);
          csrirp (b(.1,1.), b_size, csr_forward,
                  kelement_size*n,
                  0,
                  20,
                  rc,
                  rsn);
     for i:=1 to m do
       for j:=1 to n do
         a(.i,j.) := i + j;
     for i:=1 to n do
       for j:=1 to p do
         b(.i,j.) := i + j;
          csrrrp (a(.1,1.), a_size,
                  rc,
                  rsn);
          csrrrp (b(.1,1.), b_size,
                  rc,
                  rsn);
     /* Multiply the two arrays together */

          csrirp (a(.1,1.), m*n*kelement_size, csr_forward,
                  kelement_size*n,
                  0,
                  20,
                  rc,
                  rsn);
          csrirp (b(.1,1.), n*p*kelement_size, csr_forward,
                  (p-1)*kelement_size,
                  0,
                  50,
                  rc,
                  rsn);
     for i:=1 to m do
       for J:=1 to p do
         begin;
         c(.i,j.) := 0;
         for k:=1 to n do
           c(.i,j.) := c(.i,j.) + a(.i,k.) * b(.k,j.);
         end;

          csrrrp (a(.1,1.), m*n*kelement_size,
                  rc,
                  rsn);
          csrrrp (b(.1,1.), n*p*kelement_size,
                  rc,
                  rsn);
   END.
**********************************************************************  00010000
*                                                                    *  00020000
*       JCL TO COMPILE AND LINKEDIT                                  *  00030000
*                                                                    *  00040000
**********************************************************************  00050000
//PASCJOB JOB                                                           00060008
//GOGO EXEC PAS22CL                                                     00100000
//*                                                                     00110000
//*    COMPILE AND LINKEDIT FOR PASCAL                                  00120000
//*                                                                     00130000
//*    CHANGE THE MEMBER NAME ON THE NEXT LINE AND THE                  00140000
//*    NAME CRTPANXX(R) SIX LINES DOWN                                  00150000
//*                                                                     00160000
//PASC.SYSLIB DD                                                        00161006
//            DD                                                        00162006
//            DD DSN=REFPAT.DECLARE.SET(CSRBPPAS),DISP=SHR              00163008
//PASC.SYSIN DD DSN=REFPAT.SAMPLE.PROG(PASCAL),DISP=SHR                 00170008
//LKED.SYSLMOD DD DSN=REFPAT.USER.LOAD,DISP=SHR,UNIT=3380,              00180008
// VOL=SER=VM2TSO                                                       00190009
//LKED.SYSIN DD *                                                       00200000
  LIBRARY  IN(CSRIRP,CSRRRP)                                            00210005
  NAME BPGPASC(R)                                                       00220003
/*                                                                      00230000
//*     SYS1.CSSLIB IS THE SOURCE OF THE CSR STUBS                      00240008
//*                                                                     00250000
//LKED.IN     DD DSN=SYS1.CSSLIB,DISP=SHR                               00260008
**********************************************************************
*                                                                    *
*       JCL TO EXECUTE PASCAL                                        *
*                                                                    *
**********************************************************************
//PASC1JOB JOB                                                          00010005
//GO   EXEC PAS22CL                                                     00050000
//*                                                                     00050102
//*    Compile and linkedit for PASCAL                                  00050202
//*                                                                     00050302
//PASC.SYSIN DD DSN=WINDOW.XAMPLE.LIB(CRTPAN06),DISP=SHR                00060006
//LKED.SYSLMOD DD DSN=WINDOW.USER.LOAD,DISP=SHR,UNIT=3380,              00560000
// VOL=SER=VM2TSO                                                       00570000
//LKED.SYSIN DD *                                                       00580000
  LIBRARY  IN(CSRSCOT,CSRSAVE,CSRREFR,CSRSAVE,CSRVIEW,CSRIDAC)          00590000
  NAME CRTPAN06(R)                                                      00600006
/*                                                                      00610000
//*     SYS1.CSSLIB is the source of the CSR stubs                      00620002
//*                                                                     00650002
//LKED.IN     DD DSN=SYS1.CSSLIB,DISP=SHR                               00690000
***********************************************************************
*                                                                     *
*                                                                     *
*      JCL TO COMPILE AND LINKEDIT.                                   *
*                                                                     *
*                                                                     *
*                                                                     *
***********************************************************************
**********************************************************************  00010000
*                                                                    *  00020000
*   JCL TO EXECUTE.  THIS ONE NEEDS A DD STATEMENT FOR THE           *  00030000
*   PERMANENT DIV OBJECT - CSRDD1.  DATASET ALREADY EXISTS.          *  00040000
*                                                                    *  00060000
**********************************************************************  00070000
//PASCGO JOB MSGLEVEL=(1,1),TIME=1440                                   00080002
//*                                                                     00090000
//*                                                                     00100000
//*   RUN A PASCAL TESTCASE - CHANGE THE NAME ON THE NEXT LINE          00110000
//*                                                                     00/20000
//*                                                                     00130000
//GO     EXEC  PGM=BPGPASC                                              00140000
//STEPLIB DD DSN=REFPAT.USER.LOAD,                                      00150002
// DISP=SHR,UNIT=3380,                                                  00190000
// VOL=SER=VM2TSO                                                       00200003
//CSRDD1   DD  DSN=DIV.TESTDS,DISP=SHR                                  00210000
//OUTPUT   DD  SYSOUT=A,DCB=(RECFM=VBA,LRECL=133)                       00220000
//SYSPRINT DD  SYSOUT=A,DCB=(RECFM=VBA,LRECL=133)                       00230000
---------------------------

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014