Go to Home Page
 
  Go to Home Page  
  See all products
  See manuals, tutorials, articles
  See price schedules
  See user testimonials
  See user testimonials
  Download a free 30-day trial
 
  Choose Spectrum Writer to add 4GL to your product
  Report Writer Speedup Tips Article
Example of Converting Quikjob to Spectrum Writer
Home

A Sample Quikjob Program Converted to Spectrum Writer

Quikjob examples available: Example 1 | Example 2

Quikjob Code


*************************************************
* SYSTEM.....: ACCT32
* LANGUAGE...: QUIKJOB
* PROGRAM....: QKJ02187
* DESCRIPTION: THIS PROGRAM READS A FILE 
* WITH ALPHANUMERIC DOLLAR AMOUNTS AND CONVERTS
* THE DOLLAR AMOUNTS TO A NUMERIC FORMAT,
* SO THEY CAN BE SUMMED TOGETHER IN A SYNCSORT.
*
*------------------------------------------------
*                        C H A N G E S
* DATE       PGMR         DESCRIPTION
*------------------------------------------------
*
*************************************************
 
*************************************************
* INPUT
*************************************************
EQU AQ-RECORD       INF1-710  /*STARTING POS
EQU   AQ-AMT1         INF472-488
EQU   AQ-AMT2         INF513-529


*************************************************
* OUTPUT
*************************************************
EQU O-RECORD       OFA1       /*STARTING POS



*************************************************
* WORKING STORAGE
*************************************************
EQU WORKINGSTORAGE WST
EQU WS-SPACE       (01)   SPACE  /* BUILD NEW NUM
EQU WS-NEW-AMT     (17)   SPACES /* BUILD NEW NUM
EQU WS-NEW-AMTX    (WS-SPACE)
EQU   WS-NEW-FILLER  (16)
EQU   WS-NEW-END     (01)
EQU WS-NEG-SW      (01)   C'N'   /* NEGATIVE SW


*************************************************
*             PROCEDURE DIVISION
*************************************************
* READ INPUT REORD
*------------------------------------------------
010 GET INF ATEND EOJ

*------------------------------------------------
* CONVERT AMOUNT1 TO NEW FORMAT
*------------------------------------------------
    MOVE AQ-AMT1 TO WS-NEW-AMT
    PERFORM 500 THRU 509
    MOVE WS-NEW-AMT TO AQ-AMT1

*------------------------------------------------
* CONVERT AMOUNT2 TO NEW FORMAT
*------------------------------------------------
    MOVE AQ-AMT2 TO WS-NEW-AMT
    PERFORM 500 THRU 509
    MOVE WS-NEW-AMT TO AQ-AMT2

*------------------------------------------------
* WRITE INPUT RECORD TO OUTPUT
*------------------------------------------------
    MOVE AQ-RECORD TO O-RECORD
    WRITE OFA
    GOTO 010


*************************************************
*              PERFORMED ROUTINES
*************************************************
500
*------------------------------------------------
* SET INDEX POINTER "PTA" TO RIGHT MOST 
*    POSITION OF 'NEW' FIELD
*------------------------------------------------
    SET PTA WS-NEW-END

*------------------------------------------------
* SET INDEX POINTER "PTR" TO RIGHT MOST 
*    DIGIT OF OLD NUMBER.
*------------------------------------------------
    WHEN WS-NEW-AMT INCLUDES NONBLANK REVERSE
      GOTO 502.
    ABEND 1111   /* SHOULD ALWAYS BE SOMETHING

502
*------------------------------------------------
* IF OLD NUM IS NEGATIVE, SET SWITCH CLEAR SIGN.
*------------------------------------------------
    IF PTR1 = C'-'
      MOVE C'Y' TO WS-NEG-SW
      MOVE SPACE TO PTR1.

*------------------------------------------------
* IF ALL OF OLD NUMBER HAS BEEN SHIFTED, GOTO 505.
*------------------------------------------------
    IF PTR1 = SPACE
      GOTO 505.

*------------------------------------------------
* IF CHARACTER IN OLD NUMBER IS NOT A DECIMAL,
* MOVE NUMBER TO NEW LOCATION.
*------------------------------------------------
    IF PTR1 NOT = C'.'
      MOVE PTR1 TO PTA1   /* MOVE OLD NUM TO NEW LOC
      MOVE SPACE TO PTR1  /* CLEAR OLD NUM LOCATION
      SET PTR DOWN 1      /* SET INDEX DOWN 1 BYTE
      SET PTA DOWN 1      /* SET INDEX DOWN 1 BYTE
      GOTO 502.

*------------------------------------------------
* IF CHARACTER IN OLD NUMBER IS A DECIMAL,
* SET INDEX POINTER DOWN 1 BYTE AND GO TO 502 LOOP.
*------------------------------------------------
    MOVE SPACE TO PTR1
    SET PTR DOWN 1
    GOTO 502.

505
*------------------------------------------------
* AFTER ALL OF OLD NUMBER HAS BEEN SHIFTED,
* FILE NEW NUMBER WITH LEADING ZEROS.
*------------------------------------------------
    WHEN WS-NEW-AMT INCLUDES SPACE
      MOVE ZERO TO PTR1
      GOTO 505.

*------------------------------------------------
* IF NEGATIVE SWITCH IS "Y"ES,
* MULTIPLY NEW NUMBER BY -1
*------------------------------------------------
  IF WS-NEG-SW = C'Y'
   MOVE C'N' TO WS-NEG-SW
   MULT WS-NEW-AMT 0D BY C'-1' 0D 
          GIVING WS-NEW-AMT 0D.

*------------------------------------------------
* ROUTINE EXIT
*------------------------------------------------
509 EXIT
*------------------------------------------------

    END

Spectrum Writer Code


****************************************************
* SYSTEM.....: ACCT32
* LANGUAGE...: SPECTRUM WRITER
* PROGRAM....: QKJ02187 
* DESCRIPTION: THIS PROGRAM READS A FILE 
* WITH ALPHANUMERIC DOLLAR AMOUNTS AND CONVERTS
* THE DOLLAR AMOUNTS TO A NUMERIC FORMAT,
* SO THEY CAN BE SUMMED TOGETHER IN A SYNCSORT.
*
* NOTE: SPECTRUM WRITER'S PICTURE FORMAT
*       AUTOMATICALLY DOES THE REFORMATTING FOR US.
*       WE JUST SPECIFY THE INPUT AND OUTPUT FORMATS
*
* NOTE: SPECTRUM WRITER COULD ALSO GO AHEAD AND DO 
*       THE SORT AND SUMMARIZATION IN THIS SAME STEP,
*       ELIMINATING THE SYNCSORT STEP IN THE 
*       QUIKJOB JOB.
*----------------------------------------------------
*                        C H A N G E S
* DATE       PGMR         DESCRIPTION
*----------------------------------------------------
*
****************************************************

****************************************************
* OUTPUT IS A MAINFRAME FILE, NOT A REPORT
* (NO TITLES WANTED, NO SPACES BETWEEN COLS, ETC.)
****************************************************
OPTION: MAINFRAME

****************************************************
* SPECTRUM WRITER FILE DEFINITION STMTS FOR: INF
****************************************************
FILE:  INF  DDNAME(INF) LRECL(1010)
*
FIELD: PART1    LEN(471)
FIELD: AQ-AMT1  LEN(17)   TYPE(NUM) DEC(2)
FIELD: PART2    LEN(25)
FIELD: AQ-AMT2  LEN(17)   TYPE(NUM) DEC(2)
FIELD: PART3    LEN(80)

****************************************************
* NAME THE INPUT FILE FOR THIS RUN.
* (IT IS THE FILE WE JUST DEFINED.)
****************************************************
INPUT: INF

****************************************************
* SPECIFY THE FIELDS TO WRITE TO THE OUTPUT RECORD
****************************************************
COLUMNS:  PART1      /* INPUT REC UP TO AMT1 */
          AQ-AMT1(PIC'999999999999999V99')
          PART2      /* INPUT REC BETWEEN AMOUNTS */
          AQ-AMT2(PIC'999999999999999V99')
          PART3      /* INPUT REC AFTER AMT2 */


 

Copyright 2012
Pacific Systems Group.
All rights reserved.


Spectrum Writer 4GL - the economical alternative to SAS, Easytrieve, DYL-280...

Home | Products | Documentation | Prices | Testimonials | Company | 30-Day Trials
Send Your Comments or Questions