HPlogo 900 Series HP 3000 Computer Systems: MPE/iX Intrinsics Reference Manual > Chapter 4 Command Definitions

FCONTROL

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

NM and CM callable.

Performs various control operations on a file or on the device where the file resides, including:

  • Supplying a printer or terminal carriage control directive.

  • Verifying I/O.

  • Reading the hardware status word for the device where the file resides.

  • Setting a terminal's timeout interval.

  • Repositioning a file at its beginning.

  • Writing an end-of-file marker.

  • Skipping forward or backward to a tape mark.

Syntax

           I16V    I16V     *

   FCONTROL(filenum,itemnum,item);

Parameters

filenum

16-bit signed integer by value (required)

Passes the file number of the file for which the control operation is to be performed.

itemnum

16-bit signed integer by value (required)

Specifies which operation is to be performed (refer to Table 4-3 “FCONTROL Itemnum/Item Values”).

item

type varies (required)

Passes/returns a value associated with a control operation as indicated by the corresponding itemnum parameter (refer to Table 4-3 “FCONTROL Itemnum/Item Values”).

(KSAM) This parameter is ignored, but must be specified to satisfy internal requirements.

Table 4-3 FCONTROL Itemnum/Item Values

ItemnumMnemonicItem Description
0U16

General device control:

The value specified is passed to the appropriate device driver. A value from the driver is returned in item. Not valid for spooled device files.

1U16

Carriage control (CCTL):

Passes a carriage control directive to the driver of the specified nonspooled device file, regardless of whether the file is opened CCTL or NOCCTL. For spooled devices, use FWRITE to pass carriage control directives. (Refer to the FWRITE intrinsic for these directives.)

If item passes either the prespacing (%101 or %401) or postspacing (%100 or %400) carriage control directives, one of the following values is returned in item, indicating the setting of the device prior to the FCONTROL call:

0

Postspacing

1

Prespacing

If both a mode control directive and a carriage control directive need to be specified, an additional call to FWRITE or FCONTROL must be made.

This itemnum is ignored for byte stream files. It is not applicable to directories since applications are not permitted to write to directory files.

Default: postspacing with automatic page eject (except for FORTRAN77/XL and COBOLII/XL: prespacing with automatic page eject).

2I16

Complete I/O:

Ensures that requested I/O has been physically completed. Valid only for buffered files. Posts the block being written (full or not). Ignored for message files.

Item is ignored.

This itemnum is supported for byte stream files. It is not applicable to directories since applications are not permitted to write to directory files.

(KSAM) A checkpoint record is written. In the event of a system crash, recovery would be done to this state of the files.

3U16

Device status:

Returns a record containing information about the state of the device associated with the file immediately after the last I/O operation (including HPFOPEN/FOPEN) on the file. The record size and contents are device-dependent.

4U16

Set read timeout interval:

Passes the timeout interval, in seconds, to be applied to the next read from the specified file. The maximum value allowed is 65,535 seconds. If input is requested from a file but is not received in this interval, the FREAD request terminates with CCL (1). The interval is specified in seconds and returned no value. If this interval is zero, any previously established interval is cancelled, and no timeout occurs.

If a timeout value is being set for a read posted against a device connected through a PAD, add enough time to compensate for time delays that may be caused by the network.

A timeout value should be used for programs reading from an unattended device to prevent "hangs". Timeouts can be used to terminate binary reads (only as a safeguard to prevent a program from waiting forever for a read to complete).

Only valid for terminal and message files. Only affects the next read if the file is being read from the terminal; it must be reissued for each read. If this code is applied to a message file, item specifies the length of time that a process waits when reading from an empty file or writing to a full one and the timeout remains enabled until it is explicitly cancelled.

During block mode reads, the timer halts when a DC2 character is received. At this time, the block mode read timer is activated by the system; its values are not user changeable.

5U16

Reposition file at its beginning:

The next record, read or written, is the first record in the file. Not valid for files accessed as append-only. On a labeled magnetic tape file or serial disk file, the tape is positioned at the beginning of the opened file, and not necessarily at the beginning of the volume. Rejected for spooled DATA tapes.

Item is ignored.

This itemnum is supported for byte stream files and all types of directories.

(KSAM) The file is repositioned to the first logical record; the record with the lowest value in the current key.

