自己学習メモインデックス
概要
AS400関連の自己学習を進めていく上で、大変お世話になっているPUB400.comですが、今まで日本語の入力ができずにいました。
ソースコードを新規作成する際に指定するText 'description'
に日本語を入力しようとするとエラー音が鳴りField data must be alphanumeric.
というエラーメッセージが表示されてしまったり、
SEUの画面でコメント /* */ の入力などでソースコードのコメントを日本語で入力しようとすると同じくエラー音が鳴りField data must be alphanumeric.
とエラーメッセージが表示されたりします。
このエラーを解消する方法についてまとめました。
Text 'description'
に日本語文字列を入力しようとすると Field data must be alphanumeric. と怒られる
例えば、STRSEUで物理ファイルを新規作成しようとする際、description欄に日本語でコメントを入れようとすると、エラーとなります。
これは、PUB400.comで払い出してもらったアカウントの言語設定やそれに紐づくCCSIDの設定が、
日本語に対応したものではないためだと思われます。
DSPUSRPRF
コマンドで自分の設定情報を確認すると、Language identifier
がENU
となっています。
これは、以下のサイトを参考にすると、ENU=アメリカの設定で、CCSIDは39
となっていることを表しているようです。
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/com.ibm.ondemand.installi.doc/dodinl08.htm
本来であれば、CHGUSRPRF
コマンドを実行して変更したいところですが、そのコマンドの実行を完了させるために必要な権限が割り当てられていないため、実行できませんでした。
そこで、PUB400.comにログインした後、以下のコマンドを実行することで、ログインセッションの間だけ、JOBのCCSIDを1399に変更することができます。
CHGJOB CCSID(1399)
コマンド実行後、物理ファイルの作成画面でdescriptionに日本語を入力してみると、正常に入力できます。
SEUのプログラミングする画面で日本語入力するとエラーとなる事象の解消方法
CHBJOBを利用してCCSIDを1399にするだけでは、実はソースコード内のコメントや、DSPF(画面ファイル)のラベルフィールドなどに日本語を入力することはできません。
自己学習では、ファイル定義やCLプログラムを格納するファイルは、それぞれQDDSSRCやQCLSRCなどに分けて開発しています。
これらのファイルはすでにPUB400.comでアカウント作成してもらうと、存在するファイルですが、これらのファイルにソースコード(メンバー)を作成している限り、日本語入力はできません。
日本語をソースコード内に入れたい場合は、これらのファイルから新規で作り、いくつかのオプションを変更して指定する必要があります。
まず新規でファイルを作成します。
ここでは、画面ファイル(DSPF)を格納するQDSPSRCというファイルを新規で作成します。
以下のコマンドを実行
crtsrcpf
Create Source Physical File (CRTSRCPF) の画面が表示されるのでF10
キーを押下
以下のように各パラメーターを指定してEnter
ポイントとしては
- User specified DBCS dataの指定を
*YES
に変更する - Coded character set IDを
1399
に変更する
Create Source Physical File (CRTSRCPF)
Type choices, press Enter.
File . . . . . . . . . . . . . . FILE > QDSPSRC
Library . . . . . . . . . . . > YAMAGUCHI1
Record length . . . . . . . . . RCDLEN 92
Member, if desired . . . . . . . MBR *NONE
User specified DBCS data . . . . IGCDTA *YES ←コレをYESに変更
Text 'description' . . . . . . . TEXT > '画面ソース(DSPF)'
Additional Parameters
System . . . . . . . . . . . . . SYSTEM *LCL
Expiration date for member . . . EXPDATE *NONE
Maximum members . . . . . . . . MAXMBRS *NOMAX
Access path size . . . . . . . . ACCPTHSIZ *MAX1TB
Access path logical page size . PAGESIZE *KEYLEN
Access path type . . . . . . . . ACCPTH *ARRIVAL
Access path maintenance . . . . MAINT *IMMED
Access path recovery . . . . . . RECOVER *NO
Force keyed access path . . . . FRCACCPTH *NO
Member size: SIZE
Initial number of records . . 10000
Increment number of records . 1000
Maximum increments . . . . . . 499
Allocate storage . . . . . . . . ALLOCATE *NO
Contiguous storage . . . . . . . CONTIG *NO
Preferred storage unit . . . . . UNIT *ANY
Records to force a write . . . . FRCRATIO *NONE
Maximum file wait time . . . . . WAITFILE *IMMED
Maximum record wait time . . . . WAITRCD 60
Share open data path . . . . . . SHARE *NO
Max % deleted records allowed . DLTPCT *NONE
Coded character set ID . . . . . CCSID 1399 ← コレを1399に変更
Allow update operation . . . . . ALWUPD *YES
Allow delete operation . . . . . ALWDLT *YES
Authority . . . . . . . . . . . AUT *LIBCRTAUT
試しに新規でソースコードを作成して、その中に日本語のコメントを入力してみました。
以下のように、正常に日本語入力が可能となっています。
補足
QCLSRCなどすでに存在するファイルですが、DBCSの設定を変更することができないようで、削除して作り直すしか無いと思われます。
ソースコード内に日本語入力を行いたい場合は、一度ファイルを削除して作り直すか、ソースコードを格納するファイルを別途用意(新規作成)するかしないとダメそうです。