HP 3000 Manuals

Remote File Access [ Using NS3000/XL Network Services ] MPE/iX 5.0 Documentation


Using NS3000/XL Network Services

Chapter 3  Remote File Access 

RFA Overview 

The Remote File Access service (RFA) allows you to access remote files
and devices.  By using RFA you can, among other things, create, open,
read, write, and close a file that resides on a remote HP 3000.  Since
the remote "file" may be a peripheral device, you can, for example, read
from a tape mounted on a remote system or print local data on a remote
printer.  RFA does not permit nowait (asynchronous) I/O.

The Remote File Access facility uses the same MPE XL file system
intrinsics as are employed on a local system.  The intrinsics are sent to
the remote environment and executed there.  Your local program can call
these intrinsics explicitly or it can use the input/output procedures
specific to the language in which the program is written.  You can also
access a remote file or device interactively.  You will find discussions
of interactive and programmatic remote file access methods later in this
chapter.

RFA Compression 

Remote File Access (RFA) allows for data compression.  RFA data
compression can provide faster data transfer, especially over a slow link
and when the file being remotely accessed has large records with repeated
characters.

To invoke data compression for the RFA service, specify the keyword,
COMP, in the  DSLINE command.  The COMP keyword compresses both NFT and
RFA data associated to the remote environment specified in the
DSLINEcommand.  For example, issuing the command  DSLINE NODE1;COMP
allows for compression of all RFA and NFT data to the remote node called
NODE1.

To terminate data compression to the specified environment, specify the
keyword  NOCOMP in the DSLINE command.  Issuing this command prevents
data compression of any new remote files opened as well as prevents data
compression of any future NFT data to the environment specified in the
DSLINE command.  Files opened remotely while compression is in effect for
the environment remain in compressed mode even after the  DSLINE;NOCOMP
command is issued.

The same algorithm is used for both RFA and NFT data compression.  The
same algorithm is also used with DS Services compression:  each sequence
of up to 64 consecutive repeated characters is compressed to two bytes,
and repeated blanks are compressed to one byte.

Without RFA compression enabled, the RFA service can transfer up to
29,900 bytes of data at one time.  However, due to overhead associated
with managing a compressed data transfer, the RFA service with
compression enabled can transfer up to a maximum of 29,000 bytes of data
at one time between MPE XL-based HP 3000s.  For transfers between an MPE
XL-based system and an MPE-V based system the maximum amount of
compressed data that can be transferred at one time is 14,500 bytes.

RFA compression only compresses data transmitted with the  FREAD,
FREADDIR, FREADBACKWARD, FWRITE, FWRITEDIR and FUDPATE intrinsics.
Therefore, RFA compression is not supported with the Remote DataBase
Access (RDBA) service.

RFA compression is currently only available on 900 Series HP 3000 systems
with version B.00.05 of the NS3000/XL Network Services.  If you request
RFA compression of a file residing on a system that does not support RFA
compression (such as systems running NS3000/V software released prior to
version A.00.12), RFA completes the request without compressing the RFA
data.  No error or warning messages are issued in this situation.

FILE Command 

Specifies a formal designator that may be used to represent a remote file
or device in a subsequent command or intrinsic.  (Also known as a file
equation.)