6U16

Write end-of-file:

Marks the end-of-file (EOF) on disk or magnetic tape and is effective only for those devices:

  • If used for a disk file it writes a logical end-of-data marker where the file was last accessed. The disk file label is updated and written to disk.

  • If used for a file residing on unlabeled magnetic tape, a tape mark is written at that current position.

  • If used for message files, it verifies the state of the file by writing the file label and buffer area to disk; ensures the message file can survive system crashes. No EOF is written.

  • If used for KSAM files, it performs the function of itemnum=2 and writes the file label. This guarantees that the end-of-file is correct and the extent bit map is updated.

Rejected for spooled DATA tapes and labeled magnetic tape files.

Item is ignored.

This itemnum is supported for byte stream files. It is not applicable to directories since applications are not permitted to write to directory files.

7U16

Space forward to tape mark:

Moves a magnetic tape forward until a tape mark is encountered. If used on labeled magnetic tapes, the tape is positioned at the beginning of user trailer labels, if any. Rejected for spooled DATA tapes.

Item is ignored.

(KSAM) Not used for KSAM XL files. For KSAM/3000 files, it clears the key and data buffers of all information and reads the first 2 sectors of the key file from disk to buffer.

8U16

Space backward to tape mark:

On unlabeled tapes, moves a magnetic tape backward until a tape mark is encountered. If used on labeled tapes, the tape is positioned at the beginning of user header labels, if any. Rejected for spooled DATA tapes.

Item is ignored.

(KSAM) Not used for KSAM files.

9U16

Rewind and unload tape:

Repositions a magnetic tape file at its beginning and places the tape offline. Not allowed for labeled tapes. Rejected for spooled DATA tapes and labeled magnetic tape files.

Item is ignored.

10U16

Change line speed of a device:

Passes a value specifying a new line speed for both input and output.

The value passed must be expressed in characters per second (1 character per second = 10-bits per second). The supported choices are:

30

(300 bps)

120

(1200 bps)

240

(2400 bps)

960

(9600 bps)

1920

(19200 bps)

Any setting other than those listed returns CCL (1).

The speed associated with the device must match the physical speed settings of the device/modem. If the speed setting is changed programmatically, a request that the speed setting of the device be manually changed should be made.

If issued against a terminal connected through PAD, CCE (2) is returned, but there is no effect on the transmission speed, and a meaningless value is returned in item.

When a device is initially opened programmatically, the speed is set to the default device speed. If the device is opened as a logon device (configured with speed and parity sensing enabled), the speed setting is sensed from the first carriage return character received. The default device speed is configured through the Node Management Configuration Manager (NMMGR) or the OpenView DTC Manager (networks managed by an OpenView workstation). Reconfigure the device to permanently change the speed.

Not reset in break mode; not reset after FCLOSE.

Item is ignored.

11U16

Change line speed of a device:

Passes a value specifying a new line speed for both input and output.

The value passed must be expressed in characters per second (1 character per second = 10-bits per second). The supported choices are:

30

(300 bps)

120

(1200 bps)

240

(2400 bps)

960

(9600 bps)

1920

(19200 bps)

Any setting other than those listed returns CCL (1).

The speed associated with the device must match the physical speed settings of the device/modem. If the speed setting is changed programmatically, a request that the speed setting of the device be manually changed should be made.

If issued against a terminal connected through PAD, CCE (2) is returned, but there is no effect on the transmission speed, and a meaningless value is returned in item.

When a device is initially opened programmatically, the speed is set to the default device speed. If the device is opened as a logon device (configured with speed and parity sensing enabled), the speed setting is sensed from the first carriage return character received. The default device speed is configured through the Node Management Configuration Manager (NMMGR) or the OpenView DTC Manager (networks managed by an OpenView workstation). Reconfigure the device to permanently change the speed.

Not reset in break mode; not reset after FCLOSE.

Item is ignored.

12U16

Enable echo facility:

Returns a value indicating the previous echo status:

0

Echo ON

1

Echo OFF

When enabled, all characters transmitted to the DTC are echoed onto the terminal's screen (DTC echo). When the system is initialized, all characters are echoed except for XON, XOFF, NULL, DEL, and DC2. During binary reads, all characters are passed as data and echoed. For this reason, echo should be disabled while in binary mode.

