C400

2. C/400 での HelloWorld

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 も明言している。