iSeries400での C言語開発では2次言語の英語とともに PCOMM または CA/400 で
「939日本語英数小文字拡張」で接続しておいて Ctrl + F3キーによって
英小文字を入力できるようにしておく。
さらに、
CRTSRCPF FILE(MYSRCLIB/QCSRC) IGCDTA(*YES) CCSID(66535) AUT(*ALL)
によってソース・ファイルを作成するとCソースの中でも日本語のコメントなども入力できるようになる。
STRSEU MYSRCLIB/QCSRC HELLO のようにして SEU を起動して
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 printf("Hello World C Language¥n"); 0010.00 getchar(); 0011.00 }
のようにソースを入力する。
最初の3行の
#include <stdio.h> #include <stdlib.h> #include <string.h>
は、C言語の基本的な処理に必要なヘッダー・ファイルの読み込みを指示している。
C言語ではさまざまな機能はライブラリーとして提供されていて、それらの API や
関数を使用するには、その機能に見合ったヘッダー・ファイルの読み込みが必要となってくる。
ちなみに <stdio.h> とは ライブラリー QCLE のファイル H のメンバー STDIO を包含することを指示している。
次に #define TRUE 0 と #define FALSE -1 は TRUE という値 0 の変数と -1 を FALSE という
変数として定義している。
この PGM では使用しないが将来のため、つねにこの2つは定義しておくと便利である。
次に、
void main(void){ }
というのはメイン関数であり、*PGM の場合は main 関数が呼び出されて最初に実行されるようになっている。
printf("Hello World C Language¥n"); は標準出力への出力を意味しており、対話式で実行した場合は
結果は画面に表示され、バッチで実行した場合は結果はスプールに出力される。
注意しして欲しいのは ¥n という改行コードである。
¥n の文字 ¥ は円記号でなくバック・スラッシュ(キー・ボードのひらかな「ろ」のキー)でなくてはならない。
次の getchar(); はユーザーからの文字入力を待つためのものであるが実際は一時停止として
使用されることのほうが多い。
getchar(); が無いと HelloWorld という出力は目にも止まらぬ速さで終わっていまい、
確認することができないからだ。
ソースの入力が完了したら
CRTBNDC PGM(MYOBJLIB/HELLO) SRCFILE(MYSRCLIB/QCSRC) AUT(*ALL)
のようにしてコンパイルを実行する。
首尾よくコンパイルが成功すれば
CALL MYLIB/HELLO
で Hello World C Language と表示されるはずである。
C言語といっても基本はこのように Java よりもやさしい。
わずかなコツをひとつずつ覚えていけば C言語でiSeries400上でのあらゆる処理が可能であり、
RPG では使用できない API も C言語からであれば必ず使用することができる。
しかも iSeries400 では C言語のパフォーマンスが最も優れている。
OS/400 も実は C言語によって書かれていると IBM も明言している。