HP 3000 Manuals

FWRITE [ MPE/iX Intrinsics Reference Manual ] MPE/iX 5.0 Documentation


MPE/iX Intrinsics Reference Manual

FWRITE 

NM and CM callable.

Writes a logical or physical record or portion of a record from the stack
to a file on any device.

Syntax 
_________________________________________________
|                                               |
|              I16V   UDS   I16V    U16V        |
|     FWRITE(filenum,buffer,length,controlcode);|
_________________________________________________

            

Parameters 

filenum               16-bit signed integer by value (required) 

                      Passes the file number of the file to be written
                      on.

buffer                user-defined structure (required) 

                      Passes the record to be written.

length                16-bit signed integer by value (required) 

                      Passes the number of half words or bytes to be
                      written to the record.  If this value is positive,
                      it signifies half words; if negative, bytes.  Zero
                      indicates that no transfer occurs.

                      If length is less than the recsize parameter
                      associated with the record, only the first length 
                      (half words or bytes) is written.

                      If length is larger than the logical record size
                      and NOBUF (aoption in FOPEN/HPFOPEN) is not
                      specified, the FWRITE request is refused and CCL
                      (1) is returned.  If NOBUF is specified, length 
                      cannot exceed the physical record size unless the
                      multirecord aoption is specified also.

                      If the multirecord aoption in FOPEN/HPFOPEN is
                      specified, the excess half words or bytes are
                      written to succeeding physical records and
                      carriage-control is specified, the actual data
                      transferred is limited to recsize minus one byte.

                      (ASC) For asynchronous devices, the physical data
                      transfer is byte-by-byte.  If half words are
                      specified, an even number of bytes is output.

controlcode           16-bit unsigned integer by value (required) 

                      Passes a carriage-control code, effective if the
                      file is transferred to a line printer or terminal
                      (including a spooled file whose destination is a
                      line printer or a terminal).  This parameter
                      is effective only for files opened with
                      carriage-control specified.

                      The options are:

                         Value    Meaning 

                           0      Print the full record transferred, using single
                                  spacing.  This results in a maximum of 132 characters
                                  per printed line.

                           1      Use the first character of the data written to satisfy
                                  space control and suppress this character on the
                                  printed output.  This results in a maximum of 132
                                  characters of data per printed line.

                      Use any octal code from Table 4-10  to determine
                      space control and print the full record
                      transferred.  This results in a maximum of 132
                      characters per printed line.

                      If the controlcode parameter is not 0 or 1, and
                      length is 0, only the space control is executed and
                      no data is transferred.

                      Determine whether the carriage-control directive
                      takes effect before printing (prespace movement) or
                      after printing (postspace movement), with the
                      FCONTROL intrinsic.

                      For spooled files, use FWRITE instead of FCONTROL
                      to set the prespace/postspace control and the
                      auto/no auto page eject control; use control codes
                      %100 through %103 and %400 through %403 for this.
                      If one of the above controls is specified with
                      length=0, no physical I/O occurs.

                      When a file is opened with CCTL, use the
                      carriage-control codes in one of the following
                      ways:

                         *   As the value of the controlcode parameter.

                         *   When controlcode=1, as the first byte of the
                             buffer array.

                      The default carriage-control code is postspacing
                      with automatic page eject.  This applies to all
                      Hewlett-Packard subsystems except
                      FORTRAN 77/XL and COBOLII/XL (these have prespacing
                      with automatic page eject).


