C/400

8. C/400 の中でASCIIデータを扱うには?

C/400を使用しているとIFSファイルを扱う機会が多いが IFSの大半は ASCII 形式で保管されている。
ちょっとしたデータの比較などに EBCDIC変換などを行っていたのでは面倒だし、レスポンスも低下する。
パフォーマンスに優れたC言語を使用している意味がない。ここでは簡単にASCIIデータの比較などを
行う方法について紹介する。

#pragma convert(850) から "pragma convert(0) までのあいだの固定値はASCII コードであると
コンパイラーにみなされるのである。
以下に示すサンプル・コードでの文字列「ABC」はEBCDICコードでなく ASCIIコード として解釈される。
よって data にもしASCII コードが保管されている場合もこの比較に使用することができる。

0001.00 #include <stdio.h>
0002.00 #include <stdlib.h>
0003.00 #include <string.h>
0004.00
0005.00 #define TRUE         0
0006.00 #define FALSE       -1
0007.00
0008.00 void main(void){
0009.00    char data[128];
0010.00
0011.00   #pragma convert(850)
0012.00     if(strncmp(data, "ABC", 3) == 0){
0013.00   #pragma convert(0)
0014.00        printf("ASCII found\n");
0015.00     }
0016.00     getchar();
0017.00 }