Tuesday, 31 December 2013

Abend: 37

SB37: End of volume

Increase the size of primary and secondary reasonably.

If the job again and again comes down, then simple solution is to make the dataset multi volume by coding VOL=(,,,3).

SD37: Secondary space is not given

The secondary space in the SPACE parameter of the dataset that has given problem.

SE37: End of Volume (usually for a partitioned dataset)

If the partitioned dataset is already existing one, then compress the dataset using ‘Z’ in ISPF/IEBGENER and then submit the job once again.

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.
Create a PDS from a sequential dataset. Expand or add members to a PDS. 
Produce an edited dataset. 
Change logical record lengths of a dataset.

Sample program:

// JOBCARD
//STEP1   EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN= INPUT.DATASET,DISP=SHR
//SYSUT2 DD DSN=OUTPUT.DATASET, DISP=SHR
//SYSIN DD DUMMY
//

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:

-> IEHATLAS
Recovers 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=*



The above JCL is used to copy the data content from the PS file to the GDG file by creating a new generation.
Points:
1. The record length of the PD file and the GDG created newly should remain same
2. The RECFM of GDG file should be FM if the PS file is or should VB

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

From mainframe a file can be sent through SFT either in Binary or in Text format.

Format of sending:
1. If the File is in Text format then the SFT setup should be in set ASCII by default.
2. If the File is in Binary then the SFT setup should be in set Binary by default.

Necessary details:
1. Sender node details
2. Transmission ID
3. User name of the Source


Types of receptions:
1. Through Protocol
2. Through Mailbox


To remove trailing space

PROCEDURE DIVISION.

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

PROCEDURE DIVISION.

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

       IDENTIFICATION DIVISION.
       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

PPT - Processing Program Table
                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

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

Step 1- DB2 PRECOMPILE
The DB2 Precompile performs three functions.
  • 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.
Step 2- COMPILE
The modified source from the precompile is then compiled. The code is checked for errors, and a compiled version of the code is created.

Step 3- LINK-EDIT
The compiled code is link-edited along with statically called source language and DB2 run-time modules to create a Load Module. Imbedded in this module is the same consistency token that was generated in the precompile. If multiple DB2 module contains a consistency token for each one.

Step 4- DB2 BIND
The bind process reads the DBRM that was created in the precompile and prepares an access path to the data. This access path, along with the consistency token is stored in the DB2 catalog as a package. Every package is bound into a package List, or a collection. The name of the Collection is specified by the PACKAGE parameter. A collection is a group of packages that are included in one or more plans. The QUALIFIER parameter of the bind is used to direct the SQL to the specific set of DB2 objects(tables, Views, aliases or synonyms) qualified by this name.

EXECUTION COBOL-DB2 PROGRAM
When COBOL-DB2 program executes, the plan name must be specified. For online CICS programs, the plan name is specified  by Tran ID in the Resource Control Table(RCT). For a batch program, the plan name is specified in the SYSTSIN input DD. The packages for all DB2 programs executed under a Tran ID or batch job step must be included in collection bound into this plan. When the first SQL statement of each program is executed, DB2 searches the collections within the plan using the package name and consistency token from the load module. If an exact match is not found a -805 SQLCODE is returned.

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  byte
          COMP-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    

01-49      Group or elementary items
66           Renames clause
77           Independent elementary      data items
88           Condition names

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 

88 level is used for condition names.
The level 88 in the Data Division can be used to give condition names to the values that a field contains. A condition name entry specifies either a single value or a set of values for the condityional variable. When this level is specified you can use the condition name instead of is =equal to in the IF statement. Condition name should be specified under Level 88 immediately following the field description.
 
syntax:
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COND            PIC X.
     88 ACCEPT    VALUE 'Y'.
     88 REJECT     VALUE 'N'.   
 77 WS-VAL         PIC X.

PROCEDURE DIVISION.  
          ACCPET  WS-VAL.
          IF ( ACCEPT )
              PROCEED
          END-IF.
          IF ( REJECT )
              ROLL BACK
          END-IF. 
          STOP RUN.

01-49 LEVEL.

Used to describe a record.

Syntax:
01 INREC.
     02 ID          PIC X(3).
          03 P-ID             PIC X(3).

66 level. 

Renames clause
It is used for regrouping of elementary data items in a record. It should be declared at 66 level.

syntax:
01 WS-REC
        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.....

COBOL - Common Business Oriented Language.

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 file

2      This error will occur when Index key Fails

22  - Duplicate key
23  - 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 

42  - A CLOSE was attempted for a file not in the open mode.
47  - A READ was attempted for a file not open in the input or I-O mode.
48  - A WRITE was attempted on a file not open in the I-O, output, or extend mode.

9      Implementator Defined

92  - Logic error
93  - VSAM resource not available


Types of perform in COBOL.....

IN-LINE perform :
                   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...?

Here in JCL first we are creating an GDG (+1) and using it in the next step what will be the generation number...?

//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....

COND=ONLY
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.....

The DD statement links the external dataset to the
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.
Oracle says it has passed IBM on integer throughput performance
"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
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
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....

CBRC    -     CICS dataBase Recovery Control.
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

ssrange is a compiler option is used to give the range of the records for all the operations.nossrange is default.

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

* Used to DELAY the processing of a task.
* 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.

IDENTIFICATION DIVISION.
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...

* Transfers control to the next program.
* 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...

* Links to a lower level program.
* 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...

The BIND process establishes a relationship between an application program and its relational data. This step is necessary berfore a program can be executed. DB2 allows two basic ways of binding a program : to a package, or directly to an application plan.

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.

EIBAID                           x(1) Attention Identifier.
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.

IBM supplies 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....

//CMAP054A JOB ,,NOTIFY=&SYSUID
//                    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:

A mode of dialogue between program and terminal which appears to the operator as a continuous conversation but which is actually carried by a serious of tasks.

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

//CMAP054A JOB ,,NOTIFY=CMAP054
//              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...