EJECT

#### Search Results

Search

# EJECT

This document covers the following topics:

- Function

- Syntax Description

- Processing

- Example

Related Statements: `AT END OF PAGE` | `AT TOP OF PAGE` | `CLOSE PRINTER` | `DEFINE PRINTER` | `DISPLAY` | `FORMAT` | `NEWPAGE` | `PRINT` | `SKIP` | `SUSPEND IDENTICAL SUPPRESS` | `WRITE` | `WRITE TITLE` | `WRITE TRAILER`

Belongs to Function Group: Creation of Output Reports

## Function

The `EJECT` statement may be used to control page advance/page ejection.

## Syntax Description

Two different structures are possible for this statement.

- EJECT - Syntax 1

- EJECT - Syntax 2

For an explanation of the symbols used in the syntax diagrams below, see Syntax Symbols.

### EJECT - Syntax 1

`EJECT` |  | `ON` |  | [(rep)]
`OFF`

Syntax Element Description:

Syntax Element | Description
--- | ---
`EJECT ON/OFF (rep)` | With Report Specification - Online and Batch Modes:
`EJECT OFF (rep)` | Causes no page advance (except as specified with Syntax 2 of the `EJECT` statement) for the specified report to be executed.
`EJECT ON (rep)` | Causes page advances for the specified report to be executed.
`EJECT ON/OFF` | Without Report Specification - Batch Mode only: Without report notation `(rep)`, `EJECT ON/OFF` may be used in batch mode to control page ejection between the output listings created during the execution of a program.
`EJECT ON` | Causes Natural to generate a page eject between the source program listing, the output report and the message
    EXECUTION COMPLETED
. This is the default setting.
`EJECT OFF` | Causes Natural to suppress page breaks between the above output. `EJECT OFF` remains in effect until revoked with a subsequent `EJECT ON` statement.
`(rep)` | Report Specification: The notation `(rep)` may be used to specify the identification of the report for which the `EJECT` statement is applicable. A value in the range 0 - 31 or a logical name which has been assigned using the `DEFINE PRINTER` statement may be specified. If `(rep)` is not specified, the `EJECT` statement will be applicable to the first report (Report 0). For information on how to control the format of an output report created with Natural, see Report Format and Control in the Programming Guide.

### EJECT - Syntax 2

This form of the `EJECT` statement may be used to cause a page advance without a title or heading line being generated on the next page and without `TOP/END PAGE` processing.

`EJECT` | [( rep )] |  |  | `IF` |  | `LESS` [`THAN`] operand1 [`LINES`] [`LEFT`] |
`WHEN`

Operand Definition Table:

Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition
--- | --- | --- | --- | ---
`operand1` | C | S |  |  |  |  | N | P | I |  |  |  |  |  |  |  |  | yes | no

Syntax Element Description:

Syntax Element | Description
--- | ---
`(rep)` | Report Specification: The notation `(rep)` may be used to specify the identification of the report for which the `EJECT` statement is applicable. A value in the range 0 - 31 or a logical name which has been assigned using the `DEFINE PRINTER` statement may be specified. If `(rep)` is not specified, the `EJECT` statement will be applicable to the first report (Report 0). For information on how to control the format of an output report created with Natural, see Report Format and Control in the Programming Guide.
`IF LESS THAN operand1 LINES LEFT` | IF LESS THAN ... LINES LEFT Clause: A page advance will be performed only when the current line for the page is greater than the page size minus `operand1`. The value for `operand1` may be specified as a numeric constant or as a variable.

## Processing

The execution of an `EJECT` statement does not cause any statements used with an `AT TOP OF PAGE`, `AT END OF PAGE`, `WRITE TITLE` or `WRITE TRAILER` statement to be executed. It does not affect system functions evaluated by `DISPLAY GIVE SYSTEM FUNCTIONS`.

`EJECT` causes a new physical page only. It causes the Natural system variable `*LINE-COUNT` to be set to `1` but has no effect on the setting of the Natural system variable `*PAGE-NUMBER`.

## Example

    ** Example 'EJTEX1': EJECT
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPLOY-VIEW VIEW OF EMPLOYEES
      2 CITY
      2 NAME
      2 JOB-TITLE
    END-DEFINE
    *
    FORMAT PS=15
    LIMIT 9
    READ EMPLOY-VIEW BY CITY
      /*
      AT START OF DATA
        EJECT
        WRITE /// 20T '%' (29) /
                  20T '%%'                          47T '%%' /
                  20T '%%' 3X 'REPORT OF EMPLOYEES' 47T '%%' /
                  20T '%%' 3X '  SORTED BY CITY   ' 47T '%%' /
                  20T '%%'                          47T '%%' /
                  20T '%' (29) /
        EJECT
      END-START
      EJECT WHEN LESS THAN 3 LINES LEFT
      /*
      WRITE '*' (64)
      DISPLAY NOTITLE NOHDR CITY NAME JOB-TITLE 5X *LINE-COUNT
      WRITE '*' (64)
    END-READ
    END

#### Output of Program EJTEX1:

                         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                         %%                         %%
                         %%   REPORT OF EMPLOYEES   %%
                         %%     SORTED BY CITY      %%
                         %%                         %%
                         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#### After pressing ENTER:

    ****************************************************************
    AIKEN                SENKO                PROGRAMMER                         2
    ****************************************************************
    ****************************************************************
    AIX EN OTHE          GODEFROY             COMPTABLE                          5
    ****************************************************************
    ****************************************************************
    AJACCIO              CANALE               CONSULTANT                         8
    ****************************************************************
    ****************************************************************
    ALBERTSLUND          PLOUG                KONTORASSISTENT                   11
    ****************************************************************
    ****************************************************************
    ALBUQUERQUE          HAMMOND              SECRETARY                         14
    ****************************************************************

#### After pressing ENTER:

    ****************************************************************
    ALBUQUERQUE          ROLLING              MANAGER                            2
    ****************************************************************
    ****************************************************************
    ALBUQUERQUE          FREEMAN              MANAGER                            5
    ****************************************************************
    ****************************************************************
    ALBUQUERQUE          LINCOLN              ANALYST                            8
    ****************************************************************
    ****************************************************************
    ALFRETON             GOLDBERG             JUNIOR                            11
    ****************************************************************

### On this page

- Function
- Syntax Description
- Processing
- Example