Feed on
Posts
Comments

//STEP01 EXEC SAS
//INTRDR DD SYSOUT=3D(A,INTRDR)
//SYSIN  DD *

…SAS code to create Tape DSN’s as macro variables, e.g. &TAPENAM1,
&TAPENAM2, etc.
=20
DATA _NULL_;
FILE INTRDR LRECL=3D80 BLKSIZE=3D80 RECFM=3DF NOPRINT NOTITLES;
=20
PUT “//JOB1 JOB (JAMES,123),DIMPLE PROD JOB01′,CLASS=3DA, “;
PUT ‘//             MSGCLASS=3DQ,                          ’;
PUT “//STEP01 EXEC SAS,WORK=3D’750,100′                    ”;
PUT “//TAPE1  DD   DISP=3DSHR,DSN=3D&TAPNAM1,DISP=3DSHR   “;
PUT ‘//SYSIN  DD DSN=3DDIMPLES.SASPROG.PDS(TAPEPRGM),DISP=3DSHR’;
PUT ‘//*’;

PUT “//JOB2 JOB (JAMES,123),DIMPLE PROD JOB02′,CLASS=3DA, “;
PUT ‘//             MSGCLASS=3DQ,                          ’;
PUT “//STEP01 EXEC SAS,WORK=3D’750,100′                    ”;
PUT “//TAPE1  DD   DISP=3DSHR,DSN=3D&TAPNAM2,DISP=3DSHR   “;
PUT ‘//SYSIN  DD DSN=3DDIMPLES.SASPROG.PDS(TAPEPRGM),DISP=3DSHR’;
PUT ‘//*’;
//*

FAQ About PL/1

Q1) What is PL/I?
.
     PL/I is a general-purpose programming language, which is used for solving

     problems in a variety of fields such as commerce, science (including mathematics,
     physics, chemistry), engineering (including civil, electrical, aeronautics), medicine,

     and so on.  It can be used for system programming, and the facilitites are such that
     it is rarely if ever necessary to resort to machine-language  or assembly-language

     programming to solve problems.
 
     PL/I can be used for commercial data processing, numerical methods, text

     processing, list processing, system programming,  real-time system programming,

     and picture file processing,  to mention a few specific applications.
 
     PL/I has outstanding facilities for commercial and business use.
 
     It has more power than Pascal, Fortran 95, BASIC, C, and COBOL, and has

     comparable facilities to Ada. The main areas where PL/I is superior include

      interrupt  handling, the built-in debugging aids, the macro processor facilities,  

      string-handling, and input-output  (see below for a link to a summary).

     The language has good documenting and self-documenting facilities;  programs

      are easy to read and to understand. It bears some resemblance to Fortran and

      BASIC.
 
     The language is suitable for beginners, as well as for anyone wanting to become a

      professional.  For anyone writing programs, a PL/I compiler is a “must have”.
 
     There’s a summary of what you’ll find in PL/I at:
                   http://www.users.bigpond.com/robin_v/pliwhat.htm
 
(Q2) On what systems is it available?
 
     PL/I is available on at least the following systems:

                          IBM PC and compatibles (80×86).  
                          IBM PL/I for z/OS and Windows.
  It is called “Rational Developer for System z”   (formerly called Websphere PL/I and

  Enterprise PL/I  and VisualAge PL/I).
    http://www-306.ibm.com/software/awdtools/rdz/

     IBM mainframes
     The followng versions are available from IBM:

            IBM Enterprise PL/I for z/OS and OS/390 provides access to DB2, CICS,

            IMS, and other data and transactions systems.
 
     VisualAge PL/I for OS/390 .
      PL/I for MVS & VM .
       PL/I for VSE

       PL/I for VSE/ESA is for MVS & VM

       IBM OS/390 (IBM z/OS) available as Enterprise PL/I.
