C/END-EXEC
Chapter 3 Variables and procedures
■ 定義ステートメント:DCL-x
• 定数(constant):dcl-c
• 独⽴フィールド( standalone field):dcl-s
• データ構造(data structure):dcl-ds
• 配列( array):dcl-s xxx dim(n)
• プロトタイプ(prototype):dcl-pr , end-pr
• プロシージャー(procedure):dcl-proc , end-proc
• プロシージャー・インターフェース():dcl-pi , end-pi
サンプル・プログラム
定数(constant):dcl-c
■ 以下のコードをソースメンバーに貼り付け、コンパイル し、実⾏します
定数を定義 MAX_ELEMS に100を代入
実⾏結果
定数を定義
Default_city_name に’Londonʻを代⼊
サンプル・プログラム
独⽴フィールド( standalone field):dcl-s
DSPLY i = 1 DSPLY i = 2 DSPLY i = 3
実⾏結果
numという名前で独⽴フィールド を定義
int(10)
:10digitsの整数for loop
%char
:char型に変換+
:⽂字列の連結サンプル・プログラム
データ構造(data structure):dcl-ds
infoという名前のデー タ構造を定義
qualified
キーワー ド:データ構造名の 後にピリオドとサブ フィールド名を続け て指定likeds
キーワード:別のデータ構 造と同様に定義。サブフィールドは、パラメーターに指定された親デー タ構造のサブフィールドと同じ
inz(*likeds)
:親データ構造と同 じ方法でサブフィールドを初期化実⾏結果
サンプル・プログラム
配列( array):dcl-s xxx dim(n)
実⾏結果
datesという名前の配列 を定義
date(*iso)
:ISO 形式 (yyyy-mm-dd)の日付タ イプdim
キーワード:要素の 数を指定%date()
:パラメータが指 定されない場合、現在の日 付を返す組み込み関数%days(1)
:パラメータの日 数を加算%years(1)
:パラメータの 年数を加算サンプル・プログラム
プロトタイプ(prototype):dcl-pr , end-pr
実⾏結果
qcmdexcという 名前のプロトタ イプを定義
パラメータ の定義
※dcl-prでEXTPROC、EXTPGMキーワードを指定しない場合、デフォルトはEXTPROCキーワード EXTPROC:プロシージャー、Javaメソッドの呼び出し
EXTPGM:プログラムの呼び出し
※
コマンド実⾏(QCMDEXC) API :1
つのコマンドを実⾏するIBM 提供のプログラム
※EXTPROC、EXTPGMキーワードのパラメーターは大文字と小文字を区別します
const
:読み取り専用参 照パラメーターを指定options(*nopass)
: パラメータの省略可 パラメータ・セパレーターは、
コロン(:)
※コンマでない
サンプル・プログラム(1)
プロシージャー(procedure):dcl-proc , end-proc プロシージャー・インターフェース():dcl-pi , end-pi
/if defined(*CRTBNDRPG) ctl-opt dftactgrp(*no)
actgrp(*new);
/endif
ctl-opt option(*srcstmt);
dcl-s num int(10) inz(25);
print('his message is much longer than the 52 ' + 'characters that DSPLY allows. '
+ 'The value of variable "num" is ' + %char(num));
return;
DSPLY命令コードは最⼤値52byteという制限があります。ここでは、DSPLY 命令コードを使⽤しないprintのサンプル・プログラムをご紹介します。
CRTBNDRPGコマンドによって コンパイルする場合
活動化グループを指定
ACTGRPパラメーターによって指定された活動 化グループに関連付け、静的バインドを許可
プロシー ジャーの 呼び出し
コンパイル・リストにソース・ステー
トメントと同じ⾏番号を使⽤することを指定
サンプル・プログラム(2)
プロシージャー(procedure):dcl-proc , end-proc プロシージャー・インターフェース():dcl-pi , end-pi
前ページのつづき printという名前のプロシージャーを定義
実⾏結果
改⾏(
X‘15’)をNEWLINE
という名前で定義プロシージャ ー・インター フェースを指 定(名前は不 要)