NOTE Channel assignments shown in Table 4-10 are the Hewlett-Packard standard defaults.
(KSAM) This parameter must be specified to satisfy internal requirements, but it is ignored. Table 4-10. Carriage-Control Directives --------------------------------------------------------------------------------------------- | | | | Octal Code | Description of Carriage Action | | (ASCII) | | | | | --------------------------------------------------------------------------------------------- | | | | %2 - %52 (" ") | Single space (with or without automatic page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %53 ("+") | No space (next printing at column 1), cannot be used more than once | | | on the | | | Hewlett-Packard 2608A/S without losing data | | | | --------------------------------------------------------------------------------------------- | | | | %54 (" ") | Single space (with or without automatic page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %55 ("-") | Triple space (with or without automatic page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %56 - %57 (" ") | Single space (with or without automatic page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %60 ("0") | Double space (with or without automatic page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %61 ("1") | Conditional page eject (form feed) performed by the software; if the | | | printer is not at top-of-form, a page eject is performed. Ignored | | | if: | | | | | | Postspace mode The current request has a transfer count of 0 | | | and the previous request was FOPEN, HPFOPEN, | | | FCLOSE, or FWRITE specifying a carriage-control | | | directive of %61. | | | Prespace mode The previous request has a transfer count of 0, | | | and the current request and previous request | | | are any combination of FOPEN, HPFOPEN, FCLOSE, | | | or FWRITE specifying a carriage-control | | | directive of %61. | | | | --------------------------------------------------------------------------------------------- | | | | %62 | Skip to one line before top of form (valid for Hewlett-Packard 2608S | | | and 2563A printers only) | | | | --------------------------------------------------------------------------------------------- | | | | %63 | A conditional page eject form feed is performed by the printer; not | | | at top-of-form, a page eject is performed (valid for Hewlett-Packard | | | 2608S and 2563A printers only) | | | | --------------------------------------------------------------------------------------------- | | | | %62 - %77 (" ") | Single space (with or without automatic page eject; for terminals and | | | serial printers) | | | | --------------------------------------------------------------------------------------------- | | | | %104 - %177 (" ") | Single space (with or without automatic page eject; for terminals and | | | serial printers) | | | | --------------------------------------------------------------------------------------------- | | | | %2nn | Space nn lines (no automatic page eject); nn is any octal number from | | | 0 through 77 | | | | --------------------------------------------------------------------------------------------- | | | | %300 - %313 | Select VFC Channel 1 - 12 (Hewlett-Packard 2613, 2617, 2618, 2619) | | | | --------------------------------------------------------------------------------------------- | | | | %300 - %317 | Select VFC Channel 1 - 16 (Hewlett-Packard 2608A/S) | | | | --------------------------------------------------------------------------------------------- | | | | %300 | Skip to top of form (page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %301 | Skip to bottom of form | | | | --------------------------------------------------------------------------------------------- | | | | %302 | Single spacing with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %303 | Skip to next odd line with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %304 | Skip to next third line with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %305 | Skip to next 1/2 page | | | | --------------------------------------------------------------------------------------------- | | | | %306 | Skip to next 1/4 page | | | | --------------------------------------------------------------------------------------------- | | | | %307 | Skip to next 1/6 page | | | | --------------------------------------------------------------------------------------------- | | | | %310 | Skip to bottom of form | | | | --------------------------------------------------------------------------------------------- Table 4-10. Carriage-Control Directives (cont.) --------------------------------------------------------------------------------------------- | | | | Octal Code | Description of Carriage Action | | (ASCII) | | | | | --------------------------------------------------------------------------------------------- | | | | %311 | User option (Hewlett-Packard 2613/17/18/19), skip to one line before | | | bottom of form (Hewlett-Packard 2608A/S) | | | | --------------------------------------------------------------------------------------------- | | | | %312 | User option (Hewlett-Packard 2613/17/18/19), skip to one line before | | | top of form (Hewlett-Packard 2608A/S) | | | | --------------------------------------------------------------------------------------------- | | | | %313 | User option (Hewlett-Packard 2613/17/18/19), skip to top of form | | | (Hewlett-Packard 2608A) | | | | --------------------------------------------------------------------------------------------- | | | | %314 | Skip to next seventh line with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %315 | Skip to next sixth line with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %316 | Skip to next fifth line with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %317 | Skip to next fourth line with automatic page eject | | | | --------------------------------------------------------------------------------------------- | | | | %310 - %317 | (Hewlett-Packard 2607) | | | | --------------------------------------------------------------------------------------------- | | | | %314 - %317 | (Hewlett-Packard 2613/17/18/19) | | | | --------------------------------------------------------------------------------------------- | | | | %320 | No space, no return (next printing physically follows this) | | | | --------------------------------------------------------------------------------------------- | | | | %321-%377 (" ") | Single space (with or without automatic page eject) | | | | --------------------------------------------------------------------------------------------- | | | | %400 or %100 | Set postspace movement option (prints first, then spaces). If | | | previous option was prespace movement, the driver outputs a line with | | | a skip to VFC Channel 3 (automatic page eject in effect) or a one | | | line advance (equivalent to an octal code of %201 without automatic | | | page eject) to clear the buffer | | | | --------------------------------------------------------------------------------------------- | | | | %401 or %101 | Set prespace movement option (spaces first, then prints) | | | | --------------------------------------------------------------------------------------------- | | | | %402 or %102 | Set single-space option, with automatic page eject (60 lines per | | | page) | | | | --------------------------------------------------------------------------------------------- | | | | %403 or %103 | Set single-space option, without automatic page eject (66 lines per | | | page) | | | | ---------------------------------------------------------------------------------------------
NOTE If octal codes %55 and %60 are selected with automatic page eject in effect (by default or following an octal code of %102 or %402), the resulting skip is to a location absolute to the page. A code of %60 is replaced by %303, and a code of %55 is replaced by %304. Therefore, the resulting skip can be less than two or three lines, respectively. If automatic page eject is not in effect, a true double or triple space results, but the perforation between pages is not automatically skipped. For the Hewlett-Packard 2608S and 2563A, if auto-eject and feature mode are in effect, a code of %60 is replaced by two codes of %302, and a code of %55 is replaced by three codes of %302. The resulting skip is double or triple space with auto-eject, respectively.
[]
Figure 4-9. Carriage-Control Data Operation Notes If information is written to a fixed-length record and the NOBUF aoption in FOPEN/HPFOPEN is not specified, any unused portion of the record is padded with binary zeros or ASCII blanks. When the FWRITE intrinsic is executed, the logical record pointer is set to the record immediately following the record just written, or to the first logical record in the next block for NOBUF files. If RIO access is used, the modified record is set to the ACTIVE state. When an FWRITE call writes a record beyond the current logical end-of-file indicator, this indicator is advanced. However, this is noted in the file label only when the file is closed or when an extent is allocated. If the physical bounds of the file are reached, CCG (0) is returned. If a magnetic tape is unlabeled (as specified in the FOPEN/HPFOPEN intrinsic, or in the FILE command) and the program attempts to write over or beyond the physical or simulated end-of-tape (EOT) marker, the FWRITE intrinsic returns CCL (1). The actual data is written to the tape, and a call to FCHECK reveals an end-of-tape file error. After the EOT marker is crossed, all writes to the tape transfer the data successfully but return CCL (1) until the tape crosses the EOT marker again in the reverse direction (rewind or backspace). If a magnetic tape is labeled (as specified in the FOPEN/HPFOPEN intrinsic, or in the FILE command), CCL (1) is not returned when the tape passes the EOT marker. Attempts to write to the tape after an EOT marker cause end-of-volume (EOV) markers to be written. A message is printed on the system console requesting another volume (reel of tape) be mounted. For message files and circular files, this intrinsic logically appends the record to the end of the file. If a circular file is full, the first block is deleted, the remaining blocks are logically shifted to the file's head, and the new record is appended to the end of the file. If a message file is full and there are no readers, the process waits if there is an FCONTROL=45 in effect or if this is the first FWRITE after an FOPEN/HPFOPEN call. Otherwise, CCG (0) is returned. Control codes are ignored for byte stream files. Byte stream files can not be opened with carriage control. Condition Codes CCE (2) Request granted. CCG (0) Request denied. The physical bounds of the file prevented further writing. CCL (1) Request denied. An error occurred; length exceeded the size of the record in nonmultirecord mode, the FSETMODE option was enabled to signify recovered tape errors, or the end-of-tape marker was sensed. If the file is being written to a multivolume labeled magnetic tape set, CCL (1) is not returned when the end-of-tape marker is sensed. Instead, end-of-volume labels are written, and a request is issued to mount the next volume. Related Information Intrinsics None Commands None Manuals Accessing Files Programmer's Guide (32650-90017)


MPE/iX 5.0 Documentation