演習 1.7: ループ

ループを使用して、ロジック・パーツで、EGL コードの同じ部分を何度も実行することができます。ループは、配列内のエレメントごとに同じアクションを実行することができるため、配列処理によく使用されます。EGL には、他のプログラミング言語でもなじみがあると思われる 3 つのタイプのループ、whileforforEach があります。

この演習では、EGL の getSize() 関数を使用して、配列内のエレメント数を検索する PageHandler を作成します。その後、配列内の各エレメントごとに for ループを 1 度実行します。このようにして、PageHandler は、配列内で一定の条件を満たすレコードの数をカウントします。

EGL におけるループについて詳しくは、ヘルプ・トピック「while」、「for」、および「forEach」を参照してください。

ループを使用する PageHandler の作成

以下のステップでは、データベース内で特定の状態のインスタンスの数をカウントするループを使用する Web ページを作成します。

  1. プロジェクト・エクスプローラー・ビューで、「EGLWeb」プロジェクトをクリックして選択する。
  2. メニュー・バーから「ファイル」>「新規」>「Faces JSP ファイル」をクリックする。新規 Faces JSP ファイル・ウィザードが開きます。
  3. ファイル名」フィールドに次のファイル名を入力する。

    LoopTest

  4. ページ・テンプレートから作成」チェック・ボックスを選択する。
  5. 次へ」をクリックする。
  6. ページ・テンプレート・タイプ」の下で、「ユーザー定義ページ・テンプレート」をクリックする。
  7. サムネール」の下で「A_gray.htpl」テンプレートをクリックする。
  8. 終了」をクリックする。新規ファイルがプロジェクトに追加され、そのファイルがエディターで開きます。
  9. 新規ファイルで、デフォルト・テキストの「Place your page content here.」を削除する。
  10. 削除したテキストの代わりに、Testing loops と入力して、Enter キーを押す。
  11. ページを右クリックして、「ページ・コードの編集」をクリックする。ページ・コード・ファイルが開きます。
  12. ページ・コード・ファイル内のすべてのコードを削除して、代わりに以下のコードを入力する。
  13. package pagehandlers;
    
    import data.*;
    
    PageHandler LoopTest 
      {view="LoopTest.jsp", onPageLoadFunction=onPageLoad}
    
    //Variables
    listOfAllCustomers   customer[];
    inputState           char(2)
      {displayName = "Enter a state:"};
    outputMessage        char(100);
    outputSum            int;
    
      Function onPageLoad()
        customerLib.getAllCustomers(listOfAllCustomers);
      end
    
      Function testSimpleLoop()
        //Initialize variables
        counter int = 1;
        outputSum = 0;
        outputMessage = "";
        numberOfRecords int = listOfAllCustomers.getSize();
    
        //Find the number of times the input state is in the customers array
        for (counter from 1 to numberOfRecords by 1)
          if (listOfAllCustomers[counter].STATE == inputState)
            outputSum = outputSum + 1;
          end
        end
    
        //Create an output message describing the number of customers found
        if (outputSum == 0)
          outputMessage = "No customers are from the state " + inputState;
        else
          outputMessage = "There are " + outputSum + " customers from " + inputState; 
        end
    
      end
    
    end

    以下は、ここで挿入したコードに関する技術面での注釈です。

  14. ファイルを保存して閉じる。

Web ページにおけるループの使用

  1. LoopTest.jsp ページに戻る。
  2. ページ・データ・ビューで「listOfAllCustomers」配列をクリックして、ページ上の「Testing loops」テキストの下へドラッグする。「リスト・コントロールの挿入」ウィンドウ が開きます。
  3. 「リスト挿入のコントロール」ウィンドウで「なし (None)」をクリックする。データベース・レコード内のすべての列が選択解除されます。
  4. 列名 (Column Name)」列で、「first_name」、「last_name」、および「state」列のチェック・ボックスを選択する。

    「リスト挿入のコントロール」ウィンドウは次のようになります。

    「リスト挿入のコントロール」ウィンドウの外観

  5. 終了」をクリックする。選択した 3 つの列が、データ・テーブルの形式でページに追加されます。
  6. 新規データ・テーブルの下をクリックして Enter キーを押し、新しく行を追加する。
  7. ページ・データ・ビューから、「outputMessage」変数を新しい行へドラッグする。「挿入のコントロール」ウィ ンドウが開きます。
  8. 「挿入のコントロール」ウィンドウで、「既存レコードの表示 (読み取り専用)」をクリックする。
  9. 終了」をクリックする。
  10. ページの下部に、ブランク行を追加する。
  11. ページ・データ・ビューから、「inputState」変数をページの下部の新しい行へドラッグする。「挿入のコントロール」ウ ィ ンドウが開きます。
  12. 「挿入のコントロール」ウィンドウで、「既存レコードの更新」をクリックする。
  13. オプション」をクリックする。「オプション」ウィンドウが開きます。
  14. 削除ボタン」チェック・ボックスをクリアする。
  15. 実行ボタン」チェック・ボックスを選択する。
  16. Submit button Label」フィールドに Count records from this state と入力する。
  17. OK」をクリックする。
  18. 終了」をクリックする。
  19. ページ・データ・ビューから、「testSimpleLoop()」関数をページ上の「Count records from this state」ボタンへドラッグする。
  20. ページを保管する。

    ページは次のようになります。

    LoopTest.jsp ページの外観

  21. ページをサーバーでテストする。
  22. Web ブラウザーでページが開いたら、U.S. 状態の 2 文字の略語 (NCCT など) を入力して、「Count records from this state 」ボタンをクリックする。データベース内にあるその状態のレコードの数がページに表示されます。

モジュール 2: EGL コード開発ツール」に進んでください。

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.