Syntax 
____________________________________________________________________________
|                                                                          |
|                               [=* formaldesignator                 ]     |
|                               [=$NEWPASS                         ]       |
|                               [=$OLDPASS                         ]       |
|      FILE  formaldesignator     [=$STDIN                            ]    |
|                               [=$STDINX                          ]       |
|                               [=$STDLIST                         ]       |
|                               [= filereference[: nodespec][ ,filedomain]]|
|                    [;DEV=[ [envname]#][device][,outpri][,numcopies]]     |
|                    [;VTERM]                                              |
|                    [;ENV=envfile[:nodespec]]                             |
|                    [;option]...                                          |
____________________________________________________________________________

Use 

	       Click here to view figure.
Parameters 

formaldesignator 

A name in the form file [.group [.account ]][:nodespec ] that can be used
to identify the file in a subsequent command or intrinsic call.  (For the
meaning of nodespec, see the next parameter explanation.  MPE XL
currently permits this extended formal designator, with a node
specification following a colon, in the FILE and RESET commands, and in
the FOPEN intrinsic.)  If not equated to another file designator, the
formaldesignator contains the actual name of a file.  A *formaldesignator 
(with the asterisk) is a "backreference" to a formal designator defined
in a previous FILE command.

nodespec 

Either an environment ID (specified in a previous DSLINE or  REMOTE
command) or $BACK . This node specification may appear in the file's
formal designator or as an extension of an actual file reference.  If an
environment ID appears in a file designation and in the  DEV= option, the
attempt to open the file (for example, via FOPEN) will result in an
error.

 $BACK indicates that the file resides one "hop" back toward your local
system.  This is legal only if the FILE command is issued in a remote
session created by a  REMOTE HELLO. If the systems involved are connected
in an NS3000/XL network, then, one hop back always means your local
system.  The  $BACK specification is equivalent to  DEV=# (without an
environment name).  In either case, the file is accessed through the
existing session.

filereference 

The actual name of the file in the form:

     file [ /lockword ][.group [ .account ]].

filedomain 

The file domain:  NEW or OLD or OLDTEMP.

envname 

An unqualified environment ID. The maximum length is 8 alphanumeric
characters.  A previously defined environment ID is permitted in the DEV=
option, but the domain and organization qualifiers are not permitted and
the name may not be longer than 8 characters.

device 

The logical device name or number of a device such as a disc, tape,
printer, or terminal.  Default:   DDISC. If the DEV= option appears, it
must be followed by at least one parameter (which can be just #).

outpri 

The output priority requested for a spooled device file.  This a value
between 1 (lowest priority) and 13 (highest priority).

numcopies 

The number of copies requested for a spooled output device file (maximum
127).

VTERM 

Specifies that the Reverse Virtual Terminal service should be employed
instead of Remote File Access.  This option applies only if the
designated device is a remote terminal.  VTERM allows a local application
program to perform I/O to remote terminals located on systems that
support Reverse Virtual Terminal.  (See "Reverse Virtual Terminal" in the
chapter on "Virtual Terminal" and "Remote Terminal Access:  VT vs.  RFA"
later in this chapter.)

envfile 

A name representing a file containing laser printer environment
information, which controls printing output formats.  This name may be an
actual file reference or a formal file designator (preceded by an
asterisk).

option 

Any valid option in the MPE XL  FILE command.  For further information,
see the MPE XL Commands Reference Manual.

Description 

For Remote File Access purposes, the  FILE command can be used to specify
a formal designator for a remote file or device.  You can use this formal
designator to reference the remote file in a subsequent command or
intrinsic call.  If an environment ID is used to indicate the location of
the file, it must be specified in a  DSLINE or REMOTE command before you
can use RFA. $BACK or  DEV=# indicates the node one "hop" closer to your
local system when the FILE command has been issued in a remote session.
(This may be the local system itself.)

Precautions When Using $BACK 

When using the $BACK backreference with RFA, you need to check the fully
qualified node names of the machines on each side of the file transfer.
If the domain and organization names differ between the two machines,
problems may arise with use of $BACK.

To prevent a problem when using  $BACK for a transfer between two nodes
whose domain and organization are different, configure the remote machine
(using NMMGR; NM capability required), so that its network directory
includes two entries:

   1.  localnode.localdomain.localorganization, and
   2.  localnode.remotedomain.remoteorganization.

See the example under "Interactive Access" later in this chapter.

RESET Command 

Cancels file equations.

Syntax 
______________________________________________
|                                            |
|           RESET     {formaldesignator     }|
|                     {@                  }  |
______________________________________________

Use 

	       Click here to view figure.
Parameter 

formaldesignator 

A formal file name in the form:  file [ .group [ .account]][:  nodespec],
for which a FILE command has previously been issued.  The nodespec
portion is either an environment ID indicating the location of the file
or $BACK. $BACK means that the file resides one "hop" back toward your
local system (which may be the local system itself).

@ 

Signifies all formal file designators specified in all FILE commands
previously issued in this session or job.

Description 

The RESET command resets a formal file designator to its original
meaning, cancelling any FILE command that has been issued for this formal
designator earlier in this session or job.

Interactive Access 

In order to access a remote file or device interactively, you must first
issue a FILE command that specifies the remote location of the file.
However, you cannot indicate the location directly in the MPE XL command
or subsystem command that accesses the file.

Example 1 

Let's say that you wish to print a text file named DOCUMENT on a line
printer connected to a remote HP 3000 computer.  You are editing the text
file on your local system.  After defining an environment on the remote
node, you can issue a local FILE command at the MPE XL prompt that
designates the line printer as a remote device and specifies the
environment in which it exists.  You must also log on to the remote node:

     DSLINE NIKOLAI
     FILE REMPRINT;DEV = NIKOLAI#LP
     REMOTE HELLO NSUSER.NSACCT

You can then send your finished TDP file to the remote line printer as
follows.  The local MPE XL and TDP prompts are shown, and user input is
underlined for clarity.

     :RUN TDP.PUB.SYS
     /FINAL FROM DOCUMENT TO *REMPRINT 

Example 2 

You may want to compile a remote Pascal source file on your local system.
This is how you can do it from the MPE XL prompt:

     DSLINE NIKOLAI
     REMOTE HELLO USER.ACCT
     FILE SOURCE=XYZ:NIKOLAI
     PASCAL *SOURCE

Example 3 

Let's assume that you have created a session on a remote node by typing
at the MPE XL prompt:

     DSLINE NIKOLAI
     REMOTE HELLO USER.ACCT

In order to access a file on your local node, you may use the $BACK
specification.  Here's an example of that method.  The local and remote
MPE XL prompts are shown, and user input is underlined for clarity.

     :REMOTE 
     NIKOLAI#FILE SOURCE=XYZ:$BACK 
     NIKOLAI#PASCAL *SOURCE 

Example 4 

A problem may occur when using $BACK for a transfer between two nodes
whose domains and organizations are different.  To eliminate a problem
with the use of $BACK when a transfer is being made between two nodes
whose domains and organizations are different:  configure the remote 
machine (using NMMGR; NM capability required), so that its network
directory includes two entries:

  1) localnode.localdomain.localorganization, and
  2) localnode.remotedomain.remoteorganization.

