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


FORTRAN example

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

********************************************************************
*                                                                  *
*                                                                  *
*      This is FORTRAN.  Followed by an assembler routine          *
*      called ADDR that has to be linkedited with the object       *
*      code from this testcase, and the CSR stubs.                 *
*                                                                  *
********************************************************************
@PROCESS DC(BPAGEFOR)
      PROGRAM BPAGEFOR
C
      INCLUDE 'SYS1.SAMPLIB(CSRBPFOR)'
C
C     Multiply two arrays together - testing CSRIRP, CSRRRP services
C
C
      INTEGER M /200/
      INTEGER N /200/
      INTEGER P /200/
      PARAMETER (NKELEMENT_SIZE=4)
      INTEGER RC,RSN
      COMMON /WINCOM/A(200,200)
      COMMON /WINCOM/B(200,200)
      COMMON /WINCOM/C(200,200)
C
C     Initialize the arrays
C
      CALL CSRIRP(A(1,1),
     *            M*N*NKELEMENT_SIZE,
     *            CSR_FORWARD,
     *            M*NKELEMENT_SIZE,
     *            0,
     *            20,
     *            RC,
     *            RSN)
      CALL CSRIRP(B(1,1),
     *            N*P*NKELEMENT_SIZE,
     *            CSR_FORWARD,
     *            N*NKELEMENT_SIZE,
     *            0,
     *            20,
     *            RC,
     *            RSN)
      DO 102 J = 1, N
      DO 100 I = 1, M
        A(I,J) = I + J
  100 CONTINUE
  102 CONTINUE
      DO 106 J = 1, P
      DO 104 I = 1, N
        B(I,J) = I + J
  104 CONTINUE
  106 CONTINUE
C
      CALL CSRRRP(A(1,1),
     *            M*N*NKELEMENT_SIZE,
     *            RC,
     *            RSN)
      CALL CSRRRP(B(1,1),
     *            N*P*NKELEMENT_SIZE,
     *            RC,
     *            RSN)
C
C Multiply the two arrays together
C
      CALL CSRIRP (A(1,1),
     *             M*N*NKELEMENT_SIZE,
     *             CSR_FORWARD,
     *             N*NKELEMENT_SIZE,
     *             (N-1)*KELEMENT_SIZE,
     *             50,
     *             RC,
     *             RSN)
      CALL CSRIRP (B(1,1),
     *             N*P*NKELEMENT_SIZE,
     *             CSR_FORWARD,
     *             NKELEMENT_SIZE*N,
     *             0,
     *             20,
     *             RC,
     *             RSN)
      DO 112 I = 1, M
      DO 110 J = 1, N
      DO 108 K = 1, P
        C(I,J) = C(I,J) + A(I,K) * B(K,J)
  108 CONTINUE
  110 CONTINUE
  112 CONTINUE
      CALL CSRRRP (A(1,1),
     *             M*N*NKELEMENT_SIZE,
     *             RC,
     *             RSN)
      CALL CSRRRP (B(1,1),
     *             N*P*NKELEMENT_SIZE,
     *             RC,
     *             RSN)

      STOP
      END
********************************************************************    00010000
*                                                                  *    00020000
*      THIS IS THE JCL THAT COMPILES THE PROGRAM.                  *    00030000
*                                                                  *    00020000
********************************************************************    00080000
//FORTJOB JOB                                                           00090007
//  MSGCLASS=H,RDR=R,                                                   00110007
//  MSGLEVEL=(1,1),CLASS=T                                              00120000
//*                                                                     00130000
//*                                                                     00140000
//*  COMPILE AND LINKEDIT FOR FORTRAN                                   00150000
//*                                                                     00160000
//*                                                                     00170000
//*                                                                     00180000
//VSF2CL PROC  FVPGM=FORTVS2,FVREGN=2100K,FVPDECK=NODECK,               00190000
//         FVPOLST=NOLIST,FVPOPT=0,FVTERM='SYSOUT=A',                   00200000
//         PGMNAME=MAIN,PGMLIB='&&GOSET',FVLNSPC='3200,(25,6)'          00210000
//*                                                                     00220000
//* COPYRIGHT:  5668-806                                                00230000
//*             (C) COPYRIGHT IBM CORP 1985, 1988                       00240000
//*             LICENSED MATERIALS - PROPERTY OF IBM                    00250000
//*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083   00260000
//*                                                                     00270000
//* STATUS:     02.03.00 (VV.RR.MM)                                     00280000
//*                                                                     00290000
//*            PARAMETER  DEFAULT-VALUE     USAGE                       00300000
//*                                                                     00310000
//*              FVPGM    FORTVS2           COMPILER NAME               00320000
//*              FVREGN   2100K             FORT-STEP REGION            00330000
//*              FVPDECK  NODECK            COMPILER DECK OPTION        00340000
//*              FVPOLST  NOLIST            COMPILER LIST OPTION        00350000
//*              FVPOPT   0                 COMPILER OPTIMIZATION       00360000
//*              FVTERM   SYSOUT=A          FORT.SYSTERM OPERAND        00370000
//*              FVLNSPC  3200,(25,6)       FORT.SYSLIN SPACE           00380000
//*              PGMLIB   &&GOSET           LKED.SYSLMOD DSNAME         00390000
//*              PGMNAME  MAIN              LKED.SYSLMOD MEMBER NAME    00400000
//*                                                                     00410000
//FORT   EXEC  PGM=&FVPGM,REGION=&FVREGN,COND=(4,LT),                   00420000
//             PARM='&FVPDECK,&FVPOLST,OPT(&FVPOPT)'                    00430000
//STEPLIB      DD DSN=D24PP.FORT230.VSF2COMP,DISP=SHR                   00440000
//SYSPRINT     DD SYSOUT=A,DCB=BLKSIZE=3429                             00450000
//SYSTERM      DD &FVTERM                                               00460000
//SYSPUNCH     DD SYSOUT=B,DCB=BLKSIZE=3440                             00470000
//SYSLIN       DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA,             00480000
//             SPACE=(&FVLNSPC),DCB=BLKSIZE=3200                        00490000
//LKED   EXEC  PGM=HEWL,REGION=768K,COND=(4,LT),                        00500000
//             PARM='LET,LIST,XREF'                                     00510000
//SYSPRINT     DD SYSOUT=A                                              00520000
//SYSLIB       DD DSN=CEE.SCEELKED,DISP=SHR                             00530000
//SYSUT1       DD UNIT=SYSDA,SPACE=(1024,(200,20))                      00540000
//SYSLMOD      DD DSN=&PGMLIB.(&PGMNAME),DISP=(,PASS),UNIT=SYSDA,       00550000
//             SPACE=(TRK,(10,10,1),RLSE)                               00560000
//SYSLIN       DD DSN=&&LOADSET,DISP=(OLD,DELETE)                       00570000
//             DD DDNAME=SYSIN                                          00580000
// PEND                                                                 00590000
//       EXEC  VSF2CL,FVTERM='SYSOUT=H',                                00600000
//         PGMNAME=FORTRAN,PGMLIB='REFPAT.USER.LOAD'                    00680008
//FORT.SYSIN DD DSN=REFPAT.SAMPLE.PROG(FORTRAN),DISP=SHR                00690008
//LKED.SYSLIB       DD DSN=CEE.SCEELKED,DISP=SHR                        00700000
//LKED.SYSLMOD DD DSN=REFPAT.USER.LOAD,DISP=SHR                         00710007
//LKED.SYSIN DD *                                                       00720000
  INCLUDE  IN(CSRIRP,CSRRRP,ADDR)                                       00730000
  NAME BPGFORT(R)                                                       00740006