.
  The current [2007] PL/I for Windows and z/OS is called “Rational Developer
  for System z” .  This is the follow-on product to WDz and WSED.
  For information on this release/product, see:

  http://www-306.ibm.com/software/awdtools/rdz/
.
     HP 9000 HP-UX
  — available from Liant Software Corporation.
  Comes with Codewatch, Liant’s powerful GUI source code
  debugger.
.
     UNIX.
  Older versions of Liant Open PL/I exist for Unix variants,
  sold off-the-shelf with limited support. Users can
  inquire at http://www.liant.com
.
     SPARC Solaris 2.x
  — available from Liant Software Corporation.
  Comes with Codewatch, Liant’s powerful GUI source code
  debugger.
.
     IBM RS/6000 AIX
  — available from Liant Software Corporation (address above);
                    Comes with Codewatch, Liant’s powerful GUI source
      code debugger.
  — also available from IBM as Enterprise PL/I.
.
     Data General AViiON with DG-UX
  — available from Liant Software Corporation
                    Comes with Codewatch, Liant’s powerful GUI source
      code debugger.
.
     HP (formerly Compaq and before that Digital Equipment Corporation) on OpenVMS and Alpha AXP systems (Tru64 Unix)
  —The compilers from Kednos Corporation for these systems
     are called “PL/I for OpenVMS” and “PL/I for Tru64 Unix”
     respectively.  They took over support for PL/I from
     UniPrise.

Very useful tip to automate the task of transmitting a data from one region to another region.

 

To Transmit

 

//XMIT    EXEC PGM=IKJEFT01,DYNAMNBR=20
//DDIN     DD  DISP=SHR,DSN=<your.dataset.to.be.sent>
//DDOUT    DD  DISP=(,CATLG),DSN=<use.this.dataset.if.you.want.to.ftp>,
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=27800),
//             SPACE=(TRK,(15,15)),UNIT=SYSDA
//SYSPRINT DD  SYSOUT=*  
//SYSTSPRT DD  SYSOUT=*
//SYSTSIN  DD  *  
  TRANSMIT NATSTAR +
     NOCOPYLIST +
     DDNAME(DDIN) +
     NOEPILOG +
     NOLOG +
     NONOTIFY +  
     OUTDDNAME(DDOUT) +    
     PDS +
     NOPROLOG
//

 

To Receive

 

//RCVJOB JOB (RECEIVE)
//*                                                                
//*********************************
//*   THIS JCL RE-CREATES A PDS FROM A FILE FORMAT THAT HAS BEEN
//*    TRANFERED THROUGH FTP FROM AN OTHER MACHINE.
//*********************************
//*
//RECV    EXEC PGM=IKJEFT01,DYNAMNBR=20
//DDIN     DD  DISP=SHR,DSN=<your.transmit.dataset>
//SYSPRINT DD  SYSOUT=*
//SYSTSPRT DD  SYSOUT=*
//SYSTSIN  DD  *
  RECEIVE +
     INDDNAME(DDIN) +
     NODISPLAY +
     NONAMES
  DATASET(<’the.dsn.to.create>’)
//    

 Thanks Jantje…..

At the end of April, the New York Stock Exchange unplugged its last running mainframe, the climax of a yearlong migration to Unix and Linux.

By all accounts, the merger has been successful, and performance has improved, said Francis Feldman, the vice president of the shared data center at Securities Industry Automation Corp. (SIAC), the NYSE’s technology arm.

“We’re pushing product out substantially earlier than before … which gives us a greater window to support additional applications,” he said. “We are more than pleasantly surprised with the results.”

That doesn’t mean Feldman is completely tickled about saying goodbye to big iron.

“It’s been a long process and we’re actually here and it’s like, ‘Wow,’” he said. “It’s kind of sad on one hand being an old mainframe hack. But it is a project that came to fruition and we recognize that it’s a positive thing.”

