■  基本的なステートメントの種類


EASY−Plusの基本中の基本のステートメントの書き方です。
(詳細はマニュアルを見てください!)
ファイル定義ステートメント

FILE    ファイル名      [ファイル属性]
 ↑        ↑                 ↑
固定  (必須)なんでも良い (任意)FBとかVBとかVSAMとか

    EX) FILE INFILE   ←INFILEを定義。JCL上のDD名です。

    ※ここの定義にエグジットルーチンを指定するとオンラインのデータベースもアクセスできます。

      EX) FILE INFILE EXIT(rotin-name USING(引数1,引数2,....))
                                ↑
                      こんな風に指定します。詳しくはマニュアルをご参照ください。

フィールド定義ステートメント

フィールド名   開始位置   長さ   属性   [HEADING] [MASK]
     ↑          ↑       ↑     ↑        ↑       ↑ 
  (必須)    (必須) (必須)(必須) リスト用  ゼロサプレス

    EX) NAME     1       10      A                       ←キャラクタータイプで10桁を定義
        TEL     11        5      P  MASK('Z9999-9999')   ←パックタイプで5桁を定義
        ADDR     *       20      A                       ←*は前のフィールドの次の位置(16桁目から)

※フィールド属性
タイプ最大長
英数字32,767
ゾーン十進数18
パック十進数10
サインなしパック十進数9
2進数4
漢字32,766
ミックス32,767

Bはビットでなくバイナリーのことです!
   例えば、
       FLD1    W  2  B   MASK HEX 
       FLD2    W  2  B
       FLD3    W  2  B
             ;
       JOB  NULL
          FLD1   =  10
          FLD2   =  10
          FLD3   =  X'0A'
          PRINT
       REPORT
       LINE 1 AAA BBB CCC
   のようなロジックでは、FLDxの中身は全て16進数で000Aとなります。

   上記の結果例↓
            FLD1     FLD2    FLD3  

            000A      10      10 


JOBステートメント

JOB  INPUT  ファイル名
 ↑      ↑      ↑
(必須)(任意)(任意)定義したファイル名

    EX1) JOB  INPUT INFILE   ←これ一行でINFILEを全件処理してくれる

    EX2) JOB                 ←これはファイル定義が1つしかない場合、EX1と同じ意味です


ロジックの主なステートメント

・PRINT          ←レポートを印刷する命令
・IF/ELSE/ENDIF  ←条件分岐の命令
・PUT            ←ファイル出力の命令
・=              ←移送命令
・+ - * /        ←四則演算命令

    EX) IF ID = 1          ←もしIDが1なら
           WK = A + B      ←WKにAとBを加算した結果を移送して
           PRINT REPA      ←REPAというリストを出力
        ELSE               ←もしIDが1以外なら
           PUT OUTFL       ←OUTFLを出力
        ENDIF


レポート定義ステートメント

REPORT  [レポート名]   [制御パラメータ] [フォーマット定義パラメータ]
 ↑          ↑           ↑               ↑
(必須)   (任意)     (任意)          (任意)


SEQUENCE        ←レポートデータを並び替える


CONTROL         ←数値フィールドを自動的に加算し、合計行をプリントする

    ※自動的に加算されるのは小数点以下桁数を指定する必要があります。
      EX) KINGAKU 1  4 P 0

    ※合計したくないコントロールフィールドには、NOPRINTを記述します。
      EX) CONTROL FINAL NOPRINT SITEN NOPRINT MISE
                    ↑   ↑      ↑     ↑    ↑
                  最終計不要    SITEN計不要   MISE計を出力


TITLE           ←レポートの見出しを指定する


LINE n  フィールド名1 フィールド名2 フィールド名3.....
 ↑          ↑           ↑              ↑
(必須)  (任意)     (任意)        (任意)     .....


    EX) REPORT REPA                  ←REPAというリストを定義
        LINE 1 NAME TEL ADDR         ←出力明細の1行目の項目は、NAME,TEL,ADDRを表示

※主なREPORT制御パラメータ
PAGESIZE1ページあたりの行数(標準は58行)
LINESIZE1行あたりの桁数(標準は132桁)
SPACE各フィールド間に挿入されるブランクの数(標準は3桁)
NOADJUSTタイトル行およびフィールドを左寄せでプリントする

※主なフォーマット定義パラメータ
DTLCTL コントロールフィールドの値を明細行にプリントするかを制御
     EVERY各明細行にプリント
     FIRST最初の明細行にプリント(標準値)
     NONEプリントしない
SUMCTL コントロールフィールドの値を合計行にプリントするかを制御
     ALL全てのコントロールフィールドを 全ての合計行にプリント
     HIAR全てのコントロールフィールドを 大合計から小合計の順に階層的にプリント(標準値)
     TAG合計行の左端に 「コントロールフィールド名+TOTAL」をプリントする
     DTLCOPY明細行の値をプリントする
SUMMARY 合計行のみのサマリーレポートを作成する




◆ 実際のコーディング例(世界一短いロジックのEASY)

  FILE INFILE
  ID     1   5  P HEADING('ID') MASK('ZZ999')
  NAME   *  10  A HEADING('シメイ')
  ADDR   *  10  A HEADING('ジュウショ')
  TEL1   *   3  P HEADING('シガイキョクバン') MASK('ZZZZ9')
  TEL2   *   5  p HEADING('TEL') MASK('Z999-9999')
  JOB INPUT INFILE
      PRINT          ←ロジックはこれ1行です
  REPORT REPT1
  LINE 1 ID NAME ADDR TEL1 TEL2

                              ↓ 実行結果

            ID       シメイ          ジュウショ    シガイキョクバン     TEL
           001   ヤマダ ハナオ     トウキョウトミナトク        03       3333-4444  
           002   スズキ ジロウ    ホツカイドウサッポロシ     011       222-1111  
           003   タナカ ヤスコ      サイタマケンサイタマシ       046       456-1234  
                                 ;
                                 ;



BEFORE PAGE

TOP PAGE