【DO!BOOK・ページリンク】
2008_migaro_techreport_001   128 / 136

BOOKをみる

10秒後にBOOKのページに移動します


126  id 属性は全て“RBG01”と指定する。 value 属性は、東京“R1”、名古屋“R2”、 大阪“R3”とそれぞれ指定する。【図2】  これで、画面からいずれかの都市を選 択すると、id = RBG01 にHTML で指 定したそれぞれのvalue 値がセットされ るようになる。例えば、画面で東京を選 択した場合は、“R1”がRPG プログラ ムに渡される。  HTML の設定が正しくでき、さらに 画面で実行処理を行うと、JACi400 が RPG プログラムを呼び出し、RPG プロ グラムでid = RBG01 の値を受け取る ことができるのだ。あとは、それぞれの 値別に、処理を記述すればよい。【図3】 Aラジオボタンで選択した値を保持する 方法  HTML を触ったことがある人ならば、 ラジオボタンの初期値は、HTML ソー スで“checked”を指定した項目になる ことを知っているだろう。そのため、画 面で値を選択して実行したあと、次に画 面表示するときには選択した値を保持せ ずに、常に初期値として指定した項目に 戻ってしまう。  これでは都合が悪い。照会画面では自 分が指定した内容は保持していたいし、 前の画面に戻ったときも選択した値を保 持していたいものだ。  ではどうするか。実はこれもRPG プ ログラムで対応できるのだ。選択時に受 け取った値を、そのまま次の画面にも 送ってあげればよい。 画面に送るための手順  それでは、画面に送るための手順を順 に説明しよう。 ・JACi400Designer での設定  最初に、JACi400Designer で設定を 行う。  ラジオボタンid = RBG01 の設定で、 Usage 項目を“Both”にし、Additional 項目にラジオボタンの項目数・value 属 性の長さ・画面に表示する記述の長さを 指定する。これで、ラジオボタンが入出 力フィールドとして定義される。  ここでは、ラジオボタンの項目数を “3”・value 属性の長さを“2”・画面に 表示する記述の長さを“10”に設定して いる。 ・生成されるDDS  JACi400Designer で各フィールドを 設定したあと、JACi400 でDDS を作成 する。  今回の例では、図4 のような、 INPUT とOUTPUT タイプのDDS が 作成される。INPUT タイプは、画面か ら選択された値を受け取るためのもので ある。OUTPUT タイプのフィールド O01002 は、ラジオボタンの項目数を指 定する。フィールドORBBG01 には、 選択フラグ・value 属性の値・画面に表 示する記述内容を、ラジオボタンの項目 数だけ指定する。【図4】 ・RPG プログラムのコーディング  DDS が作成されると、いよいよRPG プログラムのコーディングをしなければ ならない。  まずは各定義を行う。ラジオボタン情 報用の配列を宣言し、同じくラジオボタ ン情報用のDATA STRUCTURE を定 義する。配列のレコード長は39 バイト である。これは、選択フラグ1 バイト・ value 属性の値2 バイト・画面に表示す る記述内容の10 バイトをあわせた13 バイトに対して、ラジオボタンの項目数 3 つ分の合計値である。  また、DATA STRUCTURE は、各 項目別に選択フラグ・value 値・表示す る記述内容を定義しておく。そして、配 列の要素も“1R1 東京0R2 名古屋0R3 大阪”と内部で定義しておく。 データセットの処理  以上の定義ができたら、次にデータ セットの処理を行う。  まず、配列の要素“1R1 東京0R2 名古 屋0R3 大阪”をDATA STRUCTURE にセットし、ラジオボタンの項目数“3” をフィールドO01002 にセットする。  このまま処理を終了すると、画面には ラジオボタンが表示され、“東京”に チェックが入った状態になる。しかしこ れだと、常に画面のラジオボタンは東京 が選択された状態になってしまう。  では、名古屋や大阪を選択状態にする にはどうしたらよいか、それは、画面で 選択状態にする項目の選択フラグに“1” を、その他には“0”をセットすればよい。 つまり、名古屋であれば、DATA STRUCTURE で定義したRD21 に“1” をセットし、その他のRD11 とRD31 に“0”をセットするのである。同様に、 大阪を選択状態にするには、RD31 に“1” をセットすればよい。  ここまでできたら、最後にDATA STRUCTURE の値をフィールドORBG01 に転送してRPG から画面にデータを送 信して完了となる。【図5】  これで、ラジオボタンで選択した値を、 次回画面表示時に保持することができる。  実は、これと同じ方法でコンボボック スも制御でき、とても簡単である。ぜひ 覚えていただきたい。 第2画面で選択した値を、 第1画面に戻す  ここから画面遷移の方法を紹介しよ う。  RPG 開発者にとっては、Web アプリ ケーションの画面遷移も、どのようにす ればよいのかピンと来ないのではないだ ろうか。なぜなら、Web アプリケーショ ンでは多くの場合、画面処理ごとに通信 は切断されるからである。操作するユー ザーからの入力を待ち続けているわけで はない。  一方、従来の5250 では、RPG プログ ラムが次の処理を待機している。それゆ え、制御方法が違い、どのようにしたら よいかわからないのである。 JACi400の場合  JACi400 の場合は、メニューから画 面が呼び出されると、JACI400 サブシ ステム配下にジョブが作成される。 HTML を出力しても、CGI は終了する が、RPG プログラムは待機した状態に なるのである。つまり、従来どおりの手 法で開発ができるのだ。  また、アプリケーション構成は、HTML 画面1 つに対して、RPG プログラム1 つである。したがって、ある画面から別 の画面に遷移するときは、もとのRPG プログラムから別の画面用のRPG プロ グラムを実行することになる。画面間で データを受け渡す場合には、何らかの手 段で受け渡ししなければならない。  とはいえ、これまでの5250 での開発 と比べても、特別な手法ではないので安 心していただきたい。