For example, if you were to issue a DSLINEfrom node A.LAB.CND to node
B.DCL.IND, you would have to add the following entries to the network
directory of node B.DCL.IND:

     A.LAB.CND
     A.DCL.IND

RFA Programmatic Access 

Once an environment has been established on the remote node, a local
application program can access remote files by calling standard MPE XL
file system intrinsics (or by using the input/output procedures specific
to the language in which the program is written).  If a FILE command
specifying a formal designator for a remote file or device has been
issued, an FOPEN call in the local program can use this formal designator
in its formaldesignator parameter.  For example:

     :FILE X=X:NODEB
     .
     .
     .
     FOPEN (X,...);

A language-specific I/O procedure can also reference the file by means of
this formaldesignator.

In Pascal, the file name used in the program can include the nodespec as
follows:

     OPEN (X, 'X:NODEB');

In the Pascal example, the file equation is not needed.  Most
language-specific file open statements do not permit a nodespec and must
use a preceding FILE command.

If a FILE command has not been issued for the remote file, you must
specify the location of the file in the FOPEN call, either in the
formaldesignator parameter or in the device parameter (not both).
(Currently, only in Pascal can you use the extended formal designator,
with location, in a non-intrinsic I/O procedure.)  These are the two
possibilities:

 *  formaldesignator:  file[/lockword][.group[.account]][:nodespec],
    where nodespec is an environment ID or $BACK, as defined for a FILE
    command;

 *  device:  [envname]#[device], where envname is an 8-character (or
    shorter) string as defined for a FILE command.

