Dataset Access
 SSH Tectia Server (M) has not introduced any extensions to the SFTP protocol and 
thus supports all old SFTP clients. The differences between z/OS and other 
operating systems (Unix, Windows, etc.) introduce some difficulties in 
accessing data in the z/OS system.
 z/OS has both MVS datasets, and Hierarchical File System (HFS) files. As 
both types must be accessed by the SFTP server, there must be a mechanism 
for distinguishing between them. Traditionally, MVS datasets in z/OS are 
accessed using the filename format //NAME.OF.MVS.DATASET, while 
HFS files are accessed using the filename format 
/path/to/hfs/file. Old SFTP clients regard / (slash) as 
a directory separator, which requires the SFTP server to use some "tricks" 
to fool the clients. It must be noted that the SFTP client generally does 
not have any inherent knowledge of MVS datasets and accesses all files as 
they were part of a hierarchical file system.
 If an SFTP client tries to open the file //FILE.NAME, the MVS 
dataset is actually opened. Some SFTP clients remove all consecutive 
slashes so that the file to be accessed becomes /FILE.NAME. The 
SFTP server will interpret this as the HFS file FILE.NAME, 
located at the HFS root. In order to avoid this client behavior, the SFTP 
server has other ways of naming MVS datasets. If a client tries to access 
the file /_FILE.NAME, _/FILE.NAME or 
__FILE.NAME, the SFTP server interprets these as the dataset 
//FILE.NAME. All these combinations are needed as it may be 
necessary to make the SFTP clients pass the correct file or dataset name 
to the server.
 In z/OS, if a dataset name is not enclosed in single quotes, the user
prefix is added in front of the dataset name. For example, if user
USER1 has a dataset DATASET.NAME1, the user can access
it using the dataset name //DATASET.NAME1. It is also possible to
use an absolute prefixed name //'USER1.DATASET.NAME1'. Because
single quotes are special characters in most environments, the SFTP server
introduces a new convention to use triple slashes to access absolute
prefixed dataset names. The name becomes
///USER1.DATASET.NAME1. All combinations of slashes and
underscores can be used. For example, USER1 can access
his/her dataset using one of the following names:
 
//DATASET.NAME1
/_DATASET.NAME1
_/DATASET.NAME1
__DATASET.NAME1
 or
 
//'USER1.DATASET.NAME1'
/_'USER1.DATASET.NAME1'
_/'USER1.DATASET.NAME1'
__'USER1.DATASET.NAME1'
 or
 
///USER1.DATASET.NAME1
//_USER1.DATASET.NAME1
/_/USER1.DATASET.NAME1
/__USER1.DATASET.NAME1
_/_USER1.DATASET.NAME1
_//USER1.DATASET.NAME1
__/USER1.DATASET.NAME1
___USER1.DATASET.NAME1
 It must be noted that the choice of name type depends on the client. If 
consecutive slashes are not sent to the server, /_ (or 
/__ for a prefixed absolute dataset) is probably the best choice. 
The SFTP client interprets the file path to be absolute and does not add 
any directories in front of the name. If a file transfer advice string 
(see Section Advice String) is 
added in front of the file name, __ (or ___ for a 
prefixed absolute dataset) is a safe choice. The dataset name becomes 
/FTADV:X=BIN/__DATASET.NAME1. The client interprets it as an 
absolute path to the file and does not change it. The SFTP server on the 
other hand recognizes the advice string /FTADV:X=BIN/ and 
interprets __DATASET.NAME1 to be the real name of the dataset 
//DATASET.NAME1.
 z/OS has library datasets, whose members are usually accessed using the
dataset name //DATASET.NAME1(MEMBER1). Again, parentheses may
be special characters in some environments. The SFTP server introduces a new
convention for accessing library members using a single slash as a
member separator. The name becomes //DATASET.NAME1/MEMBER1.
 Because of the new conventions for dataset names there are some
exceptions in the HFS filenames. If an HFS file or directory name
starts with an underscore and the file or directory is located in the
root directory, the HFS root must be written as /___. The name
thus becomes /____path/to/hfs/file. Also, if an advice string is
used with absolute HFS names, the HFS root must be written either as
/, /___ or ____. If the client does not
allow two consecutive slashes or if the HFS file or directory name
starts with an underscore and is located in the root directory, the HFS
root must be written as ____.