During block mode processing, echo should be disabled and local echo should be used to cause the terminal to write data back to the screen. If VPLUS is being used for block mode applications, this is done automatically. For all other types of block mode, disable echo before the block mode read begins.

Echo should be disabled if a terminal user is entering data that should not appear on the screen (for example, passwords or lockwords).

Echo should be disabled when connecting some nonsupported devices to an asynchronous port.

Reset in break mode; not reset after FCLOSE. (Default)

13U16

Disable echo facility:

Returns a value indicating the previous echo status:

0

Echo ON

1

Echo OFF

When enabled, all characters transmitted to the DTC are echoed onto the terminal's screen (DTC echo). When the system is initialized, all characters are echoed except for XON, XOFF, NULL, DEL, and DC2. During binary reads, all characters are passed as data and echoed. For this reason, echo should be disabled while in binary mode.

During block mode processing, echo should be disabled and local echo should be used to cause the terminal to write data back to the screen. If VPLUS is being used for block mode applications, this is done automatically. For all other types of block mode, disable echo before the block mode read begins.

Echo should be disabled if a terminal user is entering data that should not appear on the screen (for example, passwords or lockwords).

Echo should be disabled when connecting some nonsupported devices to an asynchronous port.

Reset in break mode; not reset after FCLOSE.

14U16

Disable system break function:

Enter a value of 1 to disable the system break function.

System break is enabled by default for any terminal on which a session is active. If a user presses BREAK or a process calls the CAUSEBREAK intrinsic, the system attempts to interrupt the processing and place the terminal at the command interpreter level. Many system commands and program commands (that invoke subsystems or run user programs) are breakable.

When the system break is enabled and received, EOR, read timer, terminal mode, and echo values are saved by the DTS software. This allows restoration when normal processing is resumed. If a system break is entered during processing of a character mode read or write, data is lost. Any read that is interrupted by a break is reissued by the system after a RESUME command is entered.

Some application programs change the settings of terminals and/or the characteristics of their device files. In these cases, it may be undesirable to allow system break processing to occur. For example, disable system break when using block mode. This prevents data loss or corruption that could occur if BREAK is pressed during a block mode read.

Reset after FCLOSE. If BREAK is pressed while system break is disabled, no action is taken by any level of software. System break has no effect on a device with no active session.

15U16

Enable system break function:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

System break is enabled by default for any terminal on which a session is active. If a user presses BREAK or the CAUSEBREAK intrinsic is called, the system attempts to interrupt the processing and place the terminal at the command interpreter level. Many system commands and program commands (that invoke subsystems or run user programs) are breakable.

When the system break is enabled and received, EOR, read timer, terminal mode, and echo values are saved by the DTS software. This allows restoration when normal processing is resumed. If a system break is entered during processing of a character mode read or write, data is lost. Any read that is interrupted by a break is reissued by the system after a RESUME command is entered.

Some application programs change the settings of terminals and/or the characteristics of their device files. In these cases, it may be undesirable to allow system break processing to occur. For example, disable system break when using block mode. This prevents data loss or corruption that could occur if BREAK is pressed during a block mode read.

Reset after FCLOSE. (Default) If BREAK is pressed while system break is disabled, no action is taken by any level of software. System break has no effect on a device with no active session.

16U16

Disable subsystem break function:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

Subsystem break is initially disabled on all devices; it must be enabled before it can be used. It is available only for devices running sessions and has no effect on programmatically controlled devices. Subsystem break is reset to disabled at FCLOSE.

When enabled, the user can stop a program-local or subsystem-local command. It is invoked by the subsystem break character. (The default subsystem break character is CTRLY.)

When enabled for a terminal connected through PAD, the subsystem break must be followed by RETURN to signal the PAD that data is ready.

Before enabling the subsystem break, call the XCONTRAP intrinsic to arm the subsystem break trap procedure. When a subsystem break is entered, the subsystem break trap is disarmed. The RESETCONTROL intrinsic must be called to allow another subsystem break to occur.

