Solved

cobol control-break question

Posted on 2000-04-12
6
385 Views
Last Modified: 2011-09-20
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
Comment
Question by:qsysopr
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 3

Expert Comment

by:arch_great
ID: 2711299
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
 
LVL 54

Accepted Solution

by:
nico5038 earned 50 total points
ID: 2713325
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
 
LVL 24

Expert Comment

by:SunBow
ID: 2739389
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 54

Expert Comment

by:nico5038
ID: 2739684
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
 
LVL 54

Expert Comment

by:nico5038
ID: 2772434
How is the progress on the report ?
0
 
LVL 24

Expert Comment

by:SunBow
ID: 2834518
did it work?
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
VbScript to countdown to New Year's Day 6 92
ASP/VB email question 4 72
Help Required 3 135
MySQL programmer starter 25 64
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question