Can a right-justified alpha field within Easytrieve have a resulting numeric field?
search cancel

Can a right-justified alpha field within Easytrieve have a resulting numeric field?

book

Article ID: 56270

calendar_today

Updated On:

Products

Easytrieve Report Generator

Issue/Introduction

What is the correct way to code an Easytrieve program where the alpha field is right justified and the resulting field is numeric?
This is not automatically done in Easytrieve.  But, the below is a coding example which will enable this to be produced.

 

Environment

Easytrieve Plus Report Generator, release 6.4 

Resolution

 
      * 1. INITIALIZE THE RESULT FIELD TO ZERO
      * 2. TEST EVERY BYTE OF THE FROM FIELD FOR ZERO THRU 9
      * 3. MOVE EVERY NON-BLANK BYTE TO THE RESULT FIELD
      *
      * ALPHA WORKING STORAGE AREA
      * FILE RPT F(81) PRINTER
      DEFINE ALPHA           W 17 A VALUE '123-45-6789'
      DEFINE ONE-BYTE ALPHA     1 A OCCURS 17
      DEFINE ALPHA-SUB       W  2 N 0

      * NEW NUMERIC FIELD WORKING STORAGE AREA
      DEFINE RIGHT-JUSTIFY            W 17 A
      DEFINE RIGHT-NUMBER RIGHT-JUSTIFY 17 N 0
      DEFINE R-ARRAY RIGHT-JUSTIFY   1 A OCCURS 17
      DEFINE RIGHT-SUB       W  2 N 0

      * OTHER WORKING STORAGE
      DEFINE WS-STOPPER     W  2 N
      *
      JOB INPUT NULL
      *
       PERFORM RIGHT-JUSTIFY
       PRINT
       STOP
      *
      RIGHT-JUSTIFY. PROC

       MOVE X'F0' TO RIGHT-JUSTIFY FILL X'F0'
       ALPHA-SUB =  17
       RIGHT-SUB =  17
       WS-STOPPER = 1
      * DO THIS UNTIL YOU REACH THE BEGINNING OF ALPHA FIELD
       DO UNTIL ALPHA-SUB LT WS-STOPPER

      * CHECK FOR BLANK AND MOVE ONE BYTE IF NOT BLANK
      IF ONE-BYTE(ALPHA-SUB) LT '0' OR ONE-BYTE(ALPHA-SUB) GT '9'
             ALPHA-SUB = ALPHA-SUB - 1
          ELSE
             R-ARRAY(RIGHT-SUB) = ONE-BYTE(ALPHA-SUB)
             ALPHA-SUB = ALPHA-SUB - 1
             RIGHT-SUB = RIGHT-SUB - 1
      END-IF

       END-DO

      END-PROC
      *
      *
      REPORT   LINESIZE 80
        TITLE    'ALPHA FIELD \ RIGHT-JUSTIFIED FIELD \ NUMBER FIELD'
        LINE 1   'ALPHA FIELD =============> ' ALPHA
        LINE 2   'RIGHT-JUSTIFIED FIELD ===> ' RIGHT-JUSTIFY
        LINE 3   'JUSTIFIED NUMBER FIELD ==> ' RIGHT-NUMBER

PRODUCES THE FOLLOWING:

ALPHA FIELD =============> 123-45-6789
RIGHT-JUSTIFIED FIELD ===> 00000000123456789
JUSTIFIED NUMBER FIELD ==> 123,456,789