Though migration off mainframes does happen, most mainframe shops stay on a current platform or increase investment in it. In a purchasing decisions survey that SearchDataCenter.com conducted last year, only 8% planned on decreasing their investment in the mainframe in 2007 compared with 2006. Still, plenty of shops have moved off mainframes, usually because of cost issues.

FTP Tips

 

Thanks mark for your tips..

The best way to ensure you always get the file format you want is to use the SITE or LOCSITE commands prior to issuing a GET or PUT in your FTP process. If you are doing a GET from the mainframe you would use LOCSITE prior to the GET. If you were doing a PUT from another platform to the mainframe, you would use the SITE command - which you need to send via “QUOTE SITE”.

Here is an example of doing a GET from an FTP batch job on the mainframe (assume the server is at 172.19.158.100):

//FTP JOB (ACCT),CLASS=A,…
//STEP1 EXEC PGM=FTP,REGION=4M,PARM=’(EXIT’
//SYSPRINT DD SYSOUT=*
//OUTPUT DD SYSOUT=*
//INPUT DD *
172.19.158.100
userid
password
locsite LRECL=80 BLKSIZE=27920 RECFM=FB
locsite CYL PRIMARY=100 SECONDARY=20
binary
get /dir1/dir2/mydata.bin ‘USERID.MY.DATA’
quit
/*

 

Mainframe applications have been criticized for spiraling maintenance costs, the result of a vicious circle of lack of documentation and lack of ability to upgrade, leading to higher costs of maintenance or upgrade right now. At the same time, most enterprises recognize that their existing mainframe applications are business-critical but old, and therefore cannot be leveraged as much as the business would like. Thus, these applications need to be modernized.

Where possible, these applications should be upgraded in place — modified on the mainframe rather than migrating them to a new platform.

Choosing the right approach

Today’s enterprises typically consider four strategies for integrating new technologies with their existing mainframe application suites:

  Upgrade in place. The program and its data are kept on the mainframe, and the developer applies mainframe tools that integrate the new technologies with the mainframe application.

  Migrate. The program’s source or binary code is moved to another platform with little or no change, and the developer applies tools on the new platform to add the new technologies. Note that the application’s data may be moved to the new platform as well, or may remain on the mainframe.

  Regenerate. The program is first reverse engineered, a process that creates an abstracted design model of the application. The application is then regenerated from the design model on the new platform. The new technologies are either embedded as a result of the regeneration process or added once the application is up and running on the new platform (again, the data may remain on the mainframe or can be moved to the new platform).

  Replace. IT discards the existing application and writes an entirely new one, on the mainframe or a new platform. The new technologies are “designed in” to the new application. The new application supposedly incorporates at least the same functionality as the old.

In the past, enterprises tended to choose a replacement strategy if a new technology had to be added; otherwise, they simply left the application as is — the risks of changing a business-critical application in any way were seen as so great, and the difficulties of changing it so daunting, that anything was preferable to touching it at all.

By Jon.

I’ve been thinking a lot recently about the interactions between systems; specifically the nature of batch files versus discreet transactions.

My instinct is to go for business transactions. The question is why. I think my rationale is as follows

  • The business transaction is more likely to either successful or not. A batch has more chances to fail in ways not easily recoverable. If a transaction fails I can generally design the system so that it can process other transactions without having to wait for the failed one to complete.
  • I can process one transaction at a time, or many in parallel. Batch has to be done completely and in sequence
  • We used the batch approach in the first place because it was more efficient. We could take out table level locks and optimise processing. There is a law of software design that says that the more efficient you make something, the more inflexible it becomes. Data processing is getting cheaper but flexibility is getting more expensive. The economics have changed since we were all writing COBOL on the mainframe (although let’s not forget that many of us still are)
  • Fundamentally, the business transactions approach matches more closely what the business understands, hence any changes that the business are likely to come up with are likely to be better served with the business transaction approach

So in summary we did batch because we had to. If we don’t need to any more then let’s use the approach that better supports our customer.

« Newer Posts - Older Posts »