実行環境

81. プログラムの CCSID とは

先の「80. CCSID は、どのようにして決まるのか」で、ファイルのCCSID の意味と
CCSID が決定される方法は理解されたと思うが、プログラムのCCSID とは、どのような
意味であるのか、とプログラムのCCSIDは、どのようにして決まるのかをここで解説する。
最初にプログラムのCCSID とは、プログラム中で使用されている固定情報が記述されている
CCSID のことを意味している。
例えば、

          TKCODE    COMP   '1a2b'                         50

という記述があったとしよう。
このとき'1a2b'という値は HEX コードで、どのような値として埋め込まれて
コンパイルされるのであろうか ?
それを示すのが CCSID である。
つまりこのプログラムが,もし CCSID 5026 環境下で実行されるとか
処理の対象となるデータ・ベース CCSID 5026 を処理するのであれば
このプログラムもまた CCSID 5026 としての固定情報が記述されていなければならない。
これがプログラムの CCSID である。
このサンプルのように 1a2b という英小文字を含むプログラムであれば
プログラムの CCSID は 5035 でなければならない。
そこでプログラムのソース・ファイルも CRTSRCPF によって CCSID 5035 として
作成しておけば CCSID 5035 のプログラムを開発することができる。

さて、ファイルの作成でも解説したようにこのソース・ファイルは必ずしも CCSID 5035 で
作成する必要もない。
CCSID 65535 で作成しておいてから、CCSID 5035 のジョブの環境下でソースを入力すれば
それは CCSID 5035 の文字を入力したのと同じ文字が入力される。
プログラムの実行時には プログラムの CCSID が65535 と記録されていても中身の固定情報は
CCSID 5035 の文字が保管されているので、実行環境によってプログラム内部の固定情報の値が
変化することはない。
これも良く雑誌やネットで CCSID 5035 のソース・ファイルを作ってから ... との
誤った解説が見受けられる。

CCSID 65535 のソース・ファイルで作成しておけば
CCSID はソース入力時のジョブのCCSID によって決定されるので、
どのような CCSID にでも対応することができる。

プログラムの実行時にはプログラムの CCSID は、あまり気にする必要もないだろう。
プログラムの CCSID については、あまり解説はないがこのような意味なのである。