Subsystem break processing is summarized as follows:

  1. A user-written procedure must be provided defining how the subsystem break trap handler will react upon receipt of a subsystem break. The user program must contain:

    • The user written procedure.

    • A call to XCONTRAP, specifying the external label of the procedure; this arms the subsystem break trap.

    • A call to FCONTROL Itemnum=17, enabling the subsystem break function.

    • A call to RESETCONTROL when the program is ready to receive another subsystem break.

  2. A new subsystem break character can be defined through FCONTROL Itemnum=41 if the terminal is placed in transparent mode or through FDEVICECONTROL, which allows a subsystem break character to be defined without placing the device in the transparent mode.

  3. At any time, FCONTROL can be called to disable the subsystem break.

Reset in break mode; reset after FCLOSE. (Default)

17U16

Enable subsystem break function:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

Subsystem break is initially disabled on all devices; it must be enabled before it can be used. It is available only for devices running sessions, and has no effect on programmatically controlled devices. Subsystem break is reset to disabled at FCLOSE.

When enabled, the user can stop a program-local or subsystem-local command. It is invoked by the subsystem break character. (The default subsystem break character is CTRLY.)

When enabled for a terminal connected through PAD, the subsystem break must be followed by RETURN to signal the PAD that data is ready.

Before enabling the subsystem break, call the XCONTRAP intrinsic to arm the subsystem break trap procedure. When a subsystem break is entered, the subsystem break trap is disarmed. The RESETCONTROL intrinsic must be called to allow another subsystem break to occur.

Subsystem break processing is summarized as follows:

  1. A user-written procedure must be provided defining how the subsystem break trap handler will react upon receipt of a subsystem break. The user program must contain:

    • The user written procedure.

    • A call to XCONTRAP, specifying the external label of the procedure; this arms the subsystem break trap.

    • A call to FCONTROL itemnum=17, enabling the subsystem break function.

    • A call to RESETCONTROL when the program is ready to receive another subsystem break.

  2. A new subsystem break character can be defined through FCONTROL itemnum=41 if the terminal is placed in transparent mode or through FDEVICECONTROL, which allows a subsystem break character to be defined without placing the device in the transparent mode.

  3. At any time, FCONTROL can be called to disable the subsystem break.

Reset in break mode; reset after FCLOSE. (Default)

18U16

Disable tape option

(Default)

Item is ignored.

19U16

Enable tape option:

Item is ignored.

20U16

Disable the terminal input timer:

Reset in break mode; reset after FCLOSE. (Default)

Item is ignored.

21U16

Enable the terminal input timer:

Reset in break mode; reset after FCLOSE.

Item is ignored.

22U16

Read the terminal input timer:

Item returns the measured time duration of the last read.

The result of the read duration timer is returned in hundredths of a second, up to 655.35 seconds.

The operating system times each and every read, therefore, this call should immediately follow the read of interest with no subsequent reads between.

23U16

Disable parity checking and generation:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

If a call is issued against a terminal connected through PAD, CCE (2) is returned, but the device control action does not take place.

Parity can be used for terminals opened programmatically and for those in session mode. The default for these is to operate in 8-bit pass-through mode (no parity).

If a terminal detects a parity error, it displays the PAD character.

If a parity error is detected by ASC software, the current read is completed in error, and no read data is returned. The ASC software reports the error to the program reading the data.

24U16

Enable parity checking and generation

Item has no meaning; enter a value of 0 to satisfy internal requirements.

If a call is issued against a terminal connected through PAD, CCE (2) is returned, but the device control action does not take place.

Parity can be used for terminals opened programmatically and for those in session mode. The default for these is to operate in 8-bit pass-through mode.

If a terminal detects a parity error, it displays the PAD character.

If a parity error is detected by ASC software, the current read is completed in error, and no read data is returned. The ASC software reports the error to the program reading the data.

When enabled, the ASC software generates parity on outgoing data and checks the parity errors on incoming data. After the parity is checked, the parity bit is always set to zero. (The program using the data does not need parity data.) Parity checking is handled the same in block mode and in character mode.

When enabling parity, ensure that the program also requests the terminal operator to change the physical parity setting of the terminal to the new setting of the ASC software. Also, if the terminal is to check parity on incoming data, the local terminal control (used to turn parity checking on or off) should be set to ON.

25U16

Define additional end-of-record characters:

Item passes the value of a character to be used as an additional end-of-record (AEOR) character. The octal or decimal code for the character must be in the right byte of the parameter; the left byte is ignored. If the NULL character (%0) is specified, default EOR conditions are restored.

