**********************************************************************
* *
* 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
---------------------------