Concentrating on Application programs and Technologies for the development of Mankind.
Tuesday, 31 December 2013
Monday, 30 December 2013
To compare two Datasets
IEBCOMPR
-> Compare one PDS to another-> Compare one sequential dataset to another sequential dataset on a record by record basis.
Sample program:
//JOBCARD//STEP1 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//FILE1 DD DSN=FILE.NAME1,DISP=SHR
//FILE2 DD DSN=FILE.NAME2,DISP=SHR
//SYSIN DD*
COMPARE TYPORG=PO
/*
//
Utility program IEBGENER
This utility program :
Copies sequential data set from one device to another.Sample program:
System Utility Programs
Used to maintain and manipulate system and user data
-> Maintain libraries and catalog entries.-> initiate volumes
-> volume and data set backup
-> List VTOC, directories and catalog
Programs:
-> IEHATLASRecovers data from damage disk volumes, attempts to write on the defective track and reads back the data return.
-> IEHINITT
Applies volume label and tape mark to a tape used by the operations personnel.\
-> IEHLIST
List the entries in the directory of a partitioned dataset created by the linkage editor.
-> IEHMOVE
Copies or move sequential, partitioned or direct datasets.
-> IEHPROGM
Scratches the data set residing on direct-access volumes.
-> IFHSTATR
Saturday, 28 December 2013
JCL to copy PS data to GDG
//SORT1 EXEC PGM=SORT
//SORTIN DD DSN=FILE.INPUT.PS,DISP=SHR
//SORTOUT DD DSN=FILE.OUTPUT.GDG(+1),
// DISP=(NEW,CATLOG,DELETE),
// DCB=(LRECL=(length of PS file),RECFM=FB,BLKSIZE=0)
//SYSIN DD *
SORT FIELDS=COPY
//SYSOUT DD SYSOUT=*
Sunday, 22 December 2013
Mainframe with Mobile
Due to emerging high range mobile applications, there is a chance
to integrate mobile with Mainframe.
Why small device with high end compute(Mainframe)? Because just
think of Million of mobiles getting connected with Mainframe accessing the
resource and database.
It is possible to connect Mobile and Mainframe and we can access
our mobile with high rate of efficiency and data transfer. Please refer the
link below to know more about IBM worklight which is a kind of
application developed by IBM for mobile purpose:
Also there is an option in CICS to develop a GUI for mobile users.
Please refer the link below for more details.
So there are more possibilities to make a better mobile experience
with the most secured and more powerful computing device.
Please contact me if you have a better knowledge or better options
for this development.
Sending data in Mainframe through SFT
To remove trailing space
MOVE 0 TO TRAIL-SPACE-VAR.
MOVE 0 TO TEMP-VAR.
INSPECT FUNCTION REVERSE(VAR1) TALLYING TRAIL-SPACE-VAR FOR LEADING SPACES.
COMPUTE TEMP-VAR = LENGTH OF VAR1 - TRAIL-SPACE-VAR.
ADD 1 TO TRAIL-SPACE-VAR
STRING VAR1(TRAIL-SPACE-VAR:TEMP-VAR) DELIMITED BY SIZE
VAR-END DELIMITED BY SIZE
INTO REC.
PERFORM WRITE-PARA.
To remove leading spaces
MOVE 0 TO LEAD-SPACE-VAR.
MOVE 0 TO TEMP-VAR.
INSPECT VAR1 TALLYING LEAD-SPACE-VAR FOR LEADING SPACES.
COMPUTE TEMP-VAR = LENGTH OF VAR1 - LEAD-SPACE-VAR.
ADD 1 TO LEAD-SPACE-VAR
STRING VAR-FRONT DELIMITED BY SIZE
VAR1(LEAD-SPACE-VAR:TEMP-VAR) DELIMITED BY SIZE
INTO RECORD-VAL.
PERFORM WRITE-PARA.
Sunday, 1 September 2013
Sample program to compare two input files and write to output file
PROGRAM-ID. PROG004.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INFILE1 ASSIGN TO DD1
ORGANIZATION SEQUENTIAL
ACCESS SEQUENTIAL
FILE STATUS INFS1.
SELECT INFILE2 ASSIGN TO DD2
ORGANIZATION SEQUENTIAL
ACCESS SEQUENTIAL
FILE STATUS INFS2.
SELECT OUTFILE ASSIGN TO DD3
ORGANIZATION SEQUENTIAL
ACCESS SEQUENTIAL
FILE STATUS OUTFS.
DATA DIVISION.
FILE SECTION.
FD INFILE1.
01 FS-INREC1.
88 IN1-EOF VALUE HIGH-VALUES.
05 FS-ID PIC 9(3).
05 FILLER PIC X(1).
05 FS-NAME PIC X(25).
05 FILLER PIC X(1).
05 FS-CLASS PIC X(5).
05 FILLER PIC X(45).
FD INFILE2.
01 FS-INREC2.
88 IN2-EOF VALUE HIGH-VALUES.
05 IS-ID PIC 9(3).
05 FILLER PIC X.
05 IS-SUB1M PIC 9(3).
05 FILLER PIC X.
05 IS-SUB2M PIC 9(3).
05 FILLER PIC X.
05 IS-SUB3M PIC 9(3).
05 FILLER PIC X.
05 IS-SUB4M PIC 9(3).
05 FILLER PIC X.
05 IS-SUB5M PIC 9(3).
05 FILLER PIC X.
05 IS-SUB6M PIC 9(3).
05 FILLER PIC X(53).
FD OUTFILE.
01 FS-OUTREC.
05 OS-ID PIC 9(3).
05 FILLER PIC X.
05 OS-NAME PIC X(25).
05 FILLER PIC X.
05 OS-CLASS PIC X(5).
05 FILLER PIC X.
05 OS-TOTAL PIC 9(3).
05 FILLER PIC X.
05 OS-GRADE PIC X(2).
05 FILLER PIC X(38).
WORKING-STORAGE SECTION.
77 INFS1 PIC XX.
77 INFS2 PIC XX.
77 OUTFS PIC XX.
01 TOTAL-M PIC 9(3).
01 AVG-M PIC 9(3).
01 GRADE-M PIC X(2).
01 STUDMRK1 PIC 9(2).
01 STUDMRK2 PIC 9(2).
01 STUDMRK3 PIC 9(2).
01 STUDMRK4 PIC 9(2).
01 STUDMRK5 PIC 9(2).
01 STUDMRK6 PIC 9(2).
EXEC SQL
INCLUDE STUDBLE
END-EXEC.
EXEC SQL
INCLUDE SQLCA
END-EXEC.
EXEC SQL
DECLARE CUR_STU CURSOR FOR SELECT STUD_ID,STUD_NAME,
STUD_CLASS,STUD_MRK1,
STUD_MRK2,STUD_MRK3,STUD_MRK4,STUD_MRK5
STUD_MRK6 FROM OZA062.STUDBLE
END-EXEC.
PROCEDURE DIVISION.
*** MAIN PARA IS SUSED TO DIRECT THE FLOW FOR THE PROGRAM IN ***
*** RIGHT DIRECTION ***
001-MAIN-PARA.
PERFORM 002-OPEN-PARA.
PERFORM 003-READ-PARA UNTIL IN1-EOF.
PERFORM 009-CLOSE-PARA.
*** OPEN PARA WHERE ALL THE FLAT FILES ARE OPENED ***
002-OPEN-PARA.
OPEN INPUT INFILE1.
IF INFS1 NOT = '00'
DISPLAY "ERROR IN OPEN INFILE1 : " INFS1
PERFORM 009-CLOSE-PARA
END-IF.
OPEN INPUT INFILE2.
IF INFS2 NOT = '00'
DISPLAY "ERROR IN OPEN INFILE2 : " INFS2
PERFORM 009-CLOSE-PARA
END-IF.
OPEN OUTPUT OUTFILE.
IF OUTFS NOT = '00'
DISPLAY "ERROR IN OPEN OUTFILE : " OUTFS
END-IF.
EXEC SQL
OPEN CUR_STU
END-EXEC.
IF SQLCODE NOT = 0 THEN
DISPLAY "ERROR IN OPEN CURSOR" SQLCODE
END-IF.
*** READ PARA IS USED TO READ THE FIRST INFILE TO CHECK ***
003-READ-PARA.
READ INFILE1 AT END PERFORM 005-FETCH-PARA.
IF INFS1 NOT = '00' THEN
DISPLAY "ERROR IN READING INFILE1: " INFS1
PERFORM 009-CLOSE-PARA
ELSE
PERFORM 031-CHECK-PARA
END-IF.
*** CHECK PARA IS TO CHECK WEATHER THE FILE IS IN FILE2 ***
031-CHECK-PARA.
READ INFILE2 AT END SET IN2-EOF TO TRUE
NOT AT END
IF FS-ID = IS-ID THEN
DISPLAY "INSERT PROCEED"
PERFORM 004-INSERT-PARA
ELSE
DISPLAY "FILE NOT MATCH"
PERFORM 032-LCHECK-PARA
END-IF.
*** LCHECK PARA IS TO CHECK WEATHER THE FILE IS PRESENT OR NOR ***
032-LCHECK-PARA.
READ INFILE2 PERFORM UNTIL FS-ID = IS-ID
END-PERFORM.
IF FS-ID = IS-ID THEN
DISPLAY "FILE FOUND AT LCHECK"
PERFORM 004-INSERT-PARA
ELSE
DISPLAY "FILE IS NOT PRESENT"
END-IF.
*** HERE THE VALUES ARE INSERTED IN DATABASE TABLE ***
004-INSERT-PARA.
MOVE FS-ID TO STUD-ID.
MOVE FS-NAME TO STUD-NAME.
MOVE FS-CLASS TO STUD-CLASS.
MOVE IS-SUB1M TO STUD-MRK1.
MOVE IS-SUB2M TO STUD-MRK2.
MOVE IS-SUB3M TO STUD-MRK3.
MOVE IS-SUB4M TO STUD-MRK4.
MOVE IS-SUB5M TO STUD-MRK5.
MOVE IS-SUB6M TO STUD-MRK6.
EXEC SQL
INSERT INTO OZA062.STUDBLE VALUES(:STUD-ID,:STUD-NAME,
:STUD-CLASS,:STUD-MRK1,:STUD-MRK2,:STUD-MRK3,
:STUD-MRK4,:STUD-MRK5,:STUD-MRK6)
END-EXEC.
IF SQLCODE NOT = 0 THEN
DISPLAY "ERROR SQLCODE: " SQLCODE
PERFORM 009-CLOSE-PARA
ELSE
DISPLAY "INSERT SUCCESS"
END-IF.
*** FETCH PARA IS USED TO FETCH THE VAUES FROM THE TABLE ***
005-FETCH-PARA.
EXEC SQL
FETCH CUR_STU INTO :STUD-ID,:STUD-NAME,:STUD-CLASS,
:STUD-MRK1,:STUD-MRK2,:STUD-MRK3,:STUD-MRK4,
:STUD-MRK5,:STUD-MRK6
END-EXEC.
IF SQLCODE = 0 THEN
DISPLAY "FETCH SUCCESS"
MOVE STUD-MRK1 TO STUDMRK1
DISPLAY STUDMRK1
MOVE STUD-MRK2 TO STUDMRK2
MOVE STUD-MRK3 TO STUDMRK3
MOVE STUD-MRK4 TO STUDMRK4
MOVE STUD-MRK5 TO STUDMRK5
MOVE STUD-MRK6 TO STUDMRK6
PERFORM 006-CALC-PARA
ELSE
DISPLAY "ERROR IN FETCH PARA"
PERFORM 009-CLOSE-PARA
END-IF.
*** CALC PARA IS USED TO CALCULATE THE VALUES FOR GRADE ***
006-CALC-PARA.
IF STUDMRK1 > 35 AND STUDMRK2 > 35 THEN
IF STUDMRK3 > 35 AND STUDMRK4 > 35 THEN
IF STUDMRK5 > 35 AND STUDMRK6 > 35 THEN
DISPLAY "WRITE PARA"
PERFORM 007-WRITE-PARA
ELSE
DISPLAY "CALCULATION STARTED"
PERFORM 005-FETCH-PARA
END-IF
ELSE
PERFORM 005-FETCH-PARA
END-IF
ELSE
PERFORM 007-WRITE-PARA
END-IF.
* EVALUATE STUD-MRK1 >= 35 ALSO STUD-MRK2 >= 35 ALSO
* STUD-MRK3 >= 35 ALSO STUD-MRK4 >= 35 ALSO
* STUD-MRK5 >= 35 ALSO STUD-MRK6 >= 35
* WHEN TRUE ALSO TRUE ALSO TRUE ALSO TRUE ALSO TRUE
* ALSO TRUE PERFORM 007-WRITE-PARA
* WHEN OTHER PERFORM 005-FETCH-PARA
* END-EVALUATE.
*** WRIRE PARA HERE THE VALUES ARE WRITTEN INTO THE OUFILE ***
007-WRITE-PARA.
DISPLAY "WRITING STARTED".
COMPUTE TOTAL-M = STUDMRK1 + STUDMRK2 + STUDMRK3 +
STUDMRK4 + STUDMRK5 + STUDMRK6.
COMPUTE AVG-M = TOTAL-M / 6.
EVALUATE AVG-M
WHEN 35 THRU 60 MOVE 'C' TO GRADE-M
WHEN 61 THRU 70 MOVE 'B' TO GRADE-M
WHEN 71 THRU 90 MOVE 'A' TO GRADE-M
WHEN 91 THRU 100 MOVE 'A+' TO GRADE-M
END-EVALUATE.
MOVE STUD-ID TO OS-ID.
MOVE STUD-NAME TO OS-NAME.
MOVE STUD-CLASS TO OS-CLASS.
MOVE TOTAL-M TO OS-TOTAL.
MOVE GRADE-M TO OS-GRADE.
WRITE FS-OUTREC.
PERFORM 005-FETCH-PARA.
*** HERE THE END OF FILE AND TABLE ***
009-CLOSE-PARA.
EXEC SQL
CLOSE CUR_STU
END-EXEC.
CLOSE INFILE1 INFILE2 OUTFILE.
STOP RUN.
Saturday, 15 June 2013
Important tables in CICS
Define application programs and BMS maps in this table. We define program names in this table to make CICS to identify programs.
PCT - Program Control Table
Define TransactionID (1 to 4 characters) eg: "A054" for main program which executes input data comming from front end or other source. Here we give program name and corresponding TransactionID by which this program can get executed.
When user enters TransID on the terminal, CICS checks this table to get the corresponding program to be executed.
FCT - File Control Table
Define files used in the CICS program.
All the files being used in our programs needs to be registered in this table.
TST - Temporary Storage Table
Define TSQ's used in CICS program.
DCT - Destination Control Table
Define TDQ's used in CICS program.
RCT - Resource Control Table
Define DB2 plan details that are created during the compile and execution of the source program.
Difference between Plan & Package
Both contain optimized code for SQL statements - a package for a single program, module or subroutine contained in the data base request module (DBRM) library. A plan may contain multiple packages and pointers to packages.
A plan is an executable module containing the access path logic produced by the DB2 optimizer. It can be composed of one or more DBRMs and packages. Before a DB2 for Z\OS program(with static SQL) can be run, it must have a plan associated with it.
Plans are created by the BIND command. The plan is stored in the DB2 directory and accessed when its program is run. Information about the plan is stored in the DB2 catalog.
A package is a single, bound DBRM with optimized access paths. By using packages, the table access logic is "packed" at a lower level of granularity than a plan--at the package(or program) level.
To execute a package, you first must include it in the package list of a plan. Packages are not directly executed, they are only indirectly executed when the plan in which they are contained executes--as discussed previously, UDFs and triggers are execeptions to this rule. A plan can consist of one or more DBRMs, one or more packages or, a combination of packages and DBRMs.
COBOL-DB2 compilation process
- It checks the SQL in the program for errors.
- It adds working storage areas and source code compatible statements that are used to invoke DB2. One of the working storage areas contains a literal "timestamp" called a consistency token.
- Finally, all the SQL statements are extracted from the program source and places into a member called the DataBase Request Module(DBRM), which also contains the consistency token.
Thursday, 16 May 2013
COMP and its types in COBOL
COMP .
It is a Binary storage format. In most significant bit, Bit is on if -ve, off if +ve.no of bytes in COMP = (n/2)
Data Length Length in COBOL
S9(1) to S9(4) 2 bytes
S9(5) to S9(9) 4 bytes
S9(10) to S9(18) 8 bytes
For example: S9(8) COMP occupy how many bytes. = 4 bytes
COMP-1 and COMP-2.
COMP-1 - Single precision floating point. Uses 4 byteCOMP-2 - Double precision floating point. Uses 8 byte.
here for COMP-1 and COMP-2 no PIC clause is given
for example: 01 WS-VAL USAGE COMP-1.
01 WS-VAL USAGE COMP-2.
COMP-3.
COMP-3 is an packed decimal format.Packed decimal format: Sign stored as a HEX value in the last nibble (4bits) of the storage.
In COMP-3 the sign is stored in last nibble. For example if your number is +100, it stores HEX 0C in the last byte same if the number is -102 then HEX 2D.
General formula for COMP-3 is INT((n/2)+1)
for example: if S9(7) COMP-3 will take 4 bytes
here n=7 so INT((7/2)+1) = 4 byte
COMP-4.
Same as COMP.Types of level in COBOL....
Level Numbers available are
77 level
Elementary level item. Cannot be subdivisions of other items (cannot be qualified), nor can they be subdivided themselves.Syntax:
77 VAL PIC X(4).
88 level
01-49 LEVEL.
66 level.
It is used for regrouping of elementary data items in a record. It should be declared at 66 level.
05 WS-NAME PIC X(03).
05 WS-VALUE PIC X(04).
66 ADD-NAME RENAMES WS-NAME.
Most common and most frequently and very Basic question asked in many interviews.....
Divisions in COBOL.
There are 4 divisions in COBOL. They are
1. IDENTIFICATION DIVISION
2. ENVIRONMENT DIVISION
3. DATA DIVISION
4. PROCEDURE DIVISION.
Different data types in COBOL.
There are 3 data types in COBOL. They are
1. Numeric ( 9() )
2. Alpha-Numeric ( X() )
3. Alphabetic ( A() )
FAQ File handling error codes in COBOL
1 when at END condition fails
10 - end of file2 This error will occur when Index key Fails
22 - Duplicate key23 - Record not found
3 permanent Open Error Occurs
35 - Open statement attempted on a non-optional file that was not present.37 - Open statement attempted on a file that would not support open mode.
39 - Mismatch in LRECL or BLOCKSIZE or RECFM between your COBOL pgm & the JCL.
4 Logic Error in Opening / Closing / Deleting etc
9 Implementator Defined
92 - Logic error93 - VSAM resource not available
Types of perform in COBOL.....
in an in-line perform the paragraph name is omitted and it should be delimited by the END-PERFORM phrase.
syntax:
PROCEDURE DIVISION.
PERFORM .......
STATEMENT 1
.... 2
.... 3
END-PERFORM.
Here all the statements under the perform will get executed till the END-PERFORM phrase is reached.
The PERFORM statement formats are:
1. Basic PERFORM
2. TIMES phrase PERFORM
3. UNTIL phrase PERFORM
4. VARYING phrase PERFORM
Basic PERFORM.
PERFORM para-1 thru para-2
PERFORM
imperative statement
END-PERFORM.
PERFORM with UNTIL phrase
PERFORM procedure-1 thru procedure-2 until condition-1.
If the condition is true the PERFORM statement is initiated, the specified procedures are not executed.
PERFORM with VARYING phrase
PERFORM para-1 thru para-3 varying N from 1 by 1 until N > 5.
In the above example Para-1 thru Para-3 will be executed 5 times.
DD statement with parameter explanation...
DD STATEMENT :
The DD statement (Data Definition), is used to identify the source of input
and the placement of output information
Syntax -> //ddname DD < positional / keyword parameters >
ddname must be unique in the job
Positional parameters - *
DATA
DUMMY
DYNAM
Keyword Parameters - DSN
DISP
UNIT
SPACE
DCB
VOLUME
Wednesday, 15 May 2013
How to CREATE GDG and use it in next step...?
//STEP1 EXEC PGM=IEFBR14
//DD1 DD DSN=CMAP054.TEST.GDGROUP(+1),
// DISP=(NEW,CATLG,DELETE),
// SPACE=(TRK,5),
// DCB=(LRECL=80,RECFM=FB,BLKSIZE=800)
//STEP2 EXEC PGM=IEBGENER
//SYSUT1 DD DSN= INPUT DATASET NAME,DISP=SHR
//SYSUT2 DD DSN= CMAP054.TEST.GDGGROUP(+1),DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
/*
//
Explanation for COND=ONLY and COND=EVEN in JCL....
if you mentioned this option in a step, that particular step will execute ONLY when there is an ABEND. ( IF YOU MENTIONED THIS OPTION IN A STEP,THAT
PARTICULAR STEP WILL EXECUTE ONLY WHEN THE PRIOR STEP GETS ABENDED. )
COND=EVEN
this particular step will execute either ABEND or not. (MEANS IF THE PREVIOUS STEP EXECUTED SUCCESSFULLY OR NOT THAT PARTICULAR STEP WILL GET EXECUTED SUCCESSFULLY. )
Syntax:
//----- JOB CARD------
//STEP1 EXEC PGM=TEST1
//
//
//STEP2 EXEC PGM=TEST2,COND=ONLY
//
//
In the above program uses COND=ONLY here the STEP2 executes only if the STEP1 gets abend.....
//------- JOB CARD ------
//STEP1 EXEC PGM=TEST1
//
//
STEP2 EXEC PGM=TEST2,COND=EVEN
//
//
In the above program uses COND=EVEN here the STEP2 executes even if the STEP1 gets abend or successful.....
DD statements Meaning, Syntax.....
ddname coded within the executing program. It links the
files within the program code to the filenames known to the
MVS Operating system. The syntax is:
//DDANAME DD DSN=NAME,
// DISP=(NEW,CATLG,DELETE),
// DCB=(DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=800),
// SPACE=(CYL,(20,5),RLSE),
// UNIT=SYSDA
DSN- Name of the dataset- separated by periods, each name 1
to 8 characters, total 44 chars including periods.
DISP- It specifies the disposition of the dataset.
DISP=(status,normal-disposition,abnormal-disposition)
Status – The statuses NEW,MOD,OLD,SHR are the status of the
dataset at the beginning of the step.
NEW is given to create a new dataset. It is the default if
anything is not coded.
OLD designates an existing dataset with exclusive control.
SHR designates an existing dataset without exclusive
control.
MOD is used to extend the dataset if it exists or to create
a new one if it does not exist.
Normal-disposition- It directs the system on the
disposition of the data set (pass, keep, catlg, uncatlg,
delete) when the step ends normally.
Abnormal-disposition- It directs the system on the
disposition of the data set (keep, catlg, uncatlg, delete)
when the step ends abnormally.
DCB- Physical characteristics of a Data Set are described
by DCB Parameters. These parameters must be coded for newly
created data set as well as for existing Datasets.
• LRECL=n (VALUE IN BYTES)
• RECFM=(F/FB/V/VB/U)
• BLKSIZE= multiple of LRECL
• DSORG=(PS/PO/DA)
PO: specifies a partitioned Organization, DA: specifies a
direct organization.
SPACE=(space units,
(primary,secondary,dir),RLSE,CONTIG,MXIG,ROUND)
space unit - TRK(tracks)/CYL(cylinders)/BLOCKSIZE in bytes.
In our above example it allocates 20 cycles primary and if
required allocates 5 secondary cycles.
RLSE- Request to release the space that is primarily
allocated if unused.
VOL parameter is primarily used for tapes. A volume is the
portion of the storage device served by one read/write
mechanism. To request specific volumes, we code
VOL=SER=volume for one volume or VOL=SER=(volume, volume…)
for multiple volumes. Volume serial numbers are one to six
characters.
SYSOUT parameter is used to route the output to a device.
// DDNAME DD SYSOUT=CLASS
How to count no of records in file using JCL...?
Using JCL we can count number of files in a record using a tool called ICETOOL in DFHSORT.
This sample program is used to count number of records in input data set given in IN dd name:
//S1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD DSN=... INPUT DATA SET....,DISP=SHR
//TOOLIN DD *
COUNT FROM(IN)/*
//
How do you define a table/array in COBOL?
01 ARRAYS.
05 ARRAY1 PIC X(9) OCCURS 10 TIMES.
05 ARRAY2 PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEX.
Code for Program to use multiple array in Cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. ARR.
DATA DIVISION.
01 ARR1.
02 A OCCURS 3 TIMES.
03 A1 OCCURS 3 TIMES.
05 TEMP PIC 99.
01 I PIC 9.
01 J PIC 9.
PROCEDURE DIVISION.
BEGIN.
PERFORM VARYING I FROM 1 BY 1 UNTIL I>3
PERFORM VARYING J FROM 1 BY 1 UNTIL J>3
ACCEPT TEMP (I,J)
END-PERFORM
END-PERFORM.
PERFORM VARYING I FROM 1 BY 1 UNTIL I>3
PERFORM VARYING J FROM 1 BY 1 UNTIL J>3
DISPLAY TEMP (I,J) WITH NO ADVANCING
END-PERFORM
DISPLAY " "
END-PERFORM.
STOP RUN.
Ellison aims his first Oracle 'mainframe' at Big Blue....
Larry Ellison has launched the first mainframe-class machine that he can correctly say he made sure came to market, and now he is going to take a run at IBM's mainframe and Unix server businesses.
What's more, it looks like he will to be able to make some credible arguments as to why customers running Oracle software – and indeed any mission-critical app that runs on any Unix – will run better on the new Sparc T5 and M5 servers.
Oracle announced the new Sparc servers at an event in San Francisco today, and El Reg already gave you the feeds and speeds on the new T5 and M5 processors and their respective systems. At that event, Ellison touched on some of the salient characteristics of the new servers, but he spent most of his time explaining how Oracle would keep the pedal to the metal, pushing performance even further after taking the lead from Intel and IBM in terms of throughput-per-processor and bang-for-the-buck against IBM's Power Systems lineup.
Ellison lovingly pats his first Oracle mainframe
At first blush, it seems a bit peculiar that Ellison should care so much about hardware – but maybe not.
When Ellison cofounded Oracle decades ago with Bob Miner, IBM mainframes and DEC VAXes were the main machines people used in commercial computing. And Oracle has always run its software on IBM mainframes and is well acquainted with their virtues: security, I/O throughput, reliability – and their excessive costs.
Ellison paid $7.6bn to buy Sun Microsystems a little more than three years ago to get Java and Solaris, but also to get hardware engineers who could build systems that would push back against the onslaught of IBM in the Unix space. And contrary to lots of talk, Ellison has maintained his commitment to both Sparc and x86 iron. Ellison likes to build and control his entire stack, and Sparc processors and systems let him do that.
When you are a multi-billionaire, you can indulge.
The Sparc T Series chips have more threads than any other processor out there, to be sure, but they have not been very good at raw, single-threaded, integer workloads. The situation got better with the Sparc T4, and it has apparently got quite a bit better with the Sparc T5 – and, presumably, its Sparc M5 "mainframe-class" big brother.
"These machines deliver better integer performance than the IBM Power series," proclaimed Ellison. "The T5 microprocessor itself delivers better integer performance than IBM's PowerPC chip. Now that is really extraordinary, because IBM has had that lead for a very, very long time for integer rate performance, but that lead now moves over from IBM Power to Sparc T5.
"A lot of people are surprised by this," continued Ellison. "When Oracle bought Sun, a lot of people thought the Sparc microprocessor was a real laggard. There were a lot of people who believed that we would never catch up. Well, we have done better than catch up. We caught up, and then we passed the competition. We passed x86 and we passed IBM Power."
Larry Ellison's CPU roadmap throwdown to Intel and IBM
But, Ellison said, playing catch-up is easier than trying to go and double performance again as it has done with the Sparc T3 to T4 to T5. So what is Oracle going to do for an encore? Add database, Java, and other accelerators to its chips to make its software run faster, and free up those Sparc processor cores to do other tasks. Just like it added vector math units and encryption/decryption units to chips, Oracle is going to add database and Java accelerators.
Here's one example of a kind of database search acceleration that Oracle will cook into its processors in 2014:
Oracle is going to accelerate database functions directly on Sparcs
In this example, you want to extract a range of matching data from the database. So you load the data into main memory and the processor runs the database algorithms to make the comparisons to find matches. When you find a match, you save it, and when you don't find a match, you ignore it. The processor cores are obviously busy through this whole process. Now, etch that database search function in the chip. You drop the data you are searching for into a buffer and the database search accelerator looks through the entire database without invoking the processor at all.
"We think that this will give us a greater and greater advantage going forward," Ellison said.
It doesn't hurt that Oracle owns some of the most popular systems software in the world, so it has customers who will be eager for these accelerated functions even if they are probably getting nervous about vendor lock-in. But that said, with Oracle claiming up to a factor of 10X improvement in bang-for-the-buck versus IBM's Power Systems machines, it's already trying to claim it has a huge lead in value. The question is, can Oracle start penetrating IBM accounts, particularly those that used to be Sun accounts? That remains to be seen.
But with the kind of numbers that Ellison was throwing around at Tuesday's event, you can bet a lot more CIOs and CFOs are going to listen. Ellison claimed that the new Sparc M5-32, which has 32 sockets using six-core M5 chips and scales up to 32TB of memory in a single rack, offers three times the bang-for-the-buck compared to IBM's top-end Power 795 system, and has an order of magnitude better value-for-dollar compared to the high-end Sparc Enterprise M9000 machines from Fujitsu, which are indeed several years long in the tooth.
Of course, the real question is how the Sparc T5 machines stack up against x86 systems in terms of price/performance – and Ellison didn't have a single thing to say about that. Larry & Co. are obsessed with taking share back from Big Blue in the midrange and high-end of the Unix market. ®
CICS commands....
CDBC - CICS DataBase Control menu.
CDBI - CICS DataBase control Inquiry.
CDBM - CICS DataBase control interface Menu.
CEBR - CICS Enhanced temporary storage BRowse.
CEBT - CICS Enhanced Basic Terminal transaction.
CECI - CICS Enhanced Command-level Interpreter.
CEDA - CICS Enhanced resource definition online Application.
CEDF - CICS Enhanced execution Diagnostic Facility.
CEMT - CICS Enhanced Master Terminal transaction.
CEOT - CICS Enhanced Online Terminal status.
CESF - CICS Enhanced Sign-oFf.
CESN - CICS Enhanced Sign oN.
CEST - CICS Enhanced supervisory terminal.
CETR - CICS Enhanced trace control.
CLER - CICS Language Environment Run-time options.
CMAC - CICS Messages And Codes display.
CMSG - CICS MesSaGe switching.
CRTE - CICS Remote Transaction Executables.
CSPG - CICS PaGe retrieval.
CWTO - CICS Write To console Operator.
JCL to copy VSAM files to ps .....
//----- JOB CARD ------
//STEP1 EXEC PGM=IDCAMS
//DD1 DD DSN=PS.NAME
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD*
EXPORT -
CLUSTER.NAME -
OUTFILE(DD1) -
PERMANENT -
INHIBITSOURCE -
INHIBITTARGET
/*
//
Tuesday, 14 May 2013
IBM announced its first quarter earnings for 2013 ...
IBM announced its first quarter earnings
for 2013 , reiterating its earnings guidance
for the year. Bearing in mind my previous
cautions about not reading too much into
one quarter or into one segment of the
global mainframe ecosystem, IBM's
zEnterprise server business performed
quite well, growing 7% year over year
(8% at constant currency). Any growth in
the server business these days is highly
likely to be a marketshare gain, and so it
was with zEnterprise. Yes, that's correct:
IBM mainframes are gaining substantial
marketshare in the server market.
IBM's CFO added a few comments to give
some color to that performance. One
comment was that "MIPS" deliveries
galloped ahead faster (27%) than the
growth in revenue, so that means
customers continue to enjoy progressively
lower prices when they buy mainframe
capacity. He also pointed out that
speciality engines are continuing to
perform well, too, reinforcing the fact
that mainframe customers continue to
place new applications on mainframes at a
brisk pace. And he mentioned that
several large mainframe sales got pushed
into the second quarter, perhaps due to
the unusual timing of the Easter holiday,
so IBM is expecting a further increase to
double digit zEnterprise growth in the
second quarter.
Overall, though, IBM's hardware business
had a tough quarter. One surprise (to me,
anyway) was IBM's Power server business
which declined 32 percent. There were
several comments about that statistic.
One is that IBM is overwhelmingly #1 in
the UNIX server market and still probably
gained marketshare — that gives you
some idea how horribly Oracle/Sun and
HP are doing in the same market
segment. Also, IBM had a somewhat
tepid quarter in their so-called "growth
markets," and 20% or more of IBM's
business in those markets is hardware, a
lot of which is Power-based. There were
also some model cycle effects as Power
servers are transitioning to POWER7+
processors. IBM said they'll be increasing
their efforts to promote Linux on Power
in order to try to win a greater share of
the Linux server market to add to their
dominance in the UNIX market.
IBM's CFO noted that the PureSystems
are doing quite well. In fact, IBM's CFO's
comments would indicate they're selling
in much greater numbers than the Oracle
"Exa" systems, probably because they're
more open and flexible, providing direct
support for a much wider range of
industry applications while also delivering
the benefits of integration. (The new IBM
PureData System for Analytics, featuring
Netezza technology, is the PureSystem
model most relevant to zEnterprise
customers.) However, the growth spots in
the quarter (zEnterprise and
PureSystems) were not enough to offset
the overall decline (14%, excluding IBM's
divested Retail hardware segment) in
IBM's total hardware business.
In his comments to analysts, IBM's CFO
pointed out how storage is changing, with
more content and value in the software
used to manage storage. (IBM's storage
software business was up more than 10%,
he pointed out.) To which I would add
that trend is true for all types of
hardware, and I've mentioned that
before. It doesn't mean you can't do
without hardware — far from it — but
getting the combination right is critically
important, and how you do the
accounting is much less important.
Likewise, I would caution cost-focused IT
organizations (which is almost all of them)
not to concentrate much on hardware
costs. The other parts of IT, notably
staffing, continue to increase as a share of
spending. Ignore those and your bottom
line is in peril.
Chance to become a good COBOL programmer ...!
David Brown is worried. As managing
director of the IT transformation group at
Bank of New York Mellon, he is
responsible for the health and welfare of
112,500 Cobol programs, 343 million
lines of code, that run core banking and
other operations. But many of the people
who built that code base, some of which
goes back to the early days of Cobol in
the 1960s, will be retiring over the next
several years.
"We have people we will be losing who
have a lot of business knowledge. That
scares me," Brown says. He's concerned
about finding new Cobol programmers,
who are expected to be in short supply in
the next five to ten years. But what really
keeps him up at night is the thought that
he may not be able to transfer the deep
understanding of the business logic
embedded within the bank's programs
before it walks out the door with the
employees who are retiring.
More than 50 years after Cobol came on
the scene, the language is alive and well
in the world's largest corporations, where
it excels at executing large scale batch
and transaction processing operations on
mainframes. The language is known for its
scalability, performance and mathematical
accuracy. But as the Boomer generation
prepares to check out of the workforce, IT
executives are taking a fresh look at their
options.
Sunday, 12 May 2013
SSRANGE, NOSSRANGE
suppose we have 10 records in a table and tries to read 11th record then the job will abend, to avoid this we need to give compiler option ssrange.
DELAY intervel
* The issuing task is suspended for a specified intervel or Until the specified time.
syntax:
EXEC CICS DELAY
INTERVEL(hhmmss) | TIME(hhmmss)
END-EXEC.
eg:
EXEC CICS DELAY
INTERVEL (002015)
END-EXEC.
The task will be suspended for 20 mins and 15 secs.
EXEC CICS DELAY
TIME (153000)
END-EXEC.
The task will be suspended until 15:30:00
Sample program in CICS to DISPLAY Date and Time.
PROGRAM-ID. PROG005.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ASK-TIME PIC S9(15) COMP-3.
01 ASK-TIME1 PIC X(80) VALUE SPACES.
01 ASK-DATE1 PIC X(80) VALUE SPACES.
01 W-LEN PIC S9(4) COMP.
PROCEDURE DIVISION.
EXEC CICS ASKTIME
ABSTIME(ASK-TIME)
END-EXEC.
EXEC CICS FORMATTIME ABSTIME(ASK-TIME)
YYYYMMDD(ASK-DATE1)
DATESEP('-')
TIME(ASK-TIME1)
TIMESEP
END-EXEC.
MOVE 72 TO W-LEN.
EXEC CICS SEND TEXT
FROM(ASK-DATA1)
LENGTH(W-LEN)
ACCUM ERASE
END-EXEC.
EXEC CICS SEND PAGE END-EXEC.
EXEC CICS RETURN END-EXEC.
XCTL explanation and syntax...
* Program passing control is terminated.
* Transaction ID does not change.
* Control is passed at the same logical level.
* Program that transfers control is released.
* when the program that is to receive control is not resident in main storage, it is loaded by CICS
syntax:
EXEC CICS XCTL
program ( program name )
Commarea ( data-area )
Length ( data-value )
END-EXEC.
LINK explanation and syntax...
* Program is not terminated.
* Data passed to the lower program through the commarea area option is passed by reference. i.e any
modification done in the subroutine is reflected in the main program.
* Handle conditions, Attention Identifiers and abends are not transferred with the execution of the CICS command and any in effect are restored when control is returned to the calling program.
syntax:
EXEC CICS LINK
program ( program name )
Commarea ( Data - area )
Length ( Data value )
END-EXEC.
Process performed by BIND...
Bind process performs:
* checks SQL synatx.
* checks security (validity & authorization)
* Compares column/table names against DB2 catalog
* Builds access path strategy for each SQL statement.
Some Commonly used EIB information.
EIBCALEN S9(4) COMP Length of DFHCOMMAREA.
EIBCPOSN S9(4) COMP Most recent cursor address, given as displacement value
EIBDATE S9(7) COMP-3 Date when the task started.
EIBTIME S9(7) COMP-3 Time when this task started.
EIBDS X(8) Most recent data set name.
EIBFN X(2) Function code of the last command.
EIBRCODE X(6) Response code of the last command.
EIBRESP S9(8) COMP Exceptional condition code.
EIBRESP2 S9(8) COMP Exceptional condition extended code.
EIBRSRCE X(8) Last resource (map name for SEND MAP or RECEIVE MAP
command, program name for LINK or XCTL, file name for File control command etc.)
EIBTASKN S9(7) COMP-3 Task number of this task.
EIBTRMID X(4) Terminal Id.
EIBTRNID X(4) Transaction Id.
CICS Control Programs.
* TCP - Terminal Control Program.
* SCP - Storage Control Program.
* KCP - Task Control Program.
* PCP - Program Control Program.
* FCP - File Control Program.
* TSP - Temporary Storage Program.
* TDP - Transient Data Program.
* JCP - Journal Control Program.
Associated User Specified Tables.
* TCT - Terminal Control Table.
* PCT - Program Control Table.
* PPT - Processing Program Table.
* FCT - FIle Control Table.
* TST - Temporary Storage Table.
* DCT - Destination Control Table.
* JCT - Journal Control Table.
JCL to execute CICS program....
// JCLLIB ORDER=ZOS.PROC
//STEP1 EXEC PROC=DFHEITVL,MEM=EXP4
//TRN.SYSIN DD DISP=SHR,DSN=CMAP054.CICS.PROG(&MEM)
//LKED.SYSLMOD DD DISP=SHR,DSN=CICSTS13.MTRG.PRGLOAD(&MEM)
//LKED.SYSIN DD*
NAME CMAP054(R)
/*
//
After the successful execution of this JCl go to CICS region then enter
CEMT SET PROG(CMAP054) NE
After typing this check weather the status is normal then type
CECI SEND MAP(<map name>) MAPSET(CMAP054)
Pseudo-Conversation:
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG004.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WK-AREA.
02 WK-TRANS PIC X(4).
LINKAGE SECTION.
01 DFHCOMMAREA
02 LK-TRANS PIC X(4).
PROCEDURE DIVISION.
IF EIBCALEN = 0
GO TO TSK1-RTN.
IF LK-TRANS = 'TSK2'
GO TO TSK2-RTN.
GO TO EXIT-PARA.
TSK1-RTN.
EXEC CICS RECEIVE
INTO (WS-AREA)
LENGTH (MSG-LEN)
END-EXEC.
process
EXEC CICS SEND
FROM (WS-AREA)
ERASE
END-EXEC.
MOVE 'TSK2' TO WK-TRANS.
EXEC CICS RETURN
TRANSID ('TSK1')
COMMAREA (WK-AREA)
LENGTH (4)
END-EXEC.
TSK2-RTN.
EXEC CICS RECEIVE
INTO (WS-AREA)
LENGTH (MSG-LEN)
END-EXEC.
process
EXEC CICS SEND
FROM (WS-COMMAREA)
ERASE
END-EXEC.
EXEC CICS RETURN
END-EXEC.
Saturday, 11 May 2013
PRE-COMPILATION includes the following process......
The precompiler "prepares" the source program for compilation by replacing EXEC SQL by a CALL and by putting the SQL in comment. The precompiler performs the following:
* includes DCLGEN member
* includes SQLCA
* looks for SQL statements and for host variable definitions
* verifies the SQL syntax
* matches each column and table name in the SQL to the DECLARE TABLE statements.
* prepares the SQL for compilation or assembly in the host language
* produces a DBRM and stores it in PDS
* can be invoked in DB2l or in batch.
JCL to submit DB2 COBOL program.......
// JCLLIB ORDER=CMAP054.DB2EX.PDS
//STEP01 EXEC PROC=DSNHCOB,WSPC=500,MEM=SINGSEL
//PC.SYSIN DD DISP=SHR,DSN=CMAP054.DB2EX.PDS(&MEM)
//PC.SYSLIB DD DISP=SHR,DSN=CMAP054.DB2DCL.PDS
//PC.DBRMLIB DD DISP=SHR,DSN=CMAP054.DB2DBRM.PDS(&MEM)
//LKED.SYSLMOD DD DISP=SHR,DSN=CMAP054.DB2LOAD.PDS(&MEM)
//*
//BIND EXEC PGM=IKJEFT01,DYNAMBR=20,COND=(4,LT)
//STEPLIB DD DISP=SHR,DSN=SYS1.DSN810.SDSNEXIT
//SYSTSIN DD*
DSN SYSTEM(DSNZ)
BIND PLAN(TEST11P)-
MEMBER(SINGSEL)-
ISOLATION(CS)-
RELEASE(C) -
EXPLAIN(NO) -
OWNER(CMAP054)-
LIB('CMAP054.DB2DBRM.PDS')
RUN PROGRAM(SIGNSEL) PLAN(CMAP054P)-
LIB('CMAP054.DB2LOAD.PDS')
/*
//
Expense Handler Application with advance technologies
Budget Planner One of the application developed with Ionic 4 and Python-Flask. Ionic 4 code: https://github.com/logeshbuiltin/Expense...
-
Details: This is one of the common error a beginner will be facing when he is working on Python and SQLite bridging. Below is a scenari...
-
This program has been taken from the below link and enhanced for easy use and easy understanding. This program is working 100% and the resu...
-
How to check special character in a string and replace with spaces using COBOL program. 01 TEMP-VAR PIC X(1...