For example:

     FOPEN (X:NODEB,...);
     or
     FOPEN (X,...,NODEB#,...);

You can also use a file equation to override the location indicated in
your program (FILE command parameters override FOPEN parameters).  For
example, the following sequence opens a file on NODEC:

     :FILE X:NODEB=X:NODEC
     .
     .
     .
     FOPEN (X:NODEB,...);

You can call the MPE XL FFILEINFO intrinsic to retrieve information about
a remote file.  In the FFILEINFO intrinsic, ITEM 61 returns the
environment ID of a remote file's location - over an NS link.  If the
file is located on your local system, ITEM 61 returns a blank.  The
condition codes for the file system intrinsics retain their normal
meanings.  Network connection errors return a CCL condition code.  If
such an error occurs, you can call the MPE XL FCHECK intrinsic to
determine the source of the error.  File System error codes apply to the
remote file.  You can also call the MPE XL PRINTFILEINFO intrinsic to
display the status of the remote file.


NOTE To ensure that the formal designator representing a remote file is syntactically correct, you should always call the FPARSE intrinsic within your program. This intrinsic is documented later in this chapter. For further information on MPE XL file system intrinsics, including FOPEN, FPARSE, IOWAIT, and IODONTWAIT, see the MPE XL Intrinsics Reference Manual.
FPARSE Intrinsic Parses a file designator and determines whether it is syntactically correct. Syntax ______________________________________________________ | | | FPARSE (string,result[,items][,vectors])| ______________________________________________________ Parameters string (input) Byte array, by reference. The file designator that is to be parsed. The string can be terminated by any non-alphanumeric character except a slash, period, colon, underscore, or dash (/, ., :, _, -). result (output) Array of two 16-bit integers, by reference. A value indicating the result of the parse, returned in the first 16-bit word. (The second 16 bits are reserved.) If the value is positive, the file string is syntactically correct and the value indicates the type of file reference being made: * 0 = regular formal designator * 1 = back reference (first character is *) * 2 = system file (first character is $) A negative value represents the error code returned. The error messages are listed in the NS3000/XL Error Messages Reference Manual. items (input) Array of 16-bit integers, by reference. An array of item codes representing portions of the file string. The item codes (except for 0) may be included in any order; the same order is followed in the output vectors array. Item code 0 indicates the end of the items array. The item codes have the following definitions: 0 = indicates end of this array 1 = file name 2 = lockword 3 = group name 4 = account name 5 = environment ID Note that an initial $ is considered part of the file name portion, while * is not. vectors (output) Array of 16-bit integers, by reference. Gives offset and length information that indicates the parse of the file string. Each element of the array is a 16-bit integer; each pair of elements corresponds to a portion of the string, in the same order as the items in the items array. The first 16-bit integer of each pair is the byte offset of the item (from the start of the string to the start of the item), and the second 16-bit integer is the item's length in bytes. A zero value (in both 16-bit integers) means that the item is not present in the file string. For the last element of the vectors array, which corresponds to item code 0 in the items array, the second 16-bit integer is the total length of the file string. The first 16-bit integer of this element is zero unless the result parameter indicates that the file is a system file; in that case the value is the file's default designator type as defined for the FOPEN foptions parameter: 0 = non-system filename 1 = $STDLIST 2 = $NEWPASS 3 = $OLDPASS 4 = $STDIN 5 = $STDINX 6 = $NULL In case of a syntax error in the file designator string, the first word of the first 16 bits of the vectors array returns the byte offset of the invalid item in the string. The second 16 bits will be zero. Description The FPARSE intrinsic parses a file designator and indicates whether or not the string is syntactically correct. You can employ this intrinsic to check a formal designator representing a remote file before attempting to open the file via FOPEN. The optional items and vectors arrays enable you to acquire parsing information for the file designator, namely, the length of each item and its position in the string. The possible items are file name, lockword, group name, account name, and environment ID. The environment ID is treated as a single item; it is not parsed into environment name, domain, and organization. Following are examples of the items (input) and vectors (output) arrays. Remember that the order of entries in the vectors array corresponds to the (arbitrary) order of items in the items array. Also, the last pair of entries of the vectors array has a different meaning from that of the other pairs: the second 16 bits gives the total length of the file string, and the first 16 bits gives a system file code when applicable. In the first example the file string is: FILENAME/LOCKWORD.GROUP.ACCOUNT:CASH.ACCTNG.FINANCE. Example 1 --------------------------------------------------------------------------------------------- | | | | Items Array | Vectors Array | | (item code) | (offset, length) | | | | --------------------------------------------------------------------------------------------- | | | | 1 | 0, 8 | | | | --------------------------------------------------------------------------------------------- | | | | 5 | 32, 19 | | | | --------------------------------------------------------------------------------------------- | | | | 3 | 18, 5 | | | | --------------------------------------------------------------------------------------------- | | | | 4 | 24, 7 | | | | --------------------------------------------------------------------------------------------- | | | | 2 | 9, 8 | | | | --------------------------------------------------------------------------------------------- | | | | 0 | 0, 51 | | | | --------------------------------------------------------------------------------------------- In the second example, the file string is *FILENAME:CASH. Example 2 --------------------------------------------------------------------------------------------- | | | | Items Array | Vectors Array | | (item code)| | (offset, length)| | | | | --------------------------------------------------------------------------------------------- | | | | 1 | 1, 8 | | | | --------------------------------------------------------------------------------------------- | | | | 2 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 3 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 4 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 5 | 10, 4 | | | | --------------------------------------------------------------------------------------------- | | | | 0 | 0, 15 | | | | --------------------------------------------------------------------------------------------- In the third example, the file string is$OLDPASS. Example 3 --------------------------------------------------------------------------------------------- | | | | Items Array | Vectors Array | | (item code) | (offset, length) | | | | --------------------------------------------------------------------------------------------- | | | | 1 | 0, 8 | | | | --------------------------------------------------------------------------------------------- | | | | 2 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 3 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 4 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 5 | 0, 0 | | | | --------------------------------------------------------------------------------------------- | | | | 0 | 3, 8 | | | | --------------------------------------------------------------------------------------------- Example RFA Program What follows is a Pascal program that writes some test data to a remote file, reads the data back from the remote file, and sends the received data to a remote printer to be printed. An environment has been established on the remote node. Prior FILE commands have been issued for the formal file designators representing the remote disc file and remote printer. These file equations specify the remote location of the files. $standard_level 'hp3000'$ $uslinit$ {**********************************} {Note: issue file equations such as} { :file remfile=remfile:rodan} { and} { :file remprint;dev=rodan#lp} {before running this program} {**********************************} program rfaprog(remfile,remprint,output); type teststring = packed array [1..72] of char; smallint = -32768..32767; var remfile : text; remprint : text; i : integer; test1 : teststring; test2 : teststring; begin {program rfaprog} {open remote disc file} writeln('Opening remote disc file'); rewrite (remfile); {write test data to remote file} test1: = 'Remote File Access test'; for i: = 1 to 9 do writeln (remfile,test1); {open remote line printer as devicefile} writeln('Opening remote LP file'); reset (remfile); {read each record from remote file, then print each record on remote printer} rewrite (remprint); for i := 1 to 9 do begin readln (remfile,test2); writeln (remprint,test2); {pick up listing on remote line printer and check output} end; end {program rfaprog}. {remote files/devices closed automatically}


MPE/iX 5.0 Documentation