Normally, character mode reads using standard editing are terminated by a RETURN. The system echoes the carriage return and sends a linefeed to the terminal, the cursor is positioned at the beginning of the next line, ready for the next read. If an AEOR is assigned, an EOR character still terminates a read as usual.

When a read is terminated by an AEOR, the AEOR character is included in both the data and byte counts. No carriage return or line feed is sent to the terminal. The read terminates with an error condition indicating that the AEOR character was encountered.

The AEOR character is also recognized in transparent editing mode, along with a user-defined EOR character. (This replaces the normal EOR character.)

To disable the AEOR character, indicate item=0.

The following are not recognized as AEOR characters:

ASCII Octal Hex Terminal Characters Code Code Keys NUL (null) %0 $0 CTRL@ DC1 (XON) %21 $11 CTRLQ DC3 (XOFF) %23 $13 CTRLS DEL (Rubout) %31 $19 DEL Subsystem Break %177 $77F CTRLY (default)

Note: Avoid using characters that have a special meaning specifically, carriage return, linefeed, cancel, backspace, DC2, or escape. These characters will be recognized and processed, but they can result in unpredictable and unsuccessful results.

Do not use CTRLA as an AEOR character at the console.

26U16

Disable binary mode:

Item has no meaning, enter a value of 0 to satisfy internal requirements.

Ignored for terminals connected through PAD.

Binary mode is disabled by default.

27U16

Enable binary mode:

Item has no meaning, enter a value of 0 to satisfy internal requirements.

If this call is issued to a device connected through PAD, it is ignored; however, the next FREAD posted to the device returns an error.

When binary mode is enabled, no special characters are processed; all characters are considered data and are passed through without any terminal control actions being taken. After a binary read, no carriage return or line feed is sent to the terminal. All carriage control directives are ignored on writes. Unless echo is disabled, any ASCII DC3 (XOFF) character passed in data is echoed to the terminal, and the terminal is suspended. Block mode transfers cannot be made.

Binary mode does not take effect until a read is posted to the device following the FCONTROL call. If binary mode is enabled for both reads and writes, post a 0 byte read immediately after the call to ensure binary mode is enabled.

Binary mode is useful for transferring 8-bit data to and from a terminal. Because all 8-bits are considered to be data, binary mode is not compatible with parity checking; parity must be disabled.

In session mode, a system break restores standard editing at the terminal. If RESUME is entered following the system break, binary mode is restored when the first read is posted.

Binary reads are terminated on byte count, as specified in the FREAD, READ, or READX call. Errors and read timeouts also terminate binary reads, but an error code is returned and no data is transferred.

28U16

Disable user block mode:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

Ignored for terminals connected through PAD.

User block mode is not supported with terminal type 18.

Under system default conditions, block mode processing occurs through a method called Hewlett-Packard block mode. The system controls the block mode handshake if block mode transfers are being made and the program does not need to worry about the data transfer protocol. The host transmits a DC1 character to inform the terminal that the system is ready to receive data. The terminal responds with a DC2 character to inform the system that the next data transfer is a block mode transmission. The terminal then waits for the host to send a second DC1 character to initiate the read.

When transmitting data in block mode, the terminal must be configured to be compatible with the system and the application requesting the block mode transfer.

Note: Data overruns can occur during block mode transfers. The program must check for successful completion of each read, and retry as required. Use of timers during block mode is encouraged to eliminate port "hangs" due to a data overrun occurring when the last character is read. The standard block mode read timer is disabled when the user block mode protocol is enabled.

Not reset in break mode; not reset after FCLOSE. (Default)

29U16

Enable user block mode:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

Ignored for terminals connected through PAD.

User block mode is not supported with terminal type 18.

When user block mode is enabled and block mode transfers are being made, the program can intervene in the block mode handshake. A user block mode transaction begins with the DC1 character and then the program takes control of the handshake until the DC2 character is encountered. The program can perform additional terminal control functions, such as positioning the terminal cursor, performing status requests, or collating additional space for buffers before continuing with the data transfer. When the program is ready to receive block mode data, an additional read must be issued (DC1 character) to complete the handshake.

When transmitting data in block mode, the terminal must be configured to be compatible with the system and the application requesting the block mode transfer.

