SORT - Control of Sort Program

#### Search Results

Search

# SORT - Control of Sort Program

This Natural profile parameter is used to control the sort program used for the processing of `SORT` statements. It corresponds to the `NTSORT` macro in the Natural parameter module.

Possible settings | For an explanation of the individual sort options, see SORT Parameter Syntax; for their possible settings, see Keyword Subparameters.
Default setting | See Keyword Subparameters.
Dynamic specification | yes | This parameter can only be specified dynamically. In the Natural parameter module, the macro `NTSORT` is used instead.
Specification within session | no |

Notes:

1. The keyword subparameters of `SORT` or `NTSORT` can be used to specify options that control the handling of the sort program to be used when a `SORT` statement is executed.
2. The sort program to be used can be either Natural's internal one (the default for all environments) or an external one. The type of sort program used depends on the setting of the keyword subparameter `EXT`.

The following topics are covered below:

- SORT Parameter Syntax

- NTSORT Macro Syntax

- Keyword Subparameters

- Examples of SORT Parameter

- Examples of NTSORT Macros

## SORT Parameter Syntax

The `SORT` parameter is specified as follows:

SORT=(keyword-subparameter=value,keyword-subparameter=value,...)

For names and values of the keyword subparameters, see Keyword Subparameters.

## NTSORT Macro Syntax

The `NTSORT` macro is specified as follows:

             NTSORT EXT=value,                                             *
                   EXTEOJ=value,                                           *
                   EXTNAME=value,                                          *
                   EXTOPT=value,value,...,                                 *
                   STORAGE=value,                                          *
                   WRKSIZE=value

For names and values of the keyword subparameters, see Keyword Subparameters.

## Keyword Subparameters

`EXT` | `EXTEOJ` | `EXTNAME` | `EXTOPT` | `STORAGE` | `WRKSIZE`

### EXT - Use of External Sort Program

`EXT=value` specifies if an external sort program is to be used or not.

Value | Explanation
--- | ---
`ON` | An external sort program will be used. The use of an external sort program is possible only in batch environments, including IMS TM/BMP, and TSO.
`OFF` | The Natural sort program will be used. This is the default value.

Note
We recommend that you set `EXT=ON` if your environment supports the use of an external sort program. This avoids the need to adapt `WRKSIZE` to the amount of data to be sorted.

### EXTEOJ - Action in the Event of an Error

`EXTEOJ=value` specifies the action to be taken if an error is detected during the execution of the external sort program.

Value | Explanation
--- | ---
`ON` | If an error is detected, sort processing is terminated. `ON` requires that the sort program used is able to detect a return code of 16 from both the `E15` and `E35` sort exit routines.
`OFF` | If an error is detected, Natural withholds further calls to the sort program and ignores each record as it is passed to the `E35` sort exit routine (this is the default).

### EXTNAME - Name of External Sort Program

`EXTNAME=value` specifies the name of the external sort program to be used.

Value | Explanation
--- | ---
1 to 8 characters. | External sort program name.
`SORT` | This is the default value.

### EXTOPT - Additional Options for External Sort Program

`EXTOPT=(value,value,...)` specifies additional options for the external sort program.

Natural generates the necessary field and format parameters and passes them to the external sort program. With `EXTOPT`, you can specify additional parameters to be passed to the external sort program. You can only specify parameters that are part of the control statement syntax of your external sort program.

You can specify up to two option strings which are delimited by a slash (/). The first option string is appended to the `SORT` control statement, the second option string is used to build an `OPTION` control statement. You may omit the option string before or after the slash. If the option string after the slash is omitted no `OPTION` control statement is generated at all.

The whole option string must be enclosed in single quotes ('...'). For compatibility reasons, it is still possible to have the option string enclosed in brackets instead.

For compatibility reasons, a single option string without a leading or trailing slash is handled differently. Depending on the underlying operating system, the options are appended to the `SORT` control statement.

#### Example:

