[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP COBOL
Reference Manual


Previous Contents Index

6.8.15 GENERATE

Function

The GENERATE statement directs the Report Writer Control System (RWCS) to produce a report according to the Report Description entry (RD) in the Report Section of the Data Division.


report-item

names either a report-name in a Report Description entry, or the group-data-name of a TYPE IS DETAIL report group.

Syntax Rules

  1. If report-item references a group-data-name, it must name a TYPE DETAIL report group. Group-data-name can be qualified by report-name.
  2. If report-item references a report-name, its report description must contain:
    • A CONTROL clause
    • At least one CONTROL HEADING, DETAIL, or CONTROL FOOTING report group
    • No more than one DETAIL report group

General Rules

  1. An INITIATE statement must be executed before a GENERATE statement is executed for a specific report.
  2. The RWCS produces a summary report if all of the GENERATE statements for a report reference report-name. A summary report contains no TYPE IS DETAIL report groups.
  3. The RWCS produces a detail report if a GENERATE statement references a DETAIL report group.
  4. To detect and trigger control breaks for a specific report, the RWCS:
    • Saves the initial values within control data items as prior values when the GENERATE statement executes.
    • Compares the prior values to the current values of control data items when subsequent GENERATE statements execute. Only if the current values change does a control break occur. If a control break occurs, the current values are saved as prior values.
    • Repeats the preceding step until the last control break is processed.
  5. The RWCS automatically processes any PAGE HEADING and PAGE FOOTING report groups when it must start a new page to present a CONTROL HEADING, DETAIL, or CONTROL FOOTING.
  6. When the first GENERATE statement for a specific report is executed, the RWCS processes these report groups, if present in the report description, in this order:
    1. The REPORT HEADING report group.
    2. The PAGE HEADING report group.
    3. All CONTROL HEADING report groups from major to minor.
    4. For GENERATE group-data-name statements (detail reporting), the RWCS presents the specific DETAIL report group for processing.
    5. For GENERATE report-name statements (summary reporting), the RWCS does not present the DETAIL report group for processing; however, the RWCS does perform all other DETAIL report group functions.
  7. When subsequent GENERATE statements are executed for a specific report, the RWCS:
    • Checks for control breaks. The rules governing the inequality of control data items are identical to the rules for relation conditions. If a control break occurs, the RWCS:
      1. Enables the CONTROL FOOTING USE procedures and CONTROL FOOTING SOURCE clauses. This allows program access to the control data item values that the RWCS uses to detect a given control break.
      2. Processes the CONTROL FOOTING report groups starting with the minor. Only CONTROL FOOTING report groups less major than the highest level at which a control break occurs are processed.
      3. Processes the CONTROL HEADING report groups in the order major to minor. Only the CONTROL HEADING report groups less major than the highest level at which a control break occurs are processed.
    • Processes the GENERATE statement. For GENERATE group-data-name statements (detail reporting), the RWCS processes the specific DETAIL report group. For GENERATE report-name statements (summary reporting), the RWCS does not present the DETAIL report group for processing; however, the RWCS does perform all other DETAIL report group functions.
  8. No GENERATE statements can reference a file after executing a TERMINATE statement for the same file.

Additional References

6.8.16 GO TO

Function

The GO TO statement transfers control from one part of the Procedure Division to another.


proc-name

is a procedure-name.

num

is the identifier of an elementary numeric item described with no positions to the right of the assumed decimal point.

Syntax Rules

  1. A Format 1 GO TO statement that is in a consecutive sequence of imperative statements in a sentence must be the last statement in the sentence.
  2. If an ALTER statement refers to a paragraph, the paragraph must consist of only a paragraph header followed by a Format 1 GO TO statement.
  3. A Format 1 GO TO statement without proc-name can only be in a single-statement paragraph.

General Rules

Format 1

  1. The GO TO statement transfers control to proc-name.
  2. If there is no proc-name, the GO TO statement cannot execute before an ALTER statement changes its destination.

Format 2

  1. The GO TO statement transfers control to the proc-name in the ordinal position indicated by the value of num.
    No transfer occurs, and control passes to the next executable statement if the value of num is one of the following:
    • Not greater than zero
    • Greater than the number of proc-names in the statement

Examples

  1. Format 1:


    GO TO ENDING-ROUTINE.
    
  2. Format 2:


    GO TO FRESHMAN
          SOPHOMORE
          JUNIOR
          SENIOR
            DEPENDING ON YEAR-LEVEL.
    MOVE ...
    

    Sample Results
    YEAR-LEVEL Transfers to
    1 FRESHMAN label
    2 SOPHOMORE label
    3 JUNIOR label
    4 SENIOR label
    5 MOVE statement
    0 MOVE statement
    -10 MOVE statement

6.8.17 IF

Function

The IF statement evaluates a condition. The condition's truth value determines the program action that follows.


stment-1

is an imperative or conditional statement. An imperative statement can precede a conditional statement.

stment-2

is an imperative or conditional statement. An imperative statement can precede a conditional statement.

Syntax Rules

  1. The ELSE NEXT SENTENCE phrase is optional if it immediately precedes a separator period.
  2. If the END-IF phrase is specified, the NEXT SENTENCE phrase must not be specified.

General Rules

  1. The scope of an IF statement ends with any of the following:
    • An END-IF phrase at the same nesting level
    • A separator period
    • An ELSE phrase associated with an IF statement at a higher nesting level
  2. If the condition is true, the following control transfers occur:
    • If there is a stment-1, it executes.
      stment-1 can contain a procedure branching or conditional statement. Control then transfers according to the rules of the statement.
      Otherwise, the ELSE phrase (if any) is ignored. Control passes to the end of the IF statement.
    • If you use NEXT SENTENCE instead of stment-1, the ELSE phrase (if any) is ignored. Control passes to the next executable sentence.
  3. If the condition is false, the following control transfers occur:
    • stment-1 or its substitute NEXT SENTENCE is ignored. If stment-2 is used, it executes.
      stment-2 can contain a procedure branching or conditional statement. Control then transfers according to the rules of the statement. Otherwise, control passes to the end of the IF statement.
    • If there is no ELSE phrase, stment-1 is ignored. Control passes to the end of the IF statement.
    • If the ELSE NEXT SENTENCE phrase is present, stment-1 is ignored. Control passes to the next executable sentence.
  4. An IF statement can appear in either or both stment-1 and stment-2. In this case, the IF statement is considered nested, because its scope is entirely within the scope of another IF statement.
  5. IF statements within IF statements are paired combinations, beginning with IF and ending with ELSE or END-IF; this pairing proceeds from left to right. Thus, an ELSE or END-IF phrase applies to the first preceding unpaired IF.

Additional References

Examples

  1. No ELSE phrase:


    IF ITEMA < 20
      MOVE "X" TO ITEMB.
    
    ITEMA ITEMB
    4 "X"
    35 ?
    19 "X"
  2. With ELSE phrase:


    Previous Next Contents Index