The Save-Restore Commands
January 26, 2005 Hey, Ted
We have a new machine and have joined the world of logical partitioning. We have a partition for production and one for development. I am struggling with copying data and source code between the two machines. FTP copies source members without a problem, but it drops the modification dates on the source records. To copy data files, I’ve been transmitting save files in binary mode, which is a hassle. Also, I’d like to set up a scheduled job to refresh certain files on the test system from the production system at night, and while FTP would work, it would be difficult for my job to determine if the transmission succeeded. Do you have any other ideas?
I use FTP heavily, but only because it’s convenient. For robust computing, you need something more than cobbled-together utilities. The iSeries system on which I spend most of my time also has two partitions, as you’ve described. The administrator has it set up for both TCP/IP and SNA communications. He tells me that it is possible to use both protocols if you have an Ethernet card for each partition.
If you can use SNA, let me suggest you look at the SAVRSTxxx commands, especially Save Restore Object (SAVRSTOBJ). Two other commands that you might need occasionally are Save Restore Library (SAVRSTLIB) and Save Restore Objects (SAVRST), for the IFS. There are also Save Restore Configuration (SAVRSTCFG), Save Restore Changed Objects (SAVRSTCHG), and Save Restore Doc/Lib Object (SAVRSTDLO) commands. The SAVRSTxxx commands have been around for a while, but I never had much use for them until I began working on a partitioned system.
The SAVRSTxxx commands go through a process similar to the binary FTP of save files, but without the hassle. Here are some examples.
This command copies data file SOMEFILE from the production system to the TEST system.
SAVRSTOBJ OBJ(SOMEFILE) LIB(MYLIB) RMTLOCNAME(TEST) OBJTYPE(*FILE)
This command copies an entire source physical file to the test system.
SAVRSTOBJ OBJ(QRPGLESRC) LIB(MYLIB) RMTLOCNAME(TEST)
Here’s a command to copy one RPG source member, MYSRCMBR, from production to TEST. Notice MBROPT(*NEW) was used here, because the source member did not already exist in QRPGLESRC on the TEST system.
SAVRSTOBJ OBJ(QRPGLESRC) LIB(MYLIB) RMTLOCNAME(TEST) OBJTYPE(*FILE) FILEMBR((QRPGLESRC (MYSRCMBR))) MBROPT(*NEW)
If all goes well, you’ll see message CPCAD80 (x objects saved and restored). If you get message CPFAD8D (an error occurred during the SAVRSTOBJ operation), check the messages in the job log to find the exact cause. Depending on things like object ownership and authority, you may have to specify MBROPT(*ALL) ALWOBJDIF(*ALL). If so, you have a problem, because you must have *ALLOBJ authority to use ALWOBJDIF(*ALL). Do not assume that the transfer did not take place when you see CPFAD8D. The transfer may have been successful, but the error may have been sent because authority changes took place.
Another nice thing about the SAVRSTxxx commands is that they do not require enrollment in the system distribution directory, as SNDNETF (Send Network File) does.
Click here to contact Ted Holt by e-mail.