Note: Data overruns can occur during block mode transfers. The program must check for successful completion of each read, and retry as required. Use of timers during block mode is encouraged to eliminate port "hangs" due to a data overrun occurring when the last character is read. The standard block mode read timer is disabled when the user block mode protocol is enabled.

Not reset in break mode; not reset after FCLOSE. Under default conditions, user block mode is disabled.

34U16

Enable line deletion response:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

In character mode, with standard editing, the computer will output !!!, carriage return, and line feed when the line deletion (cancel) character is entered. This is referred to as CTRLX echo (the default line deletion character).

Not reset in break mode; reset after FCLOSE. (Default)

For devices connected through PAD the line deletion response is never printed in response to the line deletion character. If this call is issued, condition code CCE (2) is returned, but no device control action occurs.

35U16

Disable line deletion response:

Item has no meaning; enter a value of 0 to satisfy internal requirements.

The line deletion response can be suppressed by calling this parameter. The data is deleted in the input buffer, but no !!!, carriage return, line feed is issued.

Not reset in break mode; reset after FCLOSE (enables line deletion suppression, the system default condition).

For devices connected through PAD, the line deletion response is never printed in response to the line deletion character. If this call is issued, condition code CCE (2) is returned, but no device control action occurs.

36U16

Set parity:

Item passes a value representing the specified parity condition and then returns the value of a previous setting:

0

No parity check on input, eighth bit set to 0 on output (parity type = zeros)

1

No parity check on input, eighth bit set to 1 on output (parity type = ones)

2

Even parity checked on input, even parity generated on output (parity type = even)

3

Odd parity checked on input, odd parity generated on output (parity type = odd)

When specified, this option changes the terminal parity setting, and the previous setting is returned to the call as the new value of item. It is possible to determine a terminal's parity setting with parity disabled.

Parity cannot be used with 8-bit character sets.

Ignored for devices connected through PAD.

37U16

Set terminal type and speed:

Item passes a value specifying line speed and terminal type. Bits (0:11) specify the line speed; bits (11:5) specify the terminal type.

Ensure that the speed associated with a device matches the physical speed setting of the device and modem (if part of the connection). If the device speed is being changed programmatically, request that the speed setting be manually changed on the device.

If an attempt is made to set an unsupported speed or terminal type, condition code CCL (1) is returned.

Do not use this call to specify a user-defined terminal type.

If used for devices connected through PAD, the call changes the terminal type setting, but does not change how the device actually operates. Condition code CCE (2) is returned.

38U16

Set terminal type

Item passes the value of the system-defined terminal type to be associated with an asynchronous port.

Changes the terminal type associated with a port to another system-defined terminal type. The new terminal type remains in effect until another FCONTROL call is made or the device is closed. If the device is closed, the port resets to its configured terminal type.

The terminal type specified must be a currently supported system-defined terminal type. If another value is used, condition code CCL (1) is returned.

This call cannot be used to change to a user-defined terminal type.

If used for a terminal connected through PAD, there is no effect on the terminal control settings of the device. Condition code CCE (2) is returned.

39U16

Obtain terminal type information

Item returns the terminal type associated with the asynchronous port. Use this information to get the original setting before calling itemnum=37 or 38.

Note: Do not confuse the current terminal type returned with the default terminal type specified during system configuration. Changing the terminal type during logon or through system intrinsics can cause a difference from the configured setting. To reset the configured terminal type, use itemnum=37 and item=0 or close the device.

40U16

Obtain terminal output speed

Item returns the current line speed associated with an asynchronous port in characters per second. Use this information to get the original setting before calling itemnum=11 or 37.

Note: Do not confuse the current line speed returned with the default line speed specified during system configuration. Changing the line speed through system intrinsics can cause a difference from the configured setting. To reset the configured line speed, use itemnum=37 and item=0 or close the device.

If used for a terminal connected through PAD, the value returned in item is meaningless. Condition code CCE (2) is returned.

41U16

Enable transparent editing:

Item passes a value to be used as a subsystem break character in bits (0:8) and a value to be used as a read terminator in bits (8:8). Returns the values previously assigned for use as subsystem break and read terminator characters.

When enabled, allows most special characters to be read and treated as data and a small subset to retain their meaning:

AEOR

