Q2C - QuickJob to COBOL Conversion Services

                 

Overview

The Q2C software is designed to convert Quikjob (Vision:Report) source programs automatically to high-quality Cobol programs, using the Automatic Mass Processing technology that has formed the basis of our software for over 30 years.

Put simply, this means that the entire stock of programs can be processed in a single run, which has great advantages both in terms of the speed of the conversion and the consistency of the results. A typical conversion consists of a number of processing cycles or “iterations” during which the software is customized and the converted programs are compiled and tested until the results are completely correct. Optionally, each cycle can start from a fresh supply of the material to be converted, so that there is no “freeze” on maintenance by the customer. Any programs that have been modified since the previous cycle will be automatically re-converted to the latest standards.

The software converts both VSE and z/OS (MVS) Quikjob programs to IBM Enterprise Cobol, or the equivalent. In addition to the source material, the customer has to supply certain information that is not explicitly specified in Quikjob. This includes the position and length of VSAM key fields, and, in the case of z/OS Quikjob, some information needed to create File Descriptions (fixed/variable format, record-length ...).

At present, the software used to perform the conversion is run on our own z/OS system, as part of a complete conversion service. 

The price of the conversion includes as many customization/conversion/compilation/ testing cycles as necessary, until the results are completely correct. We are responsable for the first three aspects, but it is the customer’s responsability to test the converted programs and to identify and report any problems to us so that we can resolve them during the next cycle.  

The price also includes free technical support for three months after the final delivery of the converted programs.

The cost of any given conversion depends on several factors: the total number of programs, the number of lines per program, and the degree of complexity of the individual modules. The price for a number of short, simple programs will therefore obviously be much lower than for the same number of long, complex programs.

Although we cannot make an accurate estimate of the cost of a conversion before running the evaluation, we would expect the final price of a small conversion to work out at somewhere between €1.20 and €1.50 per line of code, depending on the factors described above. So, for example, a very simple 50-line program might cost €60, and a very complex 200-line program might come to €300. However, because of the mass-processing nature of the conversion, these prices would be lower in the case of a large conversion. 

In order for us to be able to give a precise estimate of the cost, we offer a free evaluation service based on a detailed analysis of the material to be converted. During this evaluation, we will also convert and compile without errors a sample of up to 5 programs, consisting of not more than 500 lines of Quikjob code in total, to give you a clear idea of the quality of the converted Cobol code, and to serve as “proof of concept”. (Please note that the sample conversion will be done on an “as-is” basis, so the converted programs may not be immediately executable without the specific customization that we would apply during a full conversion.)

To perform the evaluation, we would need a machine-readable copy of the program source material, together with any ++INCLUDEs that are used. We would expect to be able to provide the detailed results of the analysis together with the price for the conversion within ten working days of receiving the material.

We hope this is of interest to you. If you need more information, or wish to go ahead with a free evaluation and/or a sample conversion, please contact us either by email or by telephone at one of the numbers or addresses below.

The following example demonstrate the capabilities of the Q2C LCP for converting QuickJob source statements to COBOL..

Example

QuickJob Source Code

OPTION SEQCHK=NO,WSTSIZE=4000,STMTEND=65,STMTS=900,GENSIZE=12200
   *
