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.
The other ways to change a file’s CCSID that were presented in “Wanted: Qshell Output in ASCII” and “More Qshell Output in ASCII” are fine, but I wanted to mention this CL command.
–Ken
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.
Property | Description |
*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.
–Ted