The AEOR character defined through a previous call to itemnum=25. The read terminates in error, and a call to FCHECK returns an error code of 31. The AEOR character is passed with the data and included in the byte count.

BREAK

Causes a system break (when enabled) and transfers control to the operating system. If the RESUME command is entered, transparent editing is resumed.

CTRLQ (DC1 or XON)

The resume output character of the XON/XOFF handshake. This character is stripped from the input data when XON/XOFF protocol is enabled.

DC2

When input as the first character, it is stripped out. A DC1 (CTRLQ) is written to the terminal. If not input as the first character, DC2 is a data character.

CTRLS (DC3 or XOFF)

The stop output character of the XON/XOFF handshake. This character is stripped from the input data when XON/XOFF protocol is enabled.

item bits (0:8)

Specifies the character that replaces the subsystem break character. Any character not defined as a special character in transparent mode (including the standard subsystem break character) can be used. If set to 0, subsystem break is disabled.

item bits (8:8)

Specifies the character that replaces the line termination character (EOR). Any character not defined as a special character in transparent mode can be used.

Item=0 disables transparent editing mode and returns to standard editing mode.

Transparent mode reads can be terminated in any of the following ways:

  • The read encountered the EOR character defined in item. This character functions like a RETURN character in normal reads and is stripped when found. No carriage return or line feed is sent to the terminal.

  • The read encountered an AEOR character, defined through a previous call to FCONTROL itemnum=25. The read completes with an error condition and the AEOR character is passed with the input data and and included in the byte count. No carriage return or line feed is sent to the terminal.

  • The expected byte count is reached. The read is terminated normally, and carriage return and line feed are sent to the terminal.

  • The read limit timer expired. All data is lost and the read terminates in error.

Break or subsystem break processing, if not disabled, occurs in transparent editing. During a break, the terminal operates in standard editing mode. The terminal returns to transparent editing mode if the RESUME command is entered. During a subsystem break, the terminal operates the way the application program describes.

Parity processing is the same in transparent editing as it is in standard editing.

Any FCLOSE call issued against the terminal restores standard editing.

If used for a device connected through PAD, data is not forwarded from the terminal immediately after the characters defined as the subsystem break or EOR character are typed. The terminal user has to press RETURN to cause data to be transmitted, or wait for the data forwarding timer to expire (if set). The host software recognizes and acts on the characters defined in item.

43U16

Aborts pending nowait I/O request:

For message files, CCG (0) is returned when an outstanding I/O operation has completed. An IOWAIT call must be issued to finish the request.

45U16

Enable/disable extended wait:

Applicable only if filenum specifies a message file. An item value of 1 enables extended wait; permits a reader to wait on an empty file that is not currently opened by any writer, or a writer to wait on a full file that has no reader. This remains in effect until an FCONTROL call is issued with an itemnum 45 and an item value of 0. An item value of 0 specifies that if a second FREAD call is issued and it encounters an empty file that has no reader, it returns an end-of-file condition. Each assessor must call FCONTROL45 individually.

Default: 0

46U16

Enable/disable reading writer's ID:

Applicable only if filenum specifies a message file.

For interprocess communication, an item value of 1 enables reading the writer's ID. Each record read has a two-word header. The first word indicates the type of record:

0

Data record

1

Open record

2

Close record

The second word contains the writer's ID number. If the record is a data record, the data follows the header. Open and close records contain no more information. If the item value is 0, reading the writer's ID is disabled. Only data is read to the reader's target area. The open and close records are skipped and deleted by the file system when they come to the head of the message queue, and the two-word header is transparent to the reader.

Default: 0

47U16

Nondestructive read:

Applicable only if filenum specifies a message file.

If the item value is 1, the next FREAD by this reader does not delete the record. Subsequent FREAD calls are unaffected. When item is specified as 0, the next FREAD deletes the record.

Default: 0

48U32

Arm/disarm software interrupts:

Passes a value that arms/disarms the software interrupt mechanism (valid only if filenum specifies a message file). To arm the file's software interrupt, pass the external procedure label (NM plabel) or the interrupt procedure. To disarm the software interrupt, pass a value of zero.

51 

Append mode:

Enables or disables append mode based on the value of the item parameter. Append mode is enabled if item is one (1) and disabled if item is zero (0). Write operations append data at the end of a file while reads and seeks may occur anywhere within the file when POSIX append mode is enabled for that file.