/*                                                                      00750000
//*     THE CSR STUBS ARE AVAILABLE IN SYS1.CSSLIB,                     00760007
//*     THE OBJ FOR THE ADDR ROUTINE IS IN TEST.OBJ                     00770007
//*                                                                     00780000
//LKED.IN     DD DSN=SYS1.CSSLIB,DISP=SHR                               00790007
//            DD DSN=REFPAT.TEST.OBJ,DISP=SHR                           00mm0007
********************************************************************    00010000
*                                                                  *    00020000
*      THIS IS THE JCL I USE TO EXECUTE THE PROGRAM.               *    00030000
*                                                                  *    00060000
********************************************************************    00070000
//FONO1 JOB  MSGLEVEL=(1,1),TIME=1440                                   00080003
//VSF2G  PROC  GOPGM=MAIN,GOREGN=100K,                                  00090000
//*                                                                     00100000
//*                                                                     00110000
//*    EXECUTE A FORTRAN TESTCASE - CHANGE ALL CRTFONXX TO CRTFONZZ     00120000
//*                                                                     00130000
//             GOF5DD='DDNAME=SYSIN',                                   00140000
//             GOF6DD='SYSOUT=A',                                       00150000
//             GOF7DD='SYSOUT=B'                                        00160000
//*                                                                     00170000
//* COPYRIGHT:  5668-806                                                00180000
//*             (C) COPYRIGHT IBM CORP 1985, 1988                       00190000
//*             LICENSED MATERIALS - PROPERTY OF IBM                    00200000
//*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083   00210000
//*                                                                     00220000
//* STATUS:     02.03.00 (VV.RR.MM)                                     00230000
//*                                                                     00240000
//*            PARAMETER  DEFAULT-VALUE     USAGE                       00250000
//*                                                                     00260000
//*              GOPGM    MAIN              PROGRAM NAME                00270000
//*              GOREGN   100K              GO-STEP REGION              00280000
//*              GOF5DD   DDNAME=SYSIN      GO.FT05F001 DD OPERAND      00290000
//*              GOF6DD   SYSOUT=A          GO.FT06F001 DD OPERAND      00300000
//*              GOF7DD   SYSOUT=B          GO.FT07F001 DD OPERAND      00310000
//*                                                                     00320000
//*                                                                     00330000
//GO     EXEC  PGM=&GOPGM,REGION=&GOREGN,COND=(4,LT)                    00340000
//STEPLIB      DD DSN=CEE.SCEERUN,DISP=SHR                              00350004
//FT05F001     DD &GOF5DD                                               00360000
//FT06F001     DD &GOF6DD                                               00370000
//FT07F001     DD &GOF7DD                                               00380000
// PEND                                                                 00390000
//GO EXEC VSF2G,GOPGM=BPGFORT,GOREGN=999K                               00400004
//GO.STEPLIB      DD DSN=WINDOW.D24PP.FORTLIB,DISP=SHR,                 00410004
//                   VOL=SER=VM2TSO,UNIT=3380                           00410104
//                DD DSN=WINDOW.R40.VSF2LOAD,DISP=SHR,                  00411004
//                   VOL=SER=VM2TSO,UNIT=3380                           00412004
//                DD DSN=REFPAT.USER.LOAD,DISP=SHR,                     00420003
//                   VOL=SER=VM2TSO,UNIT=3380                           00430004

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014