OPTION LIST=NO
OPTION SEQCHK=NO
INFKSDS    0080S      LBL=PRCHEK
EQU DATE WST1-4
EQU DATE
EQU DATE-CC (2)
EQU DATE-YY (2)
EQU CKDT (9) N
EQU CKDT
EQU CKDT-FIL (1)
EQU CKDT-CY  (4)
EQU CKDT-MD  (4)
    REPORT INF11-19     (CHK#) SPACE01
           INF25-29-P   (DATE) SPACE01
           VAL56-57     ($DT)  SPACE01
           DATE         (DATE) SPACE01
           CKDT         (CKDT) SPACE01
           CKDT-CY      (CKCY) SPACE01

     MOVE VAL56-61 TO DATE-YYMMDD
     MOVE VAL56-57 TO DATE-YY
     MOVE C'20'    TO DATE-CC
     SUB C'7' FROM    DATE
100 GET INF ATEND EOJ
    MOVE INF25-29-P TO CKDT
    IF CKDT-CY > DATE
       GOTO 100.
    PRINT REPORT
    GOTO 100
999 END



COBOL Code after conversion



       Identification Division.

      *---------------------------------------------------------------*
      * Quikjob to Cobol conversion on 2017-01-16 at 09:50:33         *
      *---------------------------------------------------------------*

       Program-Id. Q2CDEMO.

       Environment Division.
       Input-Output Section.
       File-Control.
           Select Inf assign to Ksds-prchek
                      organization is indexed
                      access mode is sequential
                      record key is Inf-key.
           Select Prt assign to Sys006-s-syslst.

       Data Division.
       File Section.

       FD  Inf.
       01  Inf-file-rec                  Pic X(80).
       01  Inf-key-rec.
           05  Inf-key                   Pic X(05).
           05  Filler                    Pic X(75).

       FD  Prt
           recording mode is F.
       01  Prt-file-rec                  Pic X(132).

       Working-Storage Section.

      *----------------------------------------------------------------
      *    General Working-Storage fields
      *----------------------------------------------------------------

       01  Wst-area.

           05  Wst1-4                    Pic X(4).
           05  Date--r redefines Wst1-4  Pic 9(4).
           05  Filler redefines Wst1-4.
               10  Wst1-2                Pic X(2).
               10  Date-cc redefines Wst1-2
                                         Pic X(2).
               10  Wst3-4                Pic X(2).
               10  Date-yy redefines Wst3-4
                                         Pic X(2).
           05  Wst5-13                   Pic 9(9).
           05  Ckdt redefines Wst5-13    Pic 9(9).
           05  Filler redefines Wst5-13.
               10  Wst5-5                Pic X(1).
               10  Ckdt-fil redefines Wst5-5
                                         Pic X(1).
               10  Wst6-9                Pic X(4).
               10  Ckdt-cy redefines Wst6-9
                                         Pic X(4).
               10  Wst10-13              Pic X(4).
               10  Ckdt-md redefines Wst10-13
                                         Pic X(4).

      *----------------------------------------------------------------
      *    Input record descriptions
      *----------------------------------------------------------------

       01  Inf-rec                       Pic X(80).
       01  Inf1-80 redefines Inf-rec.
           05  Inf1-10-filler            Pic X(10).
           05  Inf11-19                  Pic X(9).
           05  Inf20-24-filler           Pic X(5).
           05  Inf25-29-p                Pic S9(9)       packed-decimal.
           05  Inf30-80-filler           Pic X(51).

      *----------------------------------------------------------------
      *    Printfile record descriptions
      *----------------------------------------------------------------

       01  Prt-rec                       Pic X(132)    value spaces.

      *----------------------------------------------------------------
      *    Report record descriptions
      *----------------------------------------------------------------

       01  Report-page-header.
           05  Rep-page-date             Pic X(10)   value 'DD/MM/CCYY'.
           05  Filler                    Pic X(26)   value spaces.
           05  Filler                    Pic X(05)   value 'PAGE '.
           05  Rep-page-no               Pic ZZZ9.

       01  Report-header.
           05  Header-1-01               Pic X(09)
               value '..CHK#...'.
           05  Filler                    Pic X(01)  value spaces.
           05  Header-1-02               Pic X(10)
               value '......DATE'.
           05  Filler                    Pic X(02)  value spaces.
           05  Header-1-03               Pic X(03)
               value '$DT'.
           05  Filler                    Pic X(01)  value spaces.
           05  Header-1-04               Pic X(04)
               value 'DATE'.
           05  Filler                    Pic X(01)  value spaces.
           05  Header-1-05               Pic X(09)
               value '.....CKDT'.
           05  Filler                    Pic X(01)  value spaces.
           05  Header-1-06               Pic X(04)
               value 'CKCY'.
           05  Filler                    Pic X(01)  value spaces.

       01  Report-line                   value spaces.
           05  Rep-inf11-19              Pic X(09).
           05  Filler                    Pic X(01).
           05  Rep-inf25-29-p            Pic Z(9)-.
           05  Filler                    Pic X(01).
           05  Rep-val56-57-x.
               10  Rep-val56-57          Pic X(02).
               10  Filler                Pic X(01).
           05  Filler                    Pic X(01).
           05  Rep-date--r               Pic Z(4).
           05  Filler                    Pic X(01).
           05  Rep-ckdt                  Pic Z(9).
           05  Filler                    Pic X(01).
           05  Rep-ckdt-cy               Pic X(04).

      *----------------------------------------------------------------
      *    Quikjob to Cobol conversion fields
      *----------------------------------------------------------------

           Copy Q2CVAL.

       01  Q2c-fields.
           05  Pgm--name                 Pic X(8)      value 'Q2CDEMO '.
           05  Page-count                Pic 9(4)      value zero.
           05  Lines-printed             Pic 9(3)      value 99.
           05  Lines-to-advance          Pic 9         value 1.
           05  Inf-eof                   Pic X         value space.

      *****************************************************************

       Procedure Division.

       Initial-process Section.

           Copy Q2CINIT.

           Initialize Wst-area
           Initialize Inf-rec
           Move Date--dd   to Rep-page-date (1:2)
           Move Date--mm   to Rep-page-date (4:2)
           Move Date--ccyy to Rep-page-date (7:4).
           Open I-O    Inf.
           Open output Prt.

       Main-process Section.

           Move Date--ymd to Date-yymmdd
           Move Date--yy to Date-yy
           Move  '20'    to Date-cc
           Subtract 7 from    Date--r.
       Main-100.
           Read Inf into Inf-rec
             at end
                Move 'E' to Inf-eof
                Move high-values to Inf-rec
                go to End-process
           end-read
           Move Inf25-29-p to Ckdt
           If Ckdt-cy > Date--r
              go to Main-100.
           Perform Print-report
           go to Main-100.
       End-process Section.
           Goback.

       Additional-processing Section.

      *----------------------------------------------------------------
      *    Report and printfile processing sections
      *----------------------------------------------------------------

       Print-report.

           Move Inf11-19        to Rep-inf11-19
           Move Inf25-29-p      to Rep-inf25-29-p
           Move Date--yy        to Rep-val56-57
           Move Date--r         to Rep-date--r
           Move Ckdt            to Rep-ckdt
           Move Ckdt-cy         to Rep-ckdt-cy
           Move Report-line     to Prt-rec
           Perform Print-line.

       Print-line.

           If  Lines-printed >= 64
               Perform Print-report-header
           end-if

           Write Prt-file-rec from Prt-rec
             after Lines-to-advance
           Add Lines-to-advance to Lines-printed
           Move 1 to Lines-to-advance
           Move spaces to Prt-rec.

       Print-report-header.

           Move 0 to Lines-printed
           Add 1 to Page-count
           Move Page-count to Rep-page-no
           Write Prt-file-rec from Report-page-header
             after advancing page
           Write Prt-file-rec from Report-header
           Move spaces to Prt-file-rec
           Write Prt-file-rec
           Add 3 to Lines-printed.


Copyright © 2019 Logos Computer Services Ltd. Search key-words: ibm legacy mainframe mainframes main-frame mvs/esa os/390 z/os os390 zos vse dos/vs dos/vse vse/esa z/vse zvse Quikjob Answer:report QUIKJOB convert conversion translate translation VSE MVS z/OS z/VSE source code statements programming language needed