RPGプログラマー基本テスト
(サンプル問題 解説)

	RPGプログラマー(基本)テストの目的
	
	基本編では、与えられたプログラム仕様書の要件にそって、適切なRPGプログラムの作成、保守を実現するための
	知識の確認を行います。
	この試験の出題範囲は以下のとおりです。

	・処理一般
		A)指示や仕様をプログラミング作業や言語に変換する。
		B)出力仕様書を使用して印刷装置ファイルを定義する。
		C)プログラムでプログラム記述データベース・ファイルを使用する。
		D)プログラムでデータベース・ファイルの入出力命令を使用する。
		E)プログラムで表示装置ファイルの入出力命令を使用する。

	・外部記述ファイル
		A)プログラムで外部記述データベース・ファイルを使用する。
		B)プログラムで外部記述印刷装置ファイルを使用する。
		C)プログラムで外部記述表示装置ファイルを使用する。
		D)外部記述ファイルの使用時にフィールド名を付け直す。
		E)外部記述ファイルの使用時にプログラムでレコード様式名を付け直す。
		F)物理、論理/ビュー、印刷装置および表示装置の外部記述ファイルを作成する。

	・ソースの保守
		A)SEUとPDMを使用してソースを保守する。
		B)SDAを使用して表示装置ファイルを保守する。
		C)ソース・レベルの実行時デバッグ機能(STRDBG)を使用する。
		D)注記項目や注釈行を使用してソース・コード内でコードについて説明する。
		E)既存のソース・コードの論理を解釈しプログラムを保守する。
		F)コンパイル時エラーを解釈して解決する。
		G)ダンプ・リストを解釈してプログラムをデバッグする。
		H)表示装置ファイルのフィールド属性(保護、高輝度、非表示、標識による条件付けなど)を適切に使用する。
	
	・OS/400環境におけるプログラミング
		A)AS/400のテキスト・メニューとコマンドを使用してジョブ、メッセージ、印刷装置出力、
		印刷装置を管理する。 
		B)OS/400のライブラリー、ファイル、データ域、プログラム、メンバー・オブジェクトを定義する。
		C)OS/400のメッセージ待ち行列、ジョブ待ち行列、出力待ち行列オブジェクトを定義する。
		D)OS/400のユーザー・プロファイルとオブジェクト権限を定義する。
		E)ライブラリー・リストのシステム部分とユーザー部分を識別する。
		F)OS/400のライブラリー・リストの現行ライブラリーを識別する。
		G)メッセージ待ち行列のメッセージを探して解釈する。
		H)ジョブ・ログのメッセージを探して解釈する 。 
		
	・RPGⅣ
		A)ファイルのオープン、クローズ、読込み、制御の切れ目の処理を自動的に実行する
		RPGプログラム・サイクルの要素を識別する。
		B)コンパイル・コマンド(CRTxxxPGM、CRTxxxMOD、CRTPGM、CRTBNDxxxなど)を適切に
		使用する。
		C)ファイル仕様書(補足E)またはD仕様書を使用して基本的な配列(コンパイル時、実行時前、
		実行時など)を定義する。
		D)基本的な配列操作(*IN、LOKUP、SORTA、MOVEおよびMOVEA、指標など)を使用する。
		E)形象定数(*LOVAL、*HIVAL、*ALL、*BLANKS、*ZEROS、*ON、*OFFなど)をコーディングし使用する。
		F)日付情報に関連する予約語をコーディングし使用する。
		G)ジョブ日付とシステム日付を識別する。
		H)構造化された命令コード(DO DOUxx、DOWxx、IF/ELSE、SELECT/WHEN、CASxx/EXSRなど)を
		コーディングし使用する。
		I)自由形式の式(+、-、*、/、**、<、>、=、()、and、or、notなど)を使用して構造化された命令コードを
		コーディングし使用する。
		J)数値演算によるエラー(ゼロによる除算、10進数データ・エラー、算術桁あふれなど)を診断し除去する。
		K)レベル・チェックを診断し除去する。
		L)日付データ・タイプと算術演算をコーディングし使用する。
		M)サブファイルをコーディングし使用する 。 

	・制御言語(CL)
		A)単純なSBMJOB コマンドをコーディングし使用する。
		B)一時変更コマンドをコーディングし使用する。
		C)MONMSGコマンドをコーディングし使用する。 
		D)CLプログラム内で変数を使用する。
		E)メニューや処理順序を制御するCLプログラムを作成する。
		F)CALLコマンドやPARMコマンドを含むCLプログラムを作成し使用する。
		G)CLコマンドの構造と構文を理解する 。 
	
	Ⅰ.処理オプション(一般)
	
	Ⅰ-1.解答-2
		プログラム内で同一レコード様式を持つファイルは定義できない(コンパイル・エラー)ために、
		RENAME キーワードによりレコード様式の名前変更が必要。
		キーワードの第一パラメーターは外部レコード様式、第二パラメーターは内部レコード様式。
		(→「ILE RPG 解説書」)(→「ILE RPG プログラマーの手引き」)
		
	Ⅰ-10.解答-3
		READ、DOW、DOU に関する複合問題。READ 命令に関連して使用できる組み込み関数は%EOF で
		%FOUNDは使用できない。DOW は DOW 行で条件判断するが、DOU は ENDDO で条件判断する。
		よって、4)ではレコードが存在しないときに1回処理してしまうので不正解となる。
		(→「ILE RPG 解説書」) 
	
	Ⅱ.外部記述ファイル
	
	Ⅱ-1.解答-1
		外部記述ファイルの定義に関する基本問題。入力と追加であえば 1)になる。
		3)は更新ができるので無効とみなす。
		(→「ILE RPG 解説書」)

	Ⅱ-2.解答-3
		外部記述印刷装置ファイルの定義に関する基本問題。ファイル形式は E(External)で
		オーバーフロー標識は 01~99 でなければならない。
		(→「ILE RPG 解説書」)

	Ⅱ-3.解答-2
		ファイル仕様書における内部フィールド名の変更の問題。ここでは PREFIX キーワードを用いて
		接頭文字を2桁置き換えるための指定。PREFIX キーワードの第一パラメーターは接頭文字、
		第二パラメーターは先頭から置き換える桁数。第三パラメーターはない。
		(→「ILE RPG 解説書」)
		
	Ⅱ-8.解答-4
		SQL により作成されるテーブルおよびビューのレコード様式はファイル名と同じになる。
		RPG ではファイル名とレコード様式名が同じ場合、コンパイル・エラーになるので RENAME キーワードで
		変更しなければならない。SQL にはレコード様式およびメンバーの概念がない。
		(→「DB2 AS/400 用 SQL プログラミング」) (→「ILE RPG 解説書」) 
	
	Ⅲ.ソースの保守
	
	Ⅲ-1.解答-4
		英小文字を扱うために CCSID(5035)となり、ILE RPG Ⅳプログラムのために RCDLEN(112)となる。
		DBCS を扱うためには IGCDTA(*YES)が必要である。
		(→「ILE RPG プログラマーの手引き」) (→「ADTS SEU 使用者の手引きと参照 V4」)

	Ⅲ-3.解答-3
		STRSEU コマンドの SRCFILE パラメーターおよび SRCMBR パラメーターの省略時値は*PRV であり
		この意味は、「そのユーザーが前のセッションで使用した」である。
		(→「ADTS SEU 使用者の手引きと参照 V4」)

	Ⅲ-4.解答-3
		PDM のメンバーに対するオプション 14 はメンバー・タイプが RPGLE の場合 CRTBNDRPG コマンド
		を呼び出す。
		(→「ADTS/400 プログラム開発管理機能(PDM)」) 
	
	Ⅳ.OS/400環境におけるプログラミング
	Ⅳ-1.解答-4
		CRTLIB コマンドの TYPE パラメーターに関する問題。*PROD はテスト時にデータの不正更新を
		防ぐための意味があるが、これは STRDBG コマンドの UPDPROD パラメーターに*YES を指定することで
		更新できるようになる。*TEST で作成されている場合には UPDPROD パラメーターの指定は不要である。
		(→「AS/400 対話型ソース・デバッグ」)

	Ⅳ-2.解答-2
		コマンドに関する単純問題。CVTRPGSRC により RPGⅢ のソース・メンバーから RPGⅣ の
		ソース・メンバーへの変換が可能になる。

	Ⅳ-3.解答-4
		コマンドに関する単純問題。DSPPGMREF によりプログラム仕様書の鑑情報などを得ることができる。

	Ⅳ-4.解答-4
		WRKMBRPDM、STRSEU、DSPFD 共にソース・メンバーの最終更新日付の情報を得ることができる。
		(→「ADTS SEU 使用者の手引きと参照 V4」)(→「ADTS/400 プログラム開発管理機能(PDM)」) 
	
	Ⅴ.RPGⅣ
	Ⅴ-1.解答-1,4
		DATEDIT キーワードで指定した形式はユーザー日付(*DATE/UDATE)と編集コード Y を使用した
		数値フィールドに影響を与える。
		(→「ILE RPG 解説書」)
		
	Ⅴ-2.解答-1
		RPG サイクルを使用したファイル定義とその読取り順に関する規則として、プライマリー・ファイルが
		必ず最初に読み込まれ、セカンダリー・ファイルはその定義順に読み込まれる。
		ちなみにRPG では特に指定がなければファイルは F 仕様書で定義した順とは逆に後からオープンされる。
		(→「ILE RPG 解説書」)
		
	Ⅴ-3.解答-4
		突合わせ処理とは複数のファイルからあるキー順に読む処理のことなのでその結果、
		ファイルの読み取り順序は突合せキーの値に従ってランダムになる。
		(→「ILE RPG 解説書」) 

	Ⅵ.制御言語(CL)
	
	Ⅵ-1.解答-2
		基本問題。ILE CL プログラムのソース・メンバー・タイプは CLLE。
		(→「ADTS SEU 使用者の手引きと参照 V4」)
		
	Ⅵ-2.解答-4
		パラメーターに関する基本問題。
		パラメーターの変数定義(DCL)と受け取り順には特に制約はない。
		(→「AS/400 CL プログラミング」)
		
	Ⅵ-3.解答-3
		データ・タイプに関する基本問題。CL プログラムで扱えるデータ・タイプは
		*CHAR *DEC *LGL の3種類のみ。(→「AS/400 CL プログラミング」)
		
	Ⅵ-4.解答-3
		定義順序に関する基本問題。DCLF コマンドと DCL コマンドの定義順に特に制約はない。
		(→「AS/400 CL プログラミング」)
	
	Ⅵ-5.解答-4
		PGM コマンド、ENDPGM コマンドともに必要なければ定義しなくてもよい。
		定義する必要がある場合は、パラメーターの受け取りや ENDPGM への GOTO での分岐など。
		(→「AS/400 CL プログラミング」)