{
{   The purpose of this request is to reposition a sequential file which has
{ been opened for record access; read access to the file is required.
{
{   This request does not cause data movement to or from a user
{ working_storage_area.
{
{   Any outstanding no-wait requests are completed before the positioning is
{ attempted.
{
{   If there is buffered data yet to be written to a tape file, the data is
{ first written to the volume then the volume is terminated according to
{ convention or industry standard, as follows:
{
{   If the label type is amc$labelled, the standard ANSI EOF label and two
{ tapemarks are written; then the tape volume is positioned by the access
{ method prior to the EOF label.  Control is then given to a label exit
{ procedure(*), if applicable, for extended label processing.
{
{   If the label type is amc$unlabelled, two tapemarks are written to
{ terminate the file and volume; then the volume is positioned by the access
{ method prior to the two tapemarks.
{
{   The following tables indicate which positioning options are available for
{ a file opened with amc$record access_level:
{
{  |--------------------------------------------------------------------|
{  |                          |  System_specified Block Type            |
{  |                          |_________________________________________|
{  |          Record_type ->  | V | F | U | S | D | T |                 |
{  |                          |   |(5)|   |   |   |   |                 |
{  |--------------------------------------------------------------------|
{  |  Forward  N records      | x | x | 2 | 1 | 1 | x |                 |
{  |  Backward N records      | 4 | x | 2 | 1 | 1 | x |                 |
{  |  Forward  N partitions   | x | 2 | 2 | 1 | 1 | 2 |                 |
{  |  Backward N partitions   | 4 | 2 | 2 | 1 | 1 | 2 |                 |
{  |  Forward  N tape marks   | 3 | 2 | 3 | 1 | 1 | 2 |                 |
{  |  Backward N tape marks   | 3 | 2 | 3 | 1 | 1 | 2 |                 |
{  |--------------------------------------------------------------------|
{
{
{  |--------------------------------------------------------------------|
{  |                          |  User_specified Block Type              |
{  |                          |_________________________________________|
{  |          Record_type ->  | V | F | U | S | D | T |                 |
{  |                          |   |   |   |   |   |   |                 |
{  |--------------------------------------------------------------------|
{  |  Forward  N records      | 1 | x | x | x | x | 1 |                 |
{  |  Backward N records      | 1 | 4 | x | 2 | 2 | 1 |                 |
{  |  Forward  N partitions   | 1 | 2 | 2 | 2 | 2 | 1 |                 |
{  |  Backward N partitions   | 1 | 2 | 2 | 2 | 2 | 1 |                 |
{  |  Forward  N tape marks   | 1 | 3 | 3 | 2 | 2 | 1 |                 |
{  |  Backward N tape marks   | 1 | 3 | 3 | 2 | 2 | 1 |                 |
{  |--------------------------------------------------------------------|
{
{   Notes on preceding tables:
{
{     1.  This combination of record_type and block_type is not supported.
{
{     2.  This is an undefined operation and abnormal status will be returned.
{
{     3.  This operation is only supported for unlabelled and
{         non-standard-labelled tape files.
{
{     4.  This operation is supported for mass storage files.  For magnetic
{     tape
{         files, it is an undefined operation and abnormal status will be
{         returned.
{
{     5.  This combination of record_type and block_type is only supported
{         for mass storage files.
{
{   The final position of the file, assuming no boundary condition was
{ encountered (encountered is interpretted as attempting to skip beyond a
{ boundary such as BOI, EOI, or a partition delimiter) before the COUNT was
{ exhausted, is as follows:
{
{   Skipping by RECORDS
{
{   Skip of UNIT = record, DIRECTION = forward:
{
{   .  If the file_position prior to this request is amc$boi, amc$bop,
{ amc$eop, amc$eor or amc$eoi, a skip of zero records causes no movement.
{ The file_position returned will be the file position prior to the request.
{
{   .  If the file_position prior to this request is amc$mid_record, then a
{ skip forward of zero records positions to the end of the current record.
{
{   .  If the file_position prior to this request is at the end of record N
{ and a skip forward of M records is performed, the final position will be the
{ end of record N+M.
{
{   .  If the file_position prior to this request is amc$mid_record within
{ record N and a skip forward of M records is performed, the final position
{ will be at the end of record N+M.
{
{   Skip of UNIT = record, DIRECTION = backward:
{
{   .  If the file_position prior to this request is amc$boi, amc$bop,
{ amc$eop, amc$eor or amc$eoi, a skip of zero records causes no movement.
{ The file_position returned will be the file position prior to the request.
{
{   .  If the file_position prior to this request is amc$mid_record, then a
{ skip backward of zero records positions to the end of the preceding record.
{
{   .  If the file_position prior to this request is at the end of record N
{ and a skip backward of M records is performed, the final position will be
{ the end of record N-M.
{
{   .  If the file_position prior to this request is amc$mid_record within
{ record N and a backspace of M records is performed, the final position will
{ be at the end of record N-M-1.
{
{   Record skipping BOUNDARY CONDITIONS
{
{   If BOI, EOI or a partition delimiter is encountered before the COUNT is
{ exhausted, an abnormal status will be returned.  The actual number of
{ records skipped in this case may be determined by subtracting the
{ residual_skip_count available via the amp$fetch_access_information request
{ from the original COUNT.
{
{   When either BOI or EOI are encountered, the final position remains at BOI
{ or EOI, whichever was encountered.
{
{   When a skip forward encounters a partition delimiter, the final position
{ is after the delimiter, i.e.  at the beginning of the next partition.
{
{   When a skip backward encounters a partition delimiter the final position
{ is prior to the delimiter, i.e.  at the end of the preceding partition.
{
{   Skipping by PARTITIONS
{
{   .  If a file contains no partition delimiters, then for the purpose of the
{ amp$skip request, the file is said to contain one (1) partition which begins
{ at BOI and ends at EOI.  A file which contains one (1) partition delimiter
{ has two (2) partitions, etc.
{
{   .  If the last record in a file is a partition delimiter which terminates
{ partition N and the current position of the file is after the partition
{ delimiter, then for the purpose of the amp$skip request the file is
{ considered to be positioned at the beginning of partition N+1.
{
{   Skip of UNIT = partition, DIRECTION = forward
{
{   .  If the file_position prior to this request is amc$boi or amc$bop, then
{ a skip of zero partitions causes no movement.  The file_position returned
{ will be the file position prior to the request.
{
{   .  If the file_position prior to this request is beyond the beginning of a
{ partition and a forward skip of zero partitions is performed the final
{ position will be the beginning of the next partition.
{
{   .  If the file_position prior to this request is at the beginning of
{ partition N and a forward skip of M partitions is performed, the final
{ position will be the beginning of partition N+M.
{
{   .  If the file_position prior to this request is beyond the beginning of
{ partition N and a forward skip of M partitions is performed, the final
{ position will be the beginning of partition N+M+1.
{
{   Skip of UNIT = partition, DIRECTION = backward
{
{   .  If the file_position prior to this request is amc$boi or amc$bop, then
{ a skip of zero partitions causes no movement.  The file_position returned
{ will be the file position prior to the request.
{
{   .  If the file_position prior to this request is beyond the beginning of a
{ partition, at EOI, or at EOP, and a backward skip of zero partitions is
{ performed, the final position will be the beginning of the current
{ partition.
{
{   .  If the file_position prior to this request is at the beginning of
{ partition N and a backward skip of M partitions is performed, the final
{ position will be the beginning of partition N-M.
{
{   .  If the file_position prior to this request is beyond the beginning of
{ partition N and a backward skip of M partitions is performed, the final
{ position will be the beginning of partition N-M.
{
{   Partition skipping BOUNDARY CONDITIONS
{
{   If BOI or EOI is encountered before the COUNT is exhausted, an abnormal
{ status is returned and the file remains positioned at BOI or EOI.  The
{ actual number of partitions skipped in this case may be determined by by
{ subtracting the residual_skip_count available via the
{ amp$fetch_access_information request from the original COUNT.
{
{   If BOI or EOI is not reached before the COUNT is exhausted, the file is
{ positioned at the beginning of the requested partition.
{
{   Skipping by TAPE MARKS
{
{   Skipping by tape marks is only supported for a file whose label type is
{ amc$unlabelled or amc$non_standard_labelled.
{
{   Skip of UNIT = tape_mark, DIRECTION = forward:
{
{   .  A forward skip of zero tape markes causes no change in volume or file
{ position, i.e.  no tape motion.  The file_position returned will be the
{ file position prior to the request.
{
{   .  A forward skip by tape marks causes the file to be positioned forward
{ until the number of tape marks indicated by the COUNT parameter have been
{ detected.  If the file spans tape volumes, successive volumes are mounted
{ until the COUNT is exhausted.  The two tapemarks which terminate each volume
{ of an unlabelled file are not counted toward the number of tape marks to
{ skip.  If normal status is returned, then the last volume mounted has been
{ positioned after the last tape mark skipped.
{
{   .  A skip forward of one or more tape marks which terminates normally will
{ return amc$boi as the file_position.
{
{   .  A skip forward will terminate abnormally if the list of volumes
{ associated with the tape file is exhausted (EOI is encountered) prior to the
{ exhaustion of the COUNT.  If a skip terminates abnormally on an unlabelled
{ file, then the last volume will be positioned prior to the two tape marks
{ which terminate it.
{
{
{   Skip of UNIT = tape_mark, DIRECTION = backward:
{
{   .  A backward skip of zero tape markes causes no change in volume or file
{ position, i.e.  no tape motion.  The file_position returned will be the
{ file position prior to the request.
{
{   .  A backward skip by tape marks causes the file to be positioned backward
{ (toward the beginning of the volume) until the number of tape marks
{ indicated by the COUNT parameter have been detected.  If normal status is
{ returned, the current volume has been positioned prior to the last tape mark
{ skipped.
{
{   .  A skip backward of one or more tape marks which terminates normally will
{ return amc$eoi as the file_position.
{
{   .  A skip backward will terminate abnormally if beginning-of-volume is
{ encountered on the current volume; unlike forward tape mark skipping,
{ backward skipping does not cross tape volume boundaries.  If the skip
{ terminates abnormally, the current volume will be positioned at its
{ load-point.
{
{
{       AMP$SKIP (FILE_IDENTIFIER, DIRECTION, UNIT, COUNT, FILE_POSITION,
{         STATUS)
{
{ FILE_IDENTIFIER: (input)  This parameter specifies the file access
{       identifier established when the file was opened.
{
{ DIRECTION: (input)  This parameter specifies the direction of the
{       positioning operation.  Options include:  Forward Backward
{
{ UNIT: (input)  This parameter specifies the type of unit to be skipped.
{       Options include:  Partition Record Tape Mark
{
{ COUNT: (input)  This parameter specifies the number of units to skip.
{
{ FILE_POSITION: (output)  This parameter specifies the position of the file
{       following the request.  Possible file positions resulting from a
{       forward skip in which motion occurred are:
{
{       .  amc$eor - skipping records only
{
{       .  amc$bop - skipping records/partitions only
{
{       .  amc$eoi - any UNIT
{
{       Possible file positions resulting from a backward skip in which
{       motion occurred are:
{
{       .  amc$eor - skipping records only
{
{       .  amc$bop - skipping partitions only
{
{       .  amc$eop - skipping records only
{
{       .  amc$boi - any UNIT
{
{ STATUS: (output) This parameter specifies the request status.
{       CONDITION:
{                   ame$conflicting_access_level,
{                   ame$conflicting_fo,
{                   ame$improper_ANSI_operation,
{                   ame$improper_device_class,
{                   ame$improper_file_id,
{                   ame$improper_input_attempt,
{                   ame$improper_skip_count,
{                   ame$improper_skip_direction,
{                   ame$improper_skip_unit,
{                   ame$ring_validation_error,
{                   ame$skip_encountered_boi,
{                   ame$skip_encountered_bop,
{                   ame$skip_encountered_bov,
{                   ame$skip_encountered_eoi,
{                   ame$skip_encountered_eop,
{                   ame$skip_requires_read_perm,
{                   ame$uncertain_tape_position,
{                   ame$unrecovered_read_error,
{                   ame$unrecovered_write_error,
{                   ame$unsupported_skip.
{       IDENTIFIER: amc$access_method_id.
{
