Presenting the CHGATR Command
October 20, 2004 Hey, Ted:
I had a similar problem to Jim’s in “Wanted: Qshell Output in ASCII.” Qshell was building EBCDIC files, but he wanted them in ASCII. In my case, a “Wintel” machine’s FTP client was putting ASCII files in the Integrated File System, but I preferred EBCDIC files. I found a CL command that solved my problem.
I used the Change Attributes (CHGATR) command. This command, which was introduced in V5R1, can change the CCSID of a file. I used commands like the following to change files from CCSID 819 (the CCSID they were assigned when they were created during an FTP session) to 37 (US English):
CHGATR OBJ('/mydir/myfile.txt') ATR(*CCSID) VALUE(37)
I need to point out that CHGATR does not convert the data in the file to the new CCSID. In my case, I sent a second put command and everything was fine. Here is a portion of an illustrative script:
lcd /temp cd /mydir put empty.txt mynewfile.txt quote rcmd CHGATR OBJ('mynewfile.txt') ATR(*CCSID) VALUE(37) put myrealpcfile.txt mynewfile.txt
The empty.txt file is not really empty. I had keyed one x into it. Copying it to the IFS created a file with a code page of 819. Then I used the rcmd server command to change the CCSID. Last, I copied the real data to the IFS.
Thanks for bringing CHGATR to our command. As you point out, it is a relatively new command.
You can use CHGATR against a single file or a group of files whose names match a pattern. If you specify SUBTREE(*YES), the system will also change objects in subdirectories.
In addition to changing a file’s CCSID, CHGATR can change the following properties.
|*READONLY||Whether a file can be changed or deleted.|
|*HIDDEN||Whether a file is displayed in an ordinary directory list.|
|*PCSYSTEM||Whether a file is considered as belonging to a PC.|
|*PCARCHIVE||Whether a file has been changed since the last save by a PC.|
|*SYSARCHIVE||Whether a file has been changed since an iSeries save.|
|*ALWCKPWRT||Whether a stream file can be shared during save-while-active checkpoint processing.|
|*USECOUNT||The number of days an object has been used.|
|*DISKSTGOPT||How the system allocates auxiliary storage for an object.|
|*MAINSTGOPT||How the system allocates main storage for an object.|
Be aware that not all options are available in every file system.
To learn more about CHGATR, go to the IBM iSeries Infocenter.