• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 405
  • Last Modified:

cobol control-break question

I have a text file with6 fields
region            pic x 3
section           pic x 3
proj #            pic x 5
type               pic x 15
budget amt    pic 9(9)
actual amt      pic 9(9)

I have to create a report showing the following fields with thier proper
headings.  also I must show a variance (+, -) showing the difference
between budget and actual amts.     I am able to do this,  but at the bottom of the report I must show totals for sections, and totals for regions.
  When I attempt to do this I loose my calculated variance field.  I know
I am doing this program incorrectly and am going nowhere.  if it will
help I can e-mail my .txt file and my code.

thank you.
0
qsysopr
Asked:
qsysopr
  • 3
  • 2
1 Solution
 
arch_greatCommented:
Keep 2 variables for Regiontot and Section tot (which will become 0 ,when the region changes.... )

Pseudo code (not in COBOL)

mregtot = 0
msectot = 0

AS long as !eof()
    mregion = region
    msection = section
   

    if section changes
        do control break (where U will print that section's total...
    endif    

    if region changes
            do control break (where U will print that region's total...
    endif

     Calculate variance for each detail....

-----------

In Control break  of section and region , reinitialise the respective totals to zero...
 
0
 
nico5038Commented:
You are trying to write a so called "level" program.

The solution arch great proposes is nearly OK but (as often) forgets to take the EOF situation in consideration.

Main processing is:

define an actual and a saved key:

01 WA-KEY.
   03 WA-EOF      PIC X(01).
   03 WA-SECTION  PIC X(03).
   03 WA-REGION   PIC X(03).

01 WA-KEY-SECTION REDEFINES WA-KEY.
   03 FILLER      PIC X(04).

01 WS-KEY.
   03 WS-EOF      PIC X(01).
   03 WS-SECTION  PIC X(03).
   03 WS-REGION   PIC X(03).

01 WB-KEY-SECTION REDEFINES WB-KEY.
   03 FILLER      PIC X(04).

PROCEDURE DIVISION.

PERFORM INIT-ROUTINE

PERFORM MAIN-ROUTINE UNTIL WB-EOF = "1"

MAIN-ROUTINE
MAIN01:
   ' Test no total
   IF WA-KEY = WB-KEY
      PERFORM PRINT-DETAIL
      PERFORM READ-NEXT
      GOTO MAIN01
    END
    ' Test region total
    IF WA-KEY-SECTION = WB-KEY-SECTION
      PERFORM PRINT-REGION-TOTAL
      INIT region
      PERFORM PRINT-DETAIL
      PERFORM READ-NEXT
      GOTO MAIN01
    END
    ' Test section total
    IF WA-EOF = WB-EOF
      PERFORM PRINT-REGION-SECTION-TOTAL
      INIT section and region
      PERFORM PRINT-DETAIL
      PERFORM READ-NEXT
      GOTO MAIN01
    END
    ' Hereyou get when WA-EOF is set
    ' Just print the last totals and ready !
    PERFORM PRINT-REGION-SECTION-TOTAL
    MOVE WA-EOF TO WB-EOF
END MAIN

READ-NEXT
      COUNT region and section
      MOVE WB-KEY TO WA-KEY
      READ NEXT
      MOVE fields to WA
      SET WA-EOF WHEN EOF OCCURS
END READ-NEXT

INIT-ROUTINE
      SET COUNT region and section TO ZERO
      READ FIRST
      MOVE fields to WA
      MOVE WA-KEY TO WB-KEY
      SET WA-EOF WHEN EOF OCCURS
END INIT-ROUTINE
     
0
 
SunBowCommented:
I swear I won't cobol, but I am also sure that if I did and init routine I would also run a cleanup routine at the end.

More than likely I would use Eof to process some totalling code, then leaf out to cleanup of files and such.

>       PERFORM PRINT-DETAIL
>       PERFORM READ-NEXT

yah, very nice and crisply done
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
nico5038Commented:
Sunbow,

Using a 'switch-value' for EOF in a "sortwork-key" offers the advantage that even multiple files can be "levelled" automatically and that those files having EOF are automatically skipped for pocessing by the value of this EOF field!
0
 
nico5038Commented:
How is the progress on the report ?
0
 
SunBowCommented:
did it work?
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now