Monday, 30 December 2013

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.

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