OPEN DATASET - os_additions
... [TYPE attr]
[FILTER opcom] ...
These additions can be used to make operating system-specific settings and set operating system statements.
... TYPE attr
The behavior of this addition depends on the operating system of the
If the operating system is not an MS Windows operating system, a character-like field can be specified
attr that contains operating system-specific parameters for the file
that is to be opened. These parameters are passed to the operating system of the application server unchanged, and without being checked for correctness.
If the operating system is an MS Windows operating system, and the file is opened as a
text file or as a
legacy text file and the
WITH LINEFEED is not used, the content of
attr controls the end-of-line marking of the text file:
attrcontains the value "NT", the end-of-line is marked by "CRLF".
attrcontains the value "UNIX", the end-of-line is marked by "LF".
All other values of
attr are ignored in MS Windows operating systems, and
the end-of-line marking is opened in the same way as described in the addition
Instead of specifying the values "UNIX" or "NT" after
TYPE, we recommend using the addition
If it is used, the values "UNIX" or "NT" cannot be specified.
Creating a file
test.dat. The properties entered under
TYPE are specific for the operating system IBM i5/OS (previously OS/400).
OPEN DATASET 'test.dat' TYPE 'lrecl=80, blksize=8000, recfm=FB' FOR OUTPUT IN TEXT MODE ENCODING DEFAULT WITH SMART LINEFEED.
... FILTER opcom
This addition can be used if the operating system of the application server supports pipes (Unix and
MS Windows). A character-like field can be specified for
opcom, which contains an operating system statement that corresponds to the appropriate command-level syntax.
When the statement
is executed, a process is started in the operating system for the specified statement. When the file
is opened for reading, a channel (pipe) is linked with STDOUT of the process, from which the data is
read during file reading. The file itself is linked with STDIN of the process. When the file is opened
for writing, a channel (pipe) is linked to STDIN of the process, to which data is passed when writing. The output of the process is diverted to this file.
- When working with pipes, it must be ensured that the pipe only exists in the current work process. If a change of work process takes place during the time that the file is open, the pipe is lost and an attempted read or write access raises a handleable exception of the class CX_SY_PIPE_REOPEN.
Pipes should only be used for operating system statements required in association with files. No other operating system statements should be used. Use the
SXPG framework instead. See also
Unwanted Calls of Operating System Statements.
Using operating system statements that are injected into a program from outside is a serious security risk. Any statements passed to a program from outside must be checked thoroughly before being used. See System Command Injections.
On a Unix platform, a
compress filter is started for writing, and an
uncompress filter is started for reading. When the file is accessed for writing the data is compressed, and when it is accessed for reading, the data is decompressed.
DATA file TYPE string VALUE `/usr/test.Z`. OPEN DATASET file FOR OUTPUT IN BINARY MODE FILTER 'compress'. ... CLOSE DATASET file. OPEN DATASET file FOR INPUT IN BINARY MODE FILTER 'uncompress'. ... CLOSE DATASET file.