The additional parameters can be specified as in the following example:

    EXTOPT=(SIZE=E2000000,NOEQUALS,DYNALLOC=(3350,8))
    EXTOPT='SIZE=E2000000,NOEQUALS,DYNALLOC=(3350,8)'
    EXTOPT='SIZE=E2000000,NOEQUALS,DYNALLOC=(3350,8)/NOCHECK'
    EXTOPT='/NOCHECK'
    EXTOPT='WORK=4/'

### STORAGE - Type of Storage Medium

`STORAGE=value` specifies the type of storage medium to be used by Natural's internal sort program if there is not enough storage available in the work pool (`WRKSIZE`). If the number of records exceeds this storage, the internal sort program tries to use intermediate storage to additionally process records.

Value | Explanation
--- | ---
`MAIN` | Only the remaining storage of `WRKSIZE` is used, no other intermediate storage is available. This is the default setting.
`BP` | The sort buffer pool is used as intermediate storage.
`SD` | SD files are used as intermediate storage. This value is evaluated under Com-plete only.
`SMARTS` | SMARTS portable file system is used.

> SD Files under Com-plete/SMARTS

>   - The SD files used for sort processing are allocated as temporary SD files. They are allocated for a stack level. This means, the name syntax of the temporary SD files is:

>         &&STsnnn

>     Where:

>     `&&` | Indicator for a temporary SD file
>     `ST` | Standard prefix for the temporary SD file used for sort processing
>     `s` | Stack level
>     `nnn` | Sequence number within a single sort run

>   - SMARTS work files are located in the SMARTS Portable File System. The directory path must be specified with the SMARTS environment variable `$NAT_WORK_ROOT`. For a SMARTS work file used for sort processing, a `SORT` directory is created with subdirectories for each user who performed a sort: `$NAT_WORK_ROOT/SORT/userid`. The name of the work file used for sort processing corresponds to the name of the temporary SD file under Com-plete.

> Usage of Sort Buffer Pool

>   - The use of a sort buffer pool only makes sense if you cannot further increase the `WRKSIZE` to hold the sort records. This typically applies in online environments with a storage thread of limited size. In all other cases, you only need to specify a sufficient `WRKSIZE`.

>   - If you want to use a sort buffer pool, define the `SORT` keyword subparameter `STORAGE=BP` to indicate that a sort buffer pool is to be used for any additional storage beyond the defined `WRKSIZE`. Simultaneously, use the profile parameter `BPI` or the parameter macro `NTBPI` to make a buffer pool of `TYPE``=SORT` and `NAME``=name` known to Natural, for example: `BPI=(TYPE=SORT,NAME=XYZ)`. When a name is specified with the `BPI` keyword subparameter `NAME`, reference is made to a global sort buffer pool, whereas a local sort buffer pool can be specified by `NAME=' '` (blank).

### WRKSIZE - Size of Work Buffer Used by Sort Program

`WRKSIZE=value` specifies the size of the work buffer used by the sort program.

The work buffer specified by `WRKSIZE` accommodates internal sort control data. The remaining storage is used to collect and sort the records. The size of the sort control data depends on various factors (the `WRKSIZE` itself, the sort record length, the number of sort keys, their size and format) and can therefore not be calculated in a formal way.

Value | Explanation
--- | ---
`0` or `10 - 2097151` | Size of work buffer (in KB). `WRKSIZE=0` means that no sort operations can be performed.
`10` | This is the default value.

Note

## Examples of SORT Parameter

### Example 1:

    SORT=(EXT=OFF,WRKSIZE=1024)

The internal Natural sort program and a work buffer of 1 MB are used for sort processing.

### Example 2:

    SORT=(EXT=ON,EXTOPT='/EQUALS')

An external sort program with an `OPTION EQUALS` control statement is used for sort processing.

## Examples of NTSORT Macros

             NTSORT EXT=OFF,                                               *
                   WRKSIZE=1024

             NTSORT EXT=ON,                                                *
                   EXTOPT='/EQUALS'

The first example defines an internal Natural sort program and a work buffer of 1 MB. The second example defines an external sort program with an `OPTION EQUALS` control statement.

### On this page

- SORT Parameter Syntax
- NTSORT Macro Syntax
- Keyword Subparameters
- Examples of SORT Parameter
- Examples of NTSORT Macros