読者です 読者をやめる 読者になる 読者になる

タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】RPGLE-英小文字によるコーディング方法

概要

  • RPGLEでのコーディングを、より他の言語に近づけて違和感を無くしたい! そう考えると、アルファベット小文字を使ってコーディングしたくなってくるというものです。

操作手順

(1)P-COMMセッションの設定

ホスト・コードページを、「939:日本語英数小文字拡張」に設定します。

f:id:no14141:20131017165143j:plain

(2)サインオンしたJOBのCCSIDを変更

CHGJOB CCSID(5035)
CCSIDとは? こちらのサイトがわかりやすいです。
http://www.axel.ne.jp/i-web/rpg/document/ccsid.htm

(3)CCSID5035のソースPFの作成

CRTSRCPFにて
CRTSRCPF FILE(TIGER/RPGLESRC2) RCDLEN(112) IGCDTA(*YES)
         TEXT(' 英小文字可能ソース PF') CCSID(5035)

(4)ソースの作成

STRSEU等で作成
STRSEU SRCFILE(TIGER/RPGLESRC2) SRCMBR(KOMOJITEST) TYPE(RPGLE)
  • 英語小文字を入力したい場合、「Ctrl」+「F3」キーを打鍵し、入力する。
  • 変数名は、大文字、小文字は同一文字として認識されるので注意。(変数ABCとabcは同じ変数とみなされます)
TIGER/RPGLESRC2 KOMOJITEST
H datEdit(*YMD/)
H*
D****************************************************************
D* Main-Line
D****************************************************************
/free
// 表示テスト
dsply (' 全角 :' + 'あいうえお123漢字');
dsply (' 数字 :' + '0123456789');
dsply (' 英大 :' + 'ABCDEFGHIJKLMN');
dsply (' 英小 :' + 'abcdefghijklmn');
dsply (' カナ :' + 'アイウエオカキクケコサシスセソ');
  
*inLR = *on;
return;
/end-free
動作テスト

・CCSID=5035のJOBにて

> CALL PGM(TIGEROBJ/KOMOJITEST)
   DSPLY   全角 : あいうえお123漢字
   DSPLY   数字 :0123456789
   DSPLY   英大 :ABCDEFGHIJKLMN
   DSPLY   英小 :abcdefghijklmn
   DSPLY   カナ :アイウエオカキクケコサシスセソ

・CCSID=5026のJOBにて

> CALL PGM(TIGEROBJ/KOMOJITEST)
   DSPLY   全角 : あいうえお123漢字
   DSPLY   数字 :0123456789
   DSPLY   英大 :ABCDEFGHIJKLMN
   DSPLY   英小 :アイウエオカキクケタチツテト
   DSPLY   カナ :                  ←表示されない。

 さらに、「Ctrl」+「F3」で、表示切替をすると・・・

   DSPLY   全角 : あいうえお123漢字
   DSPLY   数字 :0123456789
   DSPLY   英大 :ABCDEFGHIJKLMN
   DSPLY   英小 :abcdefghijklmn
   DSPLY   カナ :アイウエオカキクケコサシスセソ

所感

  • ソースのCCSIDと、ユーザーのCCSIDは同じにしないと、出力する文字が正しく表示されなかったり、文字化けしたりと不都合が生じます。(CCSIDのカタカナと英小文字の配列が、全く逆になっているからだそう。) やはり、ソースとユーザーのCCSIDは、特別な理由がない限り、同じにしておいたほうが無難でしょう。