Products   Support   Download   Contact

STRATEGIES FOR FTPING FROM ONE VMS SYSTEM TO ANOTHER

Contents | Index | About the Icons

Abstract

File Transfer Protocol (FTP) is a venerable method of transmitting files over TCP/IP networks. It encompasses two basic modes, ASCII and Binary. In ASCII mode some translation occurs so that text remains readable on the receiving system; for instance when transferring ASCII files from a Unix system to a Macintosh, the line feed (LF) characters are swapped out for carriage return (CR) characters. In Binary mode, no translation is performed on the data; the byte stream is transmitted as unchanged octets (8 bit bytes).

People who use Macintoshes are familiar with the difficulties that arise when applications and some documents are transported with FTP. Applications on the Macintosh are not flat binary files; the Macintosh uses a file system with two forks, one containing traditional stream oriented data and another one which incorporates resources. The attributes embodied in these resources are necessary for the proper functioning of the applications (in fact, the binary code for the applications is contained in resources).

Something analogous occurs on VMS systems. The VMS file system, called the Record Management System (RMS) is record oriented instead of stream oriented: the record attributes of the file are a prerequisite for the proper interpretation of the contents of the file.

This memo discusses strategies for successfully transferring binary files from one VMS system to another.

 

In both cases special measures must be taken to put a wrapper around the file so that the proper attributes are restored to the file at the receiving end. Common wrappers for Macintosh files are BinHex and AppleDouble. On VMS systems common wrappers are SaveSets and VMS Zip files.

The VMS situation is further complicated because at many sites the VMS host is isolated behind a firewall and thus there is no direct TCP/IP logical connection from VMS system to VMS system; instead, files must be transferred through some sort of intermediate system, typically a WinTel PC (running some flavor of Microsoft Windows) or Macintosh, but on occasion a Unix workstation.

 

The process of moving files successfully from VMS system to VMS system via an intermediate machine encompasses six basic steps:


1. Wrap the file(s) to be moved, producing a file hereafter referred to as a wrapper.
2. Move the wrapper from the originating system to the intermediate system in the proper mode.
3. Move the wrapper from the intermediate system to the destination system in the proper mode.
4. Verify the attributes of the wrapper on the destination system.
5. Unwrap the file(s).

 

When FTP is available on both VMS systems.

The following table illustrates the process when there is an FTP server on both VMS systems for both kinds of common VMS wrappers.

STEP

SAVESET

VMS ZIP FILE

wrapping the file
$ BACKUP <files> -
$_ WRAPPER.SAV/SAVE_SET
 
$ DIRECTORY/FULL WAPPER.SAV
  (...)
Record format: Fixed length 32256 byte records
  (...)
$ ZIP "-V" WRAPPER.ZIP -
$_ <files>
 
$ DIRECTORY/FULL WRAPPER.ZIP
  (...)
Record format: Fixed length 512 byte records
  (...)

moving it to the inter- mediate system

assuming that you're sitting at the workstation with an ftp session logged into the originating system...

 
FTP> binary
FTP> get wrapper.sav

assuming that you're sitting at the workstation with an ftp session logged into the originating system...

 
FTP> binary
FTP> get wrapper.zip

moving it to the destination system

assuming that you're sitting at the workstation with an ftp session logged into the destination system...

 
FTP> binary
FTP> put wrapper.sav

assuming that you're sitting at the workstation with an ftp session logged into the destination system...

 
FTP> binary
FTP> put wrapper.zip

verifying the attributes of the wrapper on the destination system

$ DIRECTORY/FULL WRAPPER.SAV
  (...)
Record format: Fixed length 512 byte records

in this example the attributes don't match those of the originating system, so we need to change them..

 
$ SET FILE/ATTR=(LRL:32256,MRS:32256) -
$_ WRAPPER.SAV

$ DIRECTORY/FULL WRAPPER.ZIP
  (...)
Record format: Fixed length 512 byte records

in this example the attributes match those of the originating system, so we're good to go.

unwrapping the file(s) on the destination system
$ BACKUP WRAPPER.SAV/SAVE_SET -
$_ []/LOG
$ UNZIP WRAPPER.ZIP

 

NOTE:  FTP is available at the Unix command line and in the DOS shell. If you are using a Macintosh as the intermediate system, you will need to use an FTP client such as Fetch. When you log in to ftp.graysoft.com, use 'anonymous' as your user name and your e-mail address as the password.

 

You should use the foregoing strategy whenever you fetch a SaveSet or a Zip file from GrayMatter's FTP site.

 

If you can FTP directly from the destination system, that is preferable. In that case you will use steps 2 (logged into the destination system instead of the intermediate system) and steps 4 and 5.

 

When FTP is not available on the target system

It often happens that people don't have FTP on the destination VMS system but they do have a NetBIOS or AppleTalk mounting service such as Digital Equipment Corporation's Pathworks. The exact sequence of steps you will need to follow will depend on your environment. To give you some idea of how to proceed, I was able to move a SaveSet from system to system with the following procedure.


NOTE:  This procedure is intentionally more complicated that it probably needs to be. Also, in my test case the saveset would fit onto a floppy disk; this will likely not be the case if you are trying to fetch the ScriptServer distribution from our site.


1. As per steps 1 and 2 previously discussed I FTP the SaveSet to a PC in binary mode.
2. Copy the file onto a DOS formatted floppy disk.
3. Take the floppy disk to a Macintosh with PC Exchange software and mount it.
4. Mount a Pathworks volume on the Macintosh desktop and drag the SaveSet file from the floppy to the volume.
5. Log into the VMS system and look at the record attributes of the file:

 
$ directory/full wrapper.sav
 
Directory DKA100:[FREDDY.FTP_TEST]
 
WRAPPER.SAV;1 File ID: (1593,4,0)
Size: 126/126 Owner: [FREDDY]
Created: 24-APR-1997 11:45:41.00
Revised: 24-APR-1997 11:50:45.42 (10)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
File attributes: Allocation: 126, Extend: 0, Global buffer count: 0
No version limit
Record format: Stream_CR, maximum 0 bytes, longest 0 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None

 

6. In this case the record format doesn't agree with the original SaveSet so I need to change it:

$ set file/attr=(rfm:fix,lrl:32256,mrs:32256) wrapper.sav
$ d/full wrapper.sav
 
Directory DKA100:[FREDDY.FTP_TEST]
 
WRAPPER.SAV;1 File ID: (1593,4,0)
Size: 126/126 Owner: [FREDDY]
Created: 24-APR-1997 11:45:41.00
Revised: 24-APR-1997 11:52:10.62 (11)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
File attributes: Allocation: 126, Extend: 0, Global buffer count: 0
No version limit
Record format: Fixed length 32256 byte records
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None

 

In comparison to the strictly FTP example given first, notice that Pathworks has changed the record format and so I had to change that as well as the record size. The "Carriage return carriage control" record attribute is unimportant to a non-printable file so I didn't bother to change that.

Things that can go wrong

Here are the most common problems that people encounter.

 

Not initiating the transfer in binary mode

Be certain to choose binary transfer mode when moving ZIP files and SaveSets, and do it both times: when moving the file off of the originating system and when moving it onto the destination system.

 

Trying to unzip the file on a PC

This won't work. You must unwrap the file(s) on the destination machine in order to ensure that their record attributes are set correctly. If you use a web browser to try and FTP a ZIP file from our FTP site, the web browser may try to unwrap it; not a good thing.

© 2020 GrayMatter Software Corporation