Append mode differs from opening a file for append access in several ways:

1

Append mode can be enabled and disabled while a file is open. Append access is established when opening a file and cannot be changed dynamically for a file number.

2

Append access is a process-local attribute affecting only the access of the process open the file. Append mode affects all processes sharing a logical record pointer. (The MULTI and GMULTI options permits logical record pointers to be shared.)

3

A file's logical record pointer can be manipulated through FPOINT or FREADDIR when append mode is active. Append access prohibits logical record pointer operations. For example, call to FPOINT and FSPACE result in an access violation for files opened for append access.

This itemnum is supported only for byte stream files. If the file referenced by filenum is not a byte stream file. FCONTROL will fail with a CCL condition code. An error code of 42 (operation inconsistent with device type) is returned by FCHECK when it is called following this FCONTROL error.

52 

Set Nonblock

This option can be used to set and reset the Nonblock flag of a file. When the Nonblock flag is true, any attempt to perform I/O to the file, results in the I/O procedure returning without blocking. If the I/O can be performed without blocking, then the I/O is completed normally. When Nonblock is false, I/O's will block if necessary. The item parameter must be set to 1 in order to cause the Nonblock flag to be set to true. A value of zero will reset the Nonblock flag. Any other value fo the item parameter results in an error being returned.

The default value of item is 0.

Not all file types support this option.

53 

Close File on Exec

This option allows the caller to set or reset closure of a specified file when a POSIX exec( ) function is called. An item value of 0 causes the file remain open on an exec( ). A value of 1 causes the file to close when an exec( ) is performed. All other values of the item parameter return an FSERR 8 - ILLEGAL PARAMETER VALUE error. The default value of item is 0.

54 

This item provides for compatibility with the ioct( ) function found in most UNIX implementations. This option is only valid for streams and network socket files and tape devices. Any attempt to use this option with other file types results in an FSERR 8 - ILLEGAL PARAMETER VALUE error.

The item parameter must point to a structure that contains three ioctl( ) parameters:

  • Request

  • Arg

  • ioctl functional return

The first 32 bits contain a short pointer to the arg parameter. The arg parameter is pointed to by reference due to the variable length depending upon the requested function. The last 32 bits of the structure contains the address of the location to write the functional return. Due to the nature of the functional return, this item is an output only address. In pascal, the structure is defined as follows:

   ioctl_parm_ptr = ^ioctl_parm_type;



   ioctl_parm_type = record

      request      : integer;

      arg          : localanyptr;

      func_return  : localanyptr;



   end;

The caller must correctly fill in the values of the structure before calling the FCONTROL intrinsic. The functions that are supported through this option are defined as standard documentation on the ioctl( ) function.

 

NOTE: Itemnums 10 through 41 are used in changing terminal characteristics. Included with the definition of the code is an indication, where applicable, of whether the characteristic is reset in break mode or after FCLOSE. Characteristics that are reset in break mode are restored when there is a RESUME from break mode.

Operation Notes

The FCONTROL intrinsic applies to files on disk, tape, terminal, or line printers. There are some special conditions that exist when using FCONTROL with files on labeled magnetic tape. Some FCONTROL functions cannot be used with labeled tapes, and other functions can produce unexpected results. (Refer to itemnums 5, 6, 7, 8, and 9.)

NOTE: If you are performing control operations on terminal devices, refer to the Asynchronous Serial Communications Programmer's Reference Manual (32022-90002) for details on FCONTROL parameters specific to terminal control.

Condition Codes

CCE (2)

Request granted.

CCG (0)

Not returned.

CCL (1)

Request denied. An error occurred.

Related Information

Intrinsics

FWRITE, FDEVICECONTROL, RESETCONTROL, XCONTRAP

Commands

None

Manuals

Accessing Files Programmer's Guide (32650-90017), Interprocess Communication Programmer's Guide (32650-90019), MPE XL Asynchronous Serial Communications Programmer's Reference Manual (32022-90012), MPE/iX Commands Reference Manual Volumes 1 and 2 (32650-90003 and 32650-90364), Using KSAM XL (32650-90168), and Trap Handling Programmer's Guide (32650-90026)

Feedback to webmaster