5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RPGⅢからRPGⅣへの変換方法と違い

Last updated at Posted at 2024-10-10

RPGⅢとRPG Ⅳの変換方法と違い

目次

1.はじめに
2.RPGⅢからRPGⅣへの変換
3.RPGⅢとⅣの違い
4.デモ動画
5.作成ソース

1. はじめに

本記事では、RPG ⅢからRPG IVにPGMを変換する手順とそれぞれのPGMの違いについてまとめています。
とりあえず変換する手順が知りたいという方から、具体例やそれぞれの違いを実画面で見たいという方まで参考にしていただければと思います。

2. rpg3からrpg4への変換

IBM i標準のコマンド:CVTRPGSRCで変換可能です。
※コマンド内の以下の値は、実行環境に合わせて変更してください。

※LIBRARY3: RPG Ⅲのソース・ファイルが格納されているライブラリ名を指定してください
※QRPGSRC: RPG Ⅲのソース・ファイル名を指定してください
※LIBRARY4: RPG Ⅳのソース・ファイルが格納されているライブラリ名を指定してください
※QRPGLESRC: RPG Ⅳのソース・ファイル名指定してください
※SRCMBR: ソース・メンバー名を指定してください

【RPG ⅢからRPG Ⅳに変換するコマンド例】

CVTRPGSRC FROMFILE(LIBRARY3/QRPGSRC) FROMMBR(SRCMBR) TOFILE(LIBRARY4/QRPGLESRC) TOMBR(SRCMBR) CVTRPT(*NO) LOGFILE(*NONE)

1_RPG ⅢからRPG Ⅳに変換するコマンド例_1.png

上記コマンドでは実行時のログ出力を行いませんが、事前にログ・ファイルを作成し変換時にログ出力するよう指定することが可能です。
以下、ログファイルを出力する際のコマンドです。

【ログ・ファイル作成コマンド例】

CPYF FROMFILE(QRPGLE/QARNCVTLG) TOFILE(LIBRARY4/QRNCVTLG) MBROPT(*REPLACE)  CRTFILE(*YES)

2_ログ・ファイル作成コマンド例.png

【ログ出力する場合のRPG ⅢからRPG Ⅳに変換するコマンド例】

CVTRPGSRC FROMFILE(LIBRARY3/QRPGSRC) FROMMBR(SRCMBR) TOFILE(LIBRARY4/QRPGLESRC) TOMBR(SRCMBR) LOGFILE(LIBRARY4/QRNCVTLG)

3_ログ出力する場合のRPG ⅢからRPG Ⅳに変換するコマンド例.png

以下のRUNQRYコマンドからログを確認いただくことができます。

【RUNQRYコマンド例】

RUNQRY QRYFILE(LIBRARY4/QRNCVTLG)

(実行結果例)
4_RUNQRYコマンド例.png

※変換時の注意点 その1

RPG Ⅳのソース・ファイルはレコード長が最低112桁必要なので、RPG Ⅲのソース・ファイルが92桁以下の場合は事前に変換先ファイルとして112桁のソース・ファイルを作成しておいてください。

【ソース・ファイル作成コマンド例】

CRTSRCPF FILE(LIBRARY4/QRPGLESRC) RCDLEN(112) IGCDTA(*YES)

5_ソース・ファイル作成コマンド例.png

RPG Ⅲのソース・ファイルの長さの確認方法は下記のとおりです。

DSPFFD FILE(LIBRARY3/QRPGSRC)

6_DSPFFD.png

表示された画面で改ページし、“レコード長”の項目を探して下さい。
同行に表示されている値がそのソース・ファイルのレコード長です。

7_レコード長.png

※変換時の注意点 その2

RPG ⅢのCCSIDとRPG ⅣのCCSIDが異なる場合、下記のようなエラーメッセージが表示されることがあります。

8_RPG変換時の注意点:文字コード(CCSID).png

それを避けるため、変換時にはCHGJOBコマンドで“RPG ⅢのCCSIDと同じCCSID”にするか、あるいは“CCSID(65535)”を指定します。

【ジョブのCCSID変更コマンド例】

CHGJOB CCSID(65535)

※変換時の注意点 その3

実行時に下記のようなエラーメッセージが表示されることがあります。

9_RPG変換時の注意点:印刷装置.png

この場合、システム値やUSRPRF等を変更する他、仮想装置PRT01を作成する方法で回避できます。

【仮想印刷装置PRT01を作成するコマンド例】

CRTDEVPRT DEVD(PRT01) DEVCLS(*VRT) TYPE(5553) MODEL(B01) IGCFEAT(2424J2)

または

CRTDEVPRT DEVD(PRT01) DEVCLS(*VRT) TYPE(5583) MODEL(200) IGCFEAT(2424J2)

3. rpg3とrpg4の違い

RPG ⅢとRPG Ⅳの違いを以下にまとめました。

番号 違い RPGⅢ RPGⅣ
1 ファイル名の桁数 8桁 10桁
2 日付フィールド 扱える機能がないため10進数フィールドで定義 データタイプDで定義
3 時刻フィールド 扱える機能がないため10進数フィールドで定義 データタイプTで定義
4 日付と時刻の計算方法 10進数フィールドを年月日で分ける。繰り上げ繰り下げは条件分岐を使用して算出する。 フィールド 演算命令 フィールドで計算可能
5 演算命令:UPDATE UPDATと記載 UPDATEと記載
6 演算命令:DELETE DELETと記載 DELETEと記載
7 演算命令:RETURN RETRNと記載 RETURNと記載
8 定義仕様書(D仕様書) - RPG Ⅳから使用され、変数や配列、固定情報を定義
9 補足仕様書(E仕様書) RPGⅢで使用され、プログラムで使用する配列を定義 -

では、順に違いを詳しくみていきます。

1. ファイル名の桁数

RPG Ⅲは8桁、RPG Ⅳは10桁まで指定することができます。

●RPG Ⅲ
7~14桁目
10_ファイル名の桁数_Ⅲ.png

●RPG Ⅳ
7~16桁目
11_ファイル名の桁数_Ⅳ.png

該当の記述にカーソルをあててF4キーを押下すると、項目ごとに確認ができます。
ファイルは以下のように定義します。

・RPGⅢ
12_f4.png
・RPGⅣ
13_f4.png

2. 日付フィールド

●RPG Ⅲ
日付形式用の機能がないため、8桁のゾーン 10 進数フィールドで定義します。
日付として扱うために、プログラム内で分岐処理を設定して無理矢理日付型にします。

14_日付フィールド.png

●RPG Ⅳ
データタイプにD、DATFMTキーワードのパラメータに日付形式を指定するだけで定義ができます。

15_日付フィールドⅣ.png

3. 時刻フィールド

●RPG Ⅲ
日付と同様に8桁のゾーン 10 進数フィールドで定義します。
こちらも時刻として扱うために、プログラム内で分岐処理を設定して60進法計算をしているかのように見せます。

16_時刻フィールドⅢ.png

●RPG Ⅳ
データタイプにT、TIMFMTキーワードのパラメータに時刻形式を指定するだけで定義ができます。
17_時刻フィールドⅣ.png

4. 日付と時刻の計算方法

●RPG Ⅲ
以下のように地道に条件分岐設定を行い算出します。
① 日数が31日の月と30日の月で条件分けを行う
② 2月がうるう年かどうか判定を行う
③ 最終日が31日の月と30日の月で最大の日数が異なってくるため、それぞれの条件に分けて、加算を行い、日→月→年の順番で繰り上げ判定を入れる
④ 日数と月数が加算であふれた場合は正しい数字に変換を行ってからセットする(例32日→1日)

18_日付・時刻の計算方法Ⅲ.png

●RPG Ⅳ
%DAYS関数を使用してより簡単に計算ができます。%DAYS(10)と指定すると、
変数に代入された日付から10日後の日付を計算します。
EVAL 変数名=変数名 + %DAYS(数字)のような形で使用します
19_日付・時刻の計算方法Ⅳ.png

5. 演算命令_更新

最後にロックされたレコードを更新します。
●RPG Ⅲ
“UPDAT”と記載します。
20_演算命令:UPDATEⅢ.png

●RPG Ⅳ
”UPDATE”と記載します。
21_演算命令:UPDATEⅣ.png

該当の記述にカーソルをあててF4キーを押下すると、項目ごとに確認ができます。UPDATEは以下のように定義します。
・RPGⅢ
22_F4.png
・RPGⅣ
23_F4.png

6. 演算命令_削除

データベース・ファイルからレコードを削除するときに使用します。
●RPG Ⅲ
”DELET”と記載します
24_演算命令:DELETEⅢ.png

●RPG Ⅳ
”DELETE”と記載します。
25_演算命令:DELETEⅣ.png

該当の記述にカーソルをあててF4キーを押下すると、項目ごとに確認ができます。DELETEは以下のように定義します。

・RPGⅢ
26_F4.png
・RPGⅣ
27_F4.png

7. 演算命令_戻り

プログラムの呼び出し元に戻すための命令です。通常、プログラムを終了させる場合は、LR標識をオンにしてRETURN命令を実行します。
●RPG Ⅲ
“RETRN”と記載します。
28_演算命令:RETURNⅢ.png

●RPG Ⅳ
”RETURN”と記載します。

29_演算命令:RETURNⅣ.png

8. 定義仕様書

D仕様書はRPG Ⅳから使用されます。
29_D仕様書(定義仕様書)Ⅳ.png

■ 使用目的
 1. 名前付きの固定情報(=プログラムの処理によって変わらないデータ項目)
 2. 変数(=プログラムの処理によってその都度値が変わるデータ項目)
 3. 配列
■ 記述
 1.仕様書コード:D
 2.名前:変数、固定情報の名前
 3.定義のタイプ:C-固定情報、S-変数
 4.長さ:変数の長さ
 5.属性:変数のタイプ
  A-1バイト文字、G-図形文字、P-パック10進数、S-ゾーン10進数、D-日付、
  T-時刻
 6.小数点以下:小数点以下の桁数
 7.機能:固定情報またはキーワード

9. 補足仕様書

E仕様書はRPGⅢで使用されます。
1次元のみ可能で、2次元の配列は定義できません。

■ 使用目的
配列の名称、要素数、要素の長さなどプログラム中で使用する配列にかかわる内容を定義します。
31_E仕様書.png

■ 記述
 1.仕様書コード:E
 2.テーブル名:配列またはテーブルの名前を入力
 3.項目数 レコード:1レコードあたりの項目数を決めます
 4.項目数 テーブル:配列またはテーブル項目の最大数を指定
 5.項目の長さ:指定した配列またはテーブルの各要素の長さを表す
 6.配列のデータタイプ P/B/L/R:
  Pの場合…パック10進数形式
  Bの場合…データが2進数形式
  Lの場合…データの前に+、-がつく場合
  Rの場合…データの後ろに+、-がつく場合
 7.小数部 位置:小数点以下の桁数
 8.順序(A-D):
  A…データを昇順にする
  D…データを降順にする
 9.代替名:代替用の名前を入力
 10.注記:コメントが残せる

4. デモ動画

■RPGソースの作成方法

Videotogif.gif

■作成したプログラム

Videotogif (1).gif

5. 作成ソース

RPGⅢ

rpg3物理ファイルソース

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      *           COPYRIGHT IBM CORP.                                  *
      *                                                                *
      *                                                                *
      *                                                                *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *--------------------------------------------------------------*
      *  物理ファイル名:CDMPR                                *
      *                :品目マスター                              *
      *--------------------------------------------------------------*
     A          R PRR01                     TEXT('品目マスター')
     A            PRPRCD        20A         COLHDG('品番')
     A            PRPRRK        22A         COLHDG('品名')
     A            PRSRCD         5A         COLHDG('仕入先コード')
     A            PRZMBN        20A         COLHDG('図面番号')
     A            PRPRTP         1A         COLHDG('品目タイプ')
     A            PRTEIK        11S 0       COLHDG('定価')
     A            PRGENK        11S 0       COLHDG('原価')
     A            PRGSUR        11S 0       COLHDG('当月売上数量')
     A            PRNSUR        11S 0       COLHDG('当年売上数量')
     A            PRGGNK        11S 0       COLHDG('当月売上原価')
     A            PRNGNK        11S 0       COLHDG('当年売上原価')
     A            PRGKIN        11S 0       COLHDG('当月売上金額')
     A            PRNKIN        11S 0       COLHDG('当年売上金額')
     A            PRHCDT         8S 0       COLHDG('発注日')
     A            PRNHDT         8S 0       COLHDG('納品日')
     A            PRCRDT         8S 0       COLHDG('作成日')
     A            PRUPDT         8S 0       COLHDG('最終更新日')
     A            PRCRTM         8S 0       COLHDG('作成時刻')
     A            PRUPTM         8S 0       COLHDG('最終更新時刻')
      *
     A          K PRPRCD

rpg3メイン機能ソース

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      * 5754-AEP  COPYRIGHT IBM CORP. 1995 LICENSED MATERIAL -         *
      *           PROGRAM PROPERTY OF IBM                              *
      *           REFER TO COPYRIGHT INSTRUCTIONS FORM                 *
      *                              NO. N:G120-2083                   *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
      *  PROGRAM   :  RPG100                                       *
      *  PROGRAM記述 : 品目マスター保守                            *
      *                                                                *
      * 更新日       :  2024/08/30                                   *
      *                                                                *
      *                                                                *
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
     H            Y/                                    1
      *===============================================================*
      *                   FILE
      *===============================================================*
      *---------------------------------------------------------------*
      *  画面                   : DISPLAY FILE
      *---------------------------------------------------------------*
     FRPG100D CF  E                    WORKSTN
     F                                              KINFDS WSINF
      *---------------------------------------------------------------*
      *  品目マスター  M/F      : INDEX  KLIST=KEYPR
      *---------------------------------------------------------------*
     FCDMPR   UF  E           K        DISK                      A
      *===============================================================*
      *                   ARRAY
      *===============================================================*
     E                    CMD     1   2 78                CMD KEY情報
     E                    MOD     1   4  6               モード
     E                    MSG     1  15 78               メッセージ
     E                    COIBM   1   1 76                COPYRIGHT IBM
      *===============================================================*
      *                   DS
      *===============================================================*
      *  +--------------------------------------------------+
      *  |   コントロールフラグの、処理
      *  |        WDSP      画面処理のトリガー
      *  |        WUPD      更新処理のトリガー
      *  |        WLOOP     同一画面処理の繰り返し制御
      *  |        WCLR1     第一画面クリア
      *  |        WCLR2     第二画面クリア
      *  |        WERR1     第一画面エラー制御
      *  |        WERR2     第二画面エラー制御
      *  |        WERR3     第三画面エラー制御
      *  |        WERR9     ファイル更新エラー
      *  |        WMOD      処理モード判別フラグ
      *  |        WCHG      データ変更判別フラグ
      *  |        WFRST     一回目の制御フラグ
      *  |        WDLT      削除確認フラグ
      *  +--------------------------------------------------+
     IWCTL        DS
     I                                        1   1 WDSP
     I                                        2   2 WUPD
     I                                        3   3 WLOOP
     I                                        4   4 WCLR1
     I                                        5   5 WCLR2
     I                                        6   6 WERR1
     I                                        7   7 WERR2
     I                                        8   8 WERR3
     I                                        9   9 WERR9
     I                                       10  10 WMOD
     I                                       11  11 WCHG
     I                                       12  12 WFRST
     I                                       13  13 WDLT
      *<<システム日付>>
     I            DS
     I                                        1  140WKDATE
     I                                        1   60WKTIME
     I                                        7  140WKDAT8
     I                                        9  140WKDAT6
      *----------------------------*
      *   PROGRAM DATA STRUCTURE   *
      *----------------------------*
     I           SDS
     I                                     *PROGRAM WKPGM
     I                                      244 253 WWSID
     I                                      254 263 WUSER
      *----------------------------*
      *   WORKSTN DATA STRUCTURE   *
      *----------------------------*
      *<<罫線>>
     IS#KBFR      DS
     I                                        1   1 X2F
     I                                        2   2 KBFR
      *<<カーソル制御>>
     IWSINF       DS
     I                                      370 370 WLINE
     I                                      371 371 WCOLM
     I                                    B 378 3790WGYO
     I            DS
     I                                    B   1   20W1LIN
     I                                        1   1 W1LIN2
     I                                        2   2 W1LIN1
     I                                    B   3   40W1COL
     I                                        3   3 W1COL2
     I                                        4   4 W1COL1
      *<<コミット制御>>
     ICMTID       DS
     I                                        1  10 USER
     I                                       11  20 PGMN
     IP@MDTA      DS
     I                                    P   1   80P@M01
     I                                    P   9  160P@M02
     I                                       17  32 P@M03
     I                                       33  62 P@M04
     I                                    P  63  640P@M05
      *<<発注日>>
     I            DS
     I                                        1   80WKHCDT                発注�         �
     I                                        1   40WKHCYR                発注�         �
     I                                        5   60WKHCMT                発注�         �
     I                                        7   80WKHCDY                発注�         �
      *<<納品日>>
     I            DS
     I                                        1   80WKNHDT                納品�         �
     I                                        1   40WKNHYR                納品�         �
     I                                        5   60WKNHMT                納品�         �
     I                                        7   80WKNHDY                納品�         �
     C/EJECT
     C                     MOVELCOIBM     COIBM            COPYRIGHT IBM
      *===============================================================*
      *                   PLIST
      *===============================================================*
      *===============================================================*
      *                   KLIST
      *===============================================================*
      *<<品目マスター>>
     C           KEYPR     KLIST
     C                     KFLD           PRPRCD           品番
      *===============================================================*
      *          MAIN ROUTINE
      *===============================================================*
      *<< 初期設定 >>
     C                     EXSR SBINZ                      初期設定処理
      *
     C                     DO   *HIVAL
      *<<画面処理>>
     C           WDSP      CASEQ'1'       SB1000           第一画面処理
     C           WDSP      CASEQ'2'       SB2000           第二画面処理
     C           WDSP      CASEQ'9'       SBEND            終了処理
     C                     ENDCS
      *<<更新処理>>
    +C           WUPD      IFEQ '1'
    |C                     EXSR SBUPD                      更新処理
    +C                     ENDIF
      *
     C                     ENDDO
      *==============================================================*
      *          SBINZ    ワークフィールドの初期設定
      *==============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : ワークフィールドの初期設定
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SBINZ     BEGSR
      *<<画面クリア>>
     C                     CLEARFMT10                       FMT10-CLEAR
     C                     CLEARFMT20                       FMT20-CLEAR
      *<< WORK FILDの定義を行う。>>
     C                     Z-ADD*ZERO     WKHDIV  80       発注日(商)
     C                     Z-ADD*ZERO     WKHMVR  80       発注日(剰余)
     C                     Z-ADD*ZERO     WKNDIV  80       納品日(商)
     C                     Z-ADD*ZERO     WKNMVR  80       納品日(剰余)
     C                     MOVEL'0'       WKEMSG  1         エラーメッセージフラグ
     C                     MOVEL'0'       WKURYR  1        閏年フラグ
      *<<フィールドの初期設定を行う。>>
     C                     MOVELWKPGM     D1PGID            プログラム ID
     C                     MOVEL'1'       WCLR1            第一画面クリアー
     C                     MOVEL'W'       WMOD             モード(初期値:登録)
     C                     SETON                     99     オーバーフロー標識ON
      *<<画面メッセージCTL SFLEND >>
     C                     SETON                     22
      *
     C                     MOVEL'1'       WDSP
      *
     C                     ENDSR
      *===============================================================*
      *          SB1000   第一画面ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第一画面処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SB1000    BEGSR
      *<<第一画面クリアルーチン>>
    +C           WCLR1     IFEQ '1'
    |C                     EXSR SB1CR
    +C                     ENDIF
      *<<第一画面初期設定ルーチン>>
     C                     EXSR SB1IZ
      *<<入力制御>>
    +C           WMOD      IFEQ 'W'
    |C           WMOD      OREQ 'U'
    |C                     SETOF                     30
    |C                     ELSE
    |C                     SETON                     30
    +C                     ENDIF
      *<<第一画面出力>>
     C                     EXFMTFMT10
      *<< MESSEGE CLEAR >>
    +C           *INKC     IFEQ '0'
    |C           *INKE     ANDEQ'0'
    |C                     MOVEL*BLANK    D1MSG
    +C                     ENDIF
   +-C                     SELEC
   |  *<< CMD3終了処理>>
   | C           *INKC     WHEQ '1'
   | C                     MOVEL'9'       WDSP
   |  *<< CMD5モード切替>>
   | C           *INKE     WHEQ '1'
   | C                     EXSR SB1KE
   |  *<<実行キー(CMD3以外)処理>>
   | C                     OTHER
   |  *<<第一画面チェックルーチン>>
   | C                     EXSR SB1CK
   |  *<<エラーなし;第二画面処理>>
   |+C           WERR1     IFEQ '0'
   ||C                     MOVEL'2'       WDSP
   ||C                     MOVEL'1'       WCLR2
   |+C                     ENDIF
   +-C                     ENDSL
      *
     C                     ENDSR
      *===============================================================*
      *          SB1CR    第一画面クリアルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第一画面のクリア処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SB1CR     BEGSR
      *
      *<<第一画面クリアーを行なう。>>
     C                     CLEARFMT10                       FMT10-CLEAR
      *<<エラーフラグOFFを行なう。 >>
     C                     MOVEL'0'       WERR1            代表エラーフラグ
      *<<クリアー・フラグ >>
     C                     MOVEL'0'       WCLR1            第一画面クリアー
     C                     MOVEL'1'       WCLR2            第二画面クリアー
      *
     C                     ENDSR
      *===============================================================*
      *          SB1IZ    第一画面クリアルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第一画面のクリア処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SB1IZ     BEGSR
      *
     C                     TIME           WKDATE
     C                     Z-ADDWKDAT6    D1DAT6           日付
     C                     Z-ADDWKTIME    D1TIME           時刻
      *
     C                     MOVELWKPGM     D1PGID            プログラムID
     C                     MOVELCMD,1     D1CMD             CMD KEY情報
      *<<処理モードのセット>>
    +C                     SELEC
    |C           WMOD      WHEQ 'W'
    |C                     MOVELMOD,1     D1MOD
    |C           WMOD      WHEQ 'U'
    |C                     MOVELMOD,2     D1MOD
    |C           WMOD      WHEQ 'D'
    |C                     MOVELMOD,3     D1MOD
    |C           WMOD      WHEQ 'S'
    |C                     MOVELMOD,4     D1MOD
    +C                     ENDSL
      *
     C                     SETOF                     30    画面プロテクト = OFF
      *
     C                     ENDSR
      *===============================================================*
      *          SB1KE    モード切替ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : モード切替処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SB1KE     BEGSR
      *
     C                     SELEC
     C           WMOD      WHEQ 'W'
     C                     MOVEL'U'       WMOD
     C           WMOD      WHEQ 'U'
     C                     MOVEL'D'       WMOD
     C           WMOD      WHEQ 'D'
     C                     MOVEL'S'       WMOD
     C           WMOD      WHEQ 'S'
     C                     MOVEL'W'       WMOD
     C                     ENDSL
      *
     C                     ENDSR
      *===============================================================*
      *          SB1CK    第一画面チェックルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 第一画面の入力フィールドすべて
      *  | PROCESS : エラーチェック
      *  |           エラーがあればWERR1 ON
      *  | OUTPUT  : 第一画面の入出力フィールドすべて
      *  |           画面の出力フィールドすべて
      *  |            WERR1 (エラーフラグ)
      *  +------------------------------------------------------+
     C           SB1CK     BEGSR
      *<<エラーフラグOFF>>
     C                     MOVEL'0'       WERR1
     C                     MOVEL'0'       WKEMSG
      *<<入力チェックを行う。>>
     C                     EXSR SB1CK1                     品番チェック
      *
     C                     ENDSR
      *===============================================================*
      *          SB1CK1   品番チェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D1PRC1
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN40
      *  +------------------------------------------------------+
     C           SB1CK1    BEGSR
      *
     C                     SETOF                     50
      *<<未入力はエラー>>
   +-C           D1PRCD    IFEQ *BLANK
   | C                     SETON                     50
   | C                     MOVEL'1'       WERR1
   |  *
   |+C           WKEMSG    IFEQ '0'
   ||C                     MOVELMSG,1     D1MSG
   |+C                     ENDIF
   |  *
   +-C                     ENDIF
      *<<品目マスターチェック>>
     C                     MOVELD1PRCD    PRPRCD           品番
     C           KEYPR     CHAINPRR01               N90
      *<<登録>>
  +--C           WMOD      IFEQ 'W'                        登録
  |+-C           *IN90     IFEQ *OFF
  ||  *<<登録の時、品目マスターに存在する場合はエラー。>>
  || C                     SETON                     50
  || C                     MOVEL'1'       WERR1
  ||  *
  ||+C           WKEMSG    IFEQ '0'
  |||C                     MOVELMSG,2     D1MSG
  ||+C                     ENDIF
  ||  *
  |+-C                     ENDIF
  |   *<<変更・削除・表示>>
  |  C                     ELSE                            変更・削除・表示
  |+-C           *IN90     IFEQ *ON
  ||  *<<登録以外の時、品目マスターに存在しない場合はエラー。>>
  || C                     SETON                     50
  || C                     MOVEL'1'       WERR1
  ||  *
  ||+C           WKEMSG    IFEQ '0'
  |||C                     MOVELMSG,3     D1MSG
  ||+C                     ENDIF
  ||  *
  |+-C                     ENDIF
  +--C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SB2000   第二画面ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第二画面処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SB2000    BEGSR
      *
      *<<第二画面初期設定ルーチン>>
     C                     EXSR SB2IZ
      *<<入力制御>>
    +C           WMOD      IFEQ 'W'
    |C           WMOD      OREQ 'U'
    |C                     SETOF                     30
    |C                     ELSE
    |C                     SETON                     30
    +C                     ENDIF
      *<<第二画面出力>>
     C                     EXFMTFMT20
      *<< MESSEGE CLEAR >>
    +C           *INKC     IFEQ '0'
    |C           *INKL     ANDEQ'0'
    |C                     MOVEL*BLANK    D2MSG
    +C                     ENDIF
 +---C                     SELEC
 |    *<< CMD3終了処理>>
 |   C           *INKC     WHEQ '1'
 |   C                     MOVEL'9'       WDSP
 |    *<< CMD12前画面>>
 |   C           *INKL     WHEQ '1'
 |   C                     MOVEL'1'       WDSP
 |    *<<実行キー(CMD3,12以外)処理>>
 |   C                     OTHER
 |  +C           WMOD      IFEQ 'S'                        照会モード
 |  |C                     MOVEL'0'       WFRST            1回目フラグ
 |  |C                     MOVEL'0'       WDLT             全件削除フラグ
 |  |C                     MOVEL'0'       WCLR2             クリアフラグ
 |  |C                     ELSE
 |  | *<<第一画面チェックルーチン>>
 |  |C                     EXSR SB2CK
 |  +C                     ENDIF
 |    *<<エラーなし;第二画面処理>>
 |+--C           WERR2     IFEQ '1'
 ||  C           *IN70     OREQ *ON                         MDT標識
 ||  C           WFRST     OREQ '1'                        一回目フラグ
 ||   *<<エラーなし,MDT ONのときメッセージ出力>>
 ||+-C           WERR2     IFEQ '0'                        代表エラーフラグ
 |||+C                     SELEC
 ||||C           WMOD      WHEQ 'W'
 ||||C                     MOVELMSG,8     D2MSG
 ||||C           WMOD      WHEQ 'U'
 ||||C                     MOVELMSG,9     D2MSG
 ||||C           WMOD      WHEQ 'D'
 ||||C                     MOVELMSG,10    D2MSG
 ||||C                     OTHER
 ||||C                     MOVEL*BLANK    D2MSG
 |||+C                     ENDSL
 ||+-C                     ENDIF
 ||   *
 ||  C                     MOVEL'0'       WFRST            1回目フラグ
 ||  C                     MOVEL'0'       WDLT             全件削除フラグ
 ||  C                     MOVEL'0'       WCLR2             クリアフラグ
 ||   *<<エラーなし;更新&第四画面処理>>
 ||  C                     ELSE
 ||  C                     MOVEL'1'       WFRST            1回目フラグ
 ||  C                     MOVEL'0'       WLOOP            ループせずに
 ||  C                     MOVEL'1'       WDSP             画面処理
 ||  C                     MOVEL'1'       WUPD             更新処理へ
 |+--C                     ENDIF
 |    *
 +---C                     ENDSL
      *
     C                     ENDSR
      *==============================================================*
      *          SB2IZ    第二画面初期化ルーチン
      *==============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROSESS : 第二画面の初期設定
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SB2IZ     BEGSR
      *
     C                     TIME           WKDATE
     C                     Z-ADDWKDAT6    D2DAT6           日付
     C                     Z-ADDWKTIME    D2TIME           時刻
      *
     C                     MOVELWKPGM     D2PGID            プログラムID
     C                     MOVELD1MOD     D2MOD            処理モード
     C                     MOVELCMD,2     D2CMD             CMD KEY情報
      *
    +C           WCLR2     IFEQ '1'
    | *<<明細画面項目セット>>
    |C                     EXSR SB2SET                     フィールドセット
    +C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SB2SET   明細画面セットルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :  CDMPR
      *  | PROSESS : 明細画面のフィールドセットを行う。
      *  | OUTPUT  :  FMT20,FMT30
      *  +------------------------------------------------------+
     C           SB2SET    BEGSR
      *<<登録>>
   +-C           WMOD      IFEQ 'W'                        登録
   | C                     MOVELD1PRCD    D2PRCD           品番
   | C                     MOVEL*BLANK    D2PRRK           品名
   | C                     MOVEL*BLANK    D2SRCD           仕入先コード
   | C                     MOVEL*BLANK    D2ZMBN           図面番号
   | C                     MOVEL*BLANK    D2PRTP           品目タイプ
   | C                     Z-ADD*ZERO     D2TEIK           定価
   | C                     Z-ADD*ZERO     D2GENK           原価
   | C                     Z-ADD*ZERO     D2GSUR           当月売上数量
   | C                     Z-ADD*ZERO     D2NSUR           当年売上数量
   | C                     Z-ADD*ZERO     D2HCDT           発注日
   | C                     ELSE
   |  *<<変更・削除・表示>>
   | C                     MOVELD1PRCD    PRPRCD           品番
   | C           KEYPR     CHAINPRR01               N90
   |  *<<品目マスターよりセット>>
   |+C           *IN90     IFEQ *OFF
   ||C                     MOVELD1PRCD    D2PRCD           品番
   ||C                     MOVELPRPRRK    D2PRRK           品名
   ||C                     MOVELPRSRCD    D2SRCD           仕入先コード
   ||C                     MOVELPRZMBN    D2ZMBN           図面番号
   ||C                     MOVELPRPRTP    D2PRTP           品目タイプ
   ||C                     Z-ADDPRTEIK    D2TEIK           定価
   ||C                     Z-ADDPRGENK    D2GENK           原価
   ||C                     Z-ADDPRNSUR    D2GSUR           当月売上数量
   ||C                     Z-ADDPRNSUR    D2NSUR           当年売上数量
   ||C                     Z-ADDPRHCDT    D2HCDT           発注日
   |+C                     ENDIF
   |  *
   +-C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SB2CK    第二画面チェックルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 第二画面の入力フィールドすべて
      *  | PROCESS : エラーチェック
      *  |           エラーがあればWERR2 ON
      *  | OUTPUT  : 第二画面の入出力フィールドすべて
      *  |           第二画面の出力フィールドすべて
      *  |            WERR2 (エラーフラグ)
      *  |            *IN70 (MDTフラグ)
      *  +------------------------------------------------------+
     C           SB2CK     BEGSR
      *<<エラーフラグOFF>>
     C                     MOVEL'0'       WERR2
     C                     MOVEL'0'       WKEMSG
      *<<入力チェックを行う。>>
     C                     EXSR SB2CK1                     品名
     C                     EXSR SB2CK2                     品目タイプ
     C                     EXSR SB2CK3                     発注日
      *
     C                     ENDSR
      *===============================================================*
      *          SB2CK1   品名チェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D2PRRK
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN42
      *  +------------------------------------------------------+
     C           SB2CK1    BEGSR
      *
     C                     SETOF                     51
      *<<未入力はエラー>>
   +-C           D2PRRK    IFEQ *BLANK
   | C                     SETON                     51
   | C                     MOVEL'1'       WERR2
   |  *
   |+C           WKEMSG    IFEQ '0'
   ||C                     MOVELMSG,4     D2MSG
   ||C                     MOVEL'1'       WKEMSG
   |+C                     ENDIF
   |  *
   +-C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SB2CK2   品目タイプチェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D2HCDT
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN51
      *  +------------------------------------------------------+
     C           SB2CK2    BEGSR
      *
     C                     SETOF                     52
      *<<未入力はエラー>>
   +-C           D2PRTP    IFEQ *BLANK
   | C                     SETON                     52
   | C                     MOVEL'1'       WERR2
   |  *
   |+C           WKEMSG    IFEQ '0'
   ||C                     MOVELMSG,5     D2MSG
   ||C                     MOVEL'1'       WKEMSG
   |+C                     ENDIF
   |  *
   +-C                     ENDIF
      *<<1,2以外はエラー>>
   +-C           D2PRTP    IFNE '1'
   | C           D2PRTP    ANDNE'2'
   | C                     SETON                     52
   | C                     MOVEL'1'       WERR2
   |+ *
   ||C           WKEMSG    IFEQ '0'
   ||C                     MOVELMSG,6     D2MSG
   ||C                     MOVEL'1'       WKEMSG
   |+C                     ENDIF
   |  *
   +-C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SB2CK3   発注日チェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D2PRTP
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN52
      *  +------------------------------------------------------+
     C           SB2CK3    BEGSR
      *
     C                     SETOF                     53
      *<<未入力はシステム日付をセット>>
    +C           D2HCDT    IFEQ *ZERO
    |C                     TIME           WKDATE
    |C                     Z-ADDWKDAT8    D2HCDT
    +C                     ENDIF
      *<<存在しない日付はエラー>>
     C                     Z-ADDD2HCDT    WKHCDT
      *
+----C                     SELEC
|     *<<13月以降はエラー>>
|    C           WKHCMT    WHGT 12
|    C                     SETON                     53
|    C                     MOVEL'1'       WERR2
|     *
|   +C           WKEMSG    IFEQ '0'
|   |C                     MOVELMSG,7     D2MSG
|   |C                     MOVEL'1'       WKEMSG
|   +C                     ENDIF
|     *<<31日までの月>>
|    C           WKHCMT    WHEQ 1
|    C           WKHCMT    OREQ 3
|    C           WKHCMT    OREQ 5
|    C           WKHCMT    OREQ 7
|    C           WKHCMT    OREQ 8
|    C           WKHCMT    OREQ 10
|    C           WKHCMT    OREQ 12
|     *<<31日より大きい場合はエラー>>
|  +-C           WKHCDY    IFGT 31
|  | C                     SETON                     53
|  | C                     MOVEL'1'       WERR2
|  |  *
|  |+C           WKEMSG    IFEQ '0'
|  ||C                     MOVELMSG,7     D2MSG
|  ||C                     MOVEL'1'       WKEMSG
|  |+C                     ENDIF
|  |  *
|  +-C                     ENDIF
|     *<<30日までの月>>
|    C           WKHCMT    WHEQ 4
|    C           WKHCMT    OREQ 6
|    C           WKHCMT    OREQ 9
|    C           WKHCMT    OREQ 11
|     *<<30日より大きい場合はエラー>>
|  +-C           WKHCDY    IFGT 30
|  | C                     SETON                     53
|  | C                     MOVEL'1'       WERR2
|  |  *
|  |+C           WKEMSG    IFEQ '0'
|  ||C                     MOVELMSG,7     D2MSG
|  ||C                     MOVEL'1'       WKEMSG
|  |+C                     ENDIF
|  |  *
|  +-C                     ENDIF
|     *<<2月>>
|    C           WKHCMT    WHEQ 2
|     *
|    C                     MOVEL'0'       WKURYR           閏年フラグ
|    C                     Z-ADD*ZERO     WKHDIV           納品日(商)
|    C                     Z-ADD*ZERO     WKHMVR           納品日(剰余)
|     *
|    C           WKHCYR    DIV  4         WKHDIV
|    C                     MVR            WKHMVR
| +--C           WKHMVR    IFEQ *ZERO                       4で割り切れる
| |  C           WKHCYR    DIV  100       WKHDIV
| |  C                     MVR            WKHMVR
| |+-C           WKHMVR    IFEQ *ZERO                       100で割り切れる
| || C           WKHCYR    DIV  400       WKHDIV
| || C                     MVR            WKHMVR
| ||+C           WKHMVR    IFEQ *ZERO                       400で割り切れる
| |||C                     MOVEL'1'       WKURYR           閏年フラグ
| ||+C                     ENDIF
| || C                     ELSE
| || C                     MOVEL'1'       WKURYR           閏年フラグ
| |+-C                     ENDIF
| +--C                     ENDIF
|     *<<閏年>>
| +--C           WKURYR    IFEQ '1'
| |   *<<29日より大きい場合はエラー>>
| |+-C           WKHCDY    IFGT 29
| || C                     SETON                     53
| || C                     MOVEL'1'       WERR2
| ||  *
| ||+C           WKEMSG    IFEQ '0'
| |||C                     MOVELMSG,7     D2MSG
| |||C                     MOVEL'1'       WKEMSG
| ||+C                     ENDIF
| ||  *
| |+-C                     ENDIF
| |  C                     ELSE
| |   *<<28日より大きい場合はエラー>>
| |+-C           WKHCDY    IFGT 28
| || C                     SETON                     53
| || C                     MOVEL'1'       WERR2
| ||  *
| ||+C           WKEMSG    IFEQ '0'
| |||C                     MOVELMSG,7     D2MSG
| |||C                     MOVEL'1'       WKEMSG
| ||+C                     ENDIF
| ||  *
| |+-C                     ENDIF
| +--C                     ENDIF
+----C                     ENDSL
      *
     C                     ENDSR
      *===============================================================*
      *          SBUPD    登録ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 登録処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SBUPD     BEGSR
      *
     C                     MOVEL'0'       WERR9            ファイル更新エラー
      *
    +C                     SELEC
    |C           WMOD      WHEQ 'W'
    |C                     EXSR SBWRT
    |C           WMOD      WHEQ 'U'
    |C                     EXSR SBUPT
    |C           WMOD      WHEQ 'D'
    |C                     EXSR SBDLT
    +C                     ENDSL
      *
     C                     MOVEL*BLANK    D1PRCD           品番
     C                     MOVEL'0'       WUPD             更新処理のトリガー
     C                     MOVEL'0'       WCLR1            第一画面クリアー
      *
     C                     ENDSR
      *===============================================================*
      *          SBWRT    登録ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 登録処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SBWRT     BEGSR
      *
     C                     MOVELD2PRCD    PRPRCD           品番
     C                     MOVELD2PRCD    PRPRCD           品番
     C                     MOVELD2PRRK    PRPRRK           品名
     C                     MOVELD2SRCD    PRSRCD           仕入先コード
     C                     MOVELD2ZMBN    PRZMBN           図面番号
     C                     MOVELD2PRTP    PRPRTP           品目タイプ
     C                     Z-ADDD2TEIK    PRTEIK           定価
     C                     Z-ADDD2GENK    PRGENK           原価
     C                     Z-ADDD2GSUR    PRNSUR           当月売上数量
     C                     Z-ADDD2NSUR    PRNSUR           当年売上数量
     C                     Z-ADDD2HCDT    PRHCDT           発注日
      *<<計算項目セット>>
     C           D2GENK    MULT D2GSUR    PRGGNK           当月売上原価
     C           D2GENK    MULT D2NSUR    PRNGNK           当年売上原価
     C           D2TEIK    MULT D2GSUR    PRGKIN           当月売上金額
     C           D2TEIK    MULT D2NSUR    PRNKIN           当年売上金額
      *<<納品日(発注日+ 10日)>>
     C                     Z-ADDD2HCDT    WKHCDT           発注日
     C           WKHCDT    ADD  10        WKNHDT           納品日
      *
 +---C                     SELEC
 |    *<<31日までの月>>
 |   C           WKNHMT    WHEQ 1
 |   C           WKNHMT    OREQ 3
 |   C           WKNHMT    OREQ 5
 |   C           WKNHMT    OREQ 7
 |   C           WKNHMT    OREQ 8
 |   C           WKNHMT    OREQ 10
 |   C           WKNHMT    OREQ 12
 |    *<<31日より大きい場合は月加算>>
 | +-C           WKNHDY    IFGT 31
 | | C                     ADD  1         WKNHMT           月加算
 | |  *<<12月のみ年加算>>
 | |+C           WKNHMT    IFEQ 12
 | ||C                     ADD  1         WKNHYR           年加算
 | |+C                     ENDIF
 | |  *<<日付変換>>
 | |+C                     SELEC
 | ||C           WKNHDY    WHEQ 32
 | ||C                     Z-ADD1         WKNHDY            32日⇒1
 | ||C           WKNHDY    WHEQ 33
 | ||C                     Z-ADD2         WKNHDY            33日⇒2
 | ||C           WKNHDY    WHEQ 34
 | ||C                     Z-ADD3         WKNHDY            34日⇒3
 | ||C           WKNHDY    WHEQ 35
 | ||C                     Z-ADD4         WKNHDY            35日⇒4
 | ||C           WKNHDY    WHEQ 36
 | ||C                     Z-ADD5         WKNHDY            36日⇒5
 | ||C           WKNHDY    WHEQ 37
 | ||C                     Z-ADD6         WKNHDY            37日⇒6
 | ||C           WKNHDY    WHEQ 38
 | ||C                     Z-ADD7         WKNHDY            38日⇒7
 | ||C           WKNHDY    WHEQ 39
 | ||C                     Z-ADD8         WKNHDY            39日⇒8
 | ||C           WKNHDY    WHEQ 40
 | ||C                     Z-ADD9         WKNHDY            40日⇒9
 | ||C           WKNHDY    WHEQ 41
 | ||C                     Z-ADD10        WKNHDY            41日⇒10
 | |+C                     ENDSL
 | +-C                     ENDIF
 |    *<<30日までの月>>
 |   C           WKNHMT    WHEQ 4
 |   C           WKNHMT    OREQ 6
 |   C           WKNHMT    OREQ 9
 |   C           WKNHMT    OREQ 11
 |    *<<30日より大きい場合は月加算>>
 | +-C           WKNHDY    IFGT 30
 | | C                     ADD  1         WKNHMT           月加算
 | |  *<<日付変換>>
 | |+C                     SELEC
 | ||C           WKNHDY    WHEQ 31
 | ||C                     Z-ADD1         WKNHDY            31日⇒1
 | ||C           WKNHDY    WHEQ 32
 | ||C                     Z-ADD2         WKNHDY            32日⇒2
 | ||C           WKNHDY    WHEQ 33
 | ||C                     Z-ADD3         WKNHDY            33日⇒3
 | ||C           WKNHDY    WHEQ 34
 | ||C                     Z-ADD4         WKNHDY            34日⇒4
 | ||C           WKNHDY    WHEQ 35
 | ||C                     Z-ADD5         WKNHDY            35日⇒5
 | ||C           WKNHDY    WHEQ 36
 | ||C                     Z-ADD6         WKNHDY            36日⇒6
 | ||C           WKNHDY    WHEQ 37
 | ||C                     Z-ADD7         WKNHDY            37日⇒7
 | ||C           WKNHDY    WHEQ 38
 | ||C                     Z-ADD8         WKNHDY            38日⇒8
 | ||C           WKNHDY    WHEQ 39
 | ||C                     Z-ADD9         WKNHDY            39日⇒9
 | ||C           WKNHDY    WHEQ 40
 | ||C                     Z-ADD10        WKNHDY            40日⇒10
 | |+C                     ENDSL
 | +-C                     ENDIF
 |    *<<2月>>
 |   C           WKNHMT    WHEQ 2
 |    *
 |   C                     MOVEL'0'       WKURYR           閏年フラグ
 |   C                     Z-ADD*ZERO     WKNDIV           納品日(商)
 |   C                     Z-ADD*ZERO     WKNMVR           納品日(剰余)
 |    *
 |   C           WKNHYR    DIV  4         WKNDIV
 |   C                     MVR            WKNMVR
 |+--C           WKNMVR    IFEQ *ZERO                       4で割り切れる
 ||  C           WKNHYR    DIV  100       WKNDIV
 ||  C                     MVR            WKNMVR
 ||+-C           WKNMVR    IFEQ *ZERO                       100で割り切れる
 ||| C           WKNHYR    DIV  400       WKNDIV
 ||| C                     MVR            WKNMVR
 |||+C           WKNMVR    IFEQ *ZERO                       400で割り切れる
 ||||C                     MOVEL'1'       WKURYR           閏年フラグ
 |||+C                     ENDIF
 ||| C                     ELSE
 ||| C                     MOVEL'1'       WKURYR           閏年フラグ
 ||+-C                     ENDIF
 |+--C                     ENDIF
 |    *<<閏年>>
 |+--C           WKURYR    IFEQ '1'
 ||   *<<29日より大きい場合は月加算>>
 ||+-C           WKNHDY    IFGT 29
 ||| C                     ADD  1         WKNHMT           月加算
 |||  *<<日付変換>>
 |||+C                     SELEC
 ||||C           WKNHDY    WHEQ 30
 ||||C                     Z-ADD1         WKNHDY            30日⇒1
 ||||C           WKNHDY    WHEQ 31
 ||||C                     Z-ADD2         WKNHDY            31日⇒2
 ||||C           WKNHDY    WHEQ 32
 ||||C                     Z-ADD3         WKNHDY            32日⇒3
 ||||C           WKNHDY    WHEQ 33
 ||||C                     Z-ADD4         WKNHDY            33日⇒4
 ||||C           WKNHDY    WHEQ 34
 ||||C                     Z-ADD5         WKNHDY            34日⇒5
 ||||C           WKNHDY    WHEQ 35
 ||||C                     Z-ADD6         WKNHDY            35日⇒6
 ||||C           WKNHDY    WHEQ 36
 ||||C                     Z-ADD7         WKNHDY            36日⇒7
 ||||C           WKNHDY    WHEQ 37
 ||||C                     Z-ADD8         WKNHDY            37日⇒8
 ||||C           WKNHDY    WHEQ 38
 ||||C                     Z-ADD9         WKNHDY            38日⇒9
 ||||C           WKNHDY    WHEQ 39
 ||||C                     Z-ADD10        WKNHDY            39日⇒10
 |||+C                     ENDSL
 ||+-C                     ENDIF
 ||  C                     ELSE
 ||   *<<28日より大きい場合は月加算>>
 ||+-C           WKNHDY    IFGT 28
 ||| C                     ADD  1         WKNHMT           月加算
 |||  *<<日付変換>>
 |||+C                     SELEC
 ||||C           WKNHDY    WHEQ 29
 ||||C                     Z-ADD1         WKNHDY            29日⇒1
 ||||C           WKNHDY    WHEQ 30
 ||||C                     Z-ADD2         WKNHDY            30日⇒2
 ||||C           WKNHDY    WHEQ 31
 ||||C                     Z-ADD3         WKNHDY            31日⇒3
 ||||C           WKNHDY    WHEQ 32
 ||||C                     Z-ADD4         WKNHDY            32日⇒4
 ||||C           WKNHDY    WHEQ 33
 ||||C                     Z-ADD5         WKNHDY            33日⇒5
 ||||C           WKNHDY    WHEQ 34
 ||||C                     Z-ADD6         WKNHDY            34日⇒6
 ||||C           WKNHDY    WHEQ 35
 ||||C                     Z-ADD7         WKNHDY            35日⇒7
 ||||C           WKNHDY    WHEQ 36
 ||||C                     Z-ADD8         WKNHDY            36日⇒8
 ||||C           WKNHDY    WHEQ 37
 ||||C                     Z-ADD9         WKNHDY            37日⇒9
 ||||C           WKNHDY    WHEQ 38
 ||||C                     Z-ADD10        WKNHDY            38日⇒10
 |||+C                     ENDSL
 ||+-C                     ENDIF
 |+--C                     ENDIF
 +---C                     ENDSL
     C                     Z-ADDWKNHDT    PRNHDT           納品日
      *<<作成・更新日時>>
     C                     TIME           WKDATE
     C                     Z-ADDWKDAT8    PRCRDT           作成日
     C                     Z-ADDWKDAT8    PRUPDT           最終更新日
     C                     Z-ADDWKTIME    PRCRTM           作成時刻
     C                     Z-ADDWKTIME    PRUPTM           最終更新時刻
      *<<登録処理>>
     C                     WRITEPRR01
      *<<完了メッセージ>>
     C                     MOVELMSG,11    D1MSG
      *
     C                     ENDSR
      *===============================================================*
      *          SBUPT    更新ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 更新処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SBUPT     BEGSR
      *
     C                     MOVELD1PRCD    PRPRCD           品番
      *
     C           KEYPR     CHAINPRR01                90
      *
+----C           *IN90     IFEQ *OFF
|     *<<項目初期化>>
|    C                     MOVEL*BLANK    PRPRCD           品番
|    C                     MOVEL*BLANK    PRPRRK           品名
|    C                     MOVEL*BLANK    PRSRCD           仕入先コード
|    C                     MOVEL*BLANK    PRZMBN           図面番号
|    C                     MOVEL*BLANK    PRPRTP           品目タイプ
|    C                     Z-ADD*ZERO     PRTEIK           定価
|    C                     Z-ADD*ZERO     PRGENK           原価
|    C                     Z-ADD*ZERO     PRNSUR           当月売上数量
|    C                     Z-ADD*ZERO     PRNSUR           当年売上数量
|    C                     Z-ADD*ZERO     PRHCDT           発注日
|    C                     Z-ADD*ZERO     PRGGNK           当月売上原価
|    C                     Z-ADD*ZERO     PRNGNK           当年売上原価
|    C                     Z-ADD*ZERO     PRGKIN           当月売上金額
|    C                     Z-ADD*ZERO     PRNKIN           当年売上金額
|     *<<項目セット>>
|    C                     MOVELD2PRCD    PRPRCD           品番
|    C                     MOVELD2PRRK    PRPRRK           品名
|    C                     MOVELD2SRCD    PRSRCD           仕入先コード
|    C                     MOVELD2ZMBN    PRZMBN           図面番号
|    C                     MOVELD2PRTP    PRPRTP           品目タイプ
|    C                     Z-ADDD2TEIK    PRTEIK           定価
|    C                     Z-ADDD2GENK    PRGENK           原価
|    C                     Z-ADDD2GSUR    PRNSUR           当月売上数量
|    C                     Z-ADDD2NSUR    PRNSUR           当年売上数量
|    C                     Z-ADDD2HCDT    PRHCDT           発注日
|    C           D2GENK    MULT D2GSUR    PRGGNK           当月売上原価
|    C           D2GENK    MULT D2NSUR    PRNGNK           当年売上原価
|    C           D2TEIK    MULT D2GSUR    PRGKIN           当月売上金額
|    C           D2TEIK    MULT D2NSUR    PRNKIN           当年売上金額
|     *<<納品日(発注日+ 10日)>>
|    C                     Z-ADDD2HCDT    WKHCDT           発注日
|    C           WKHCDT    ADD  10        WKNHDT           納品日
|     *
|+---C                     SELEC
||    *<<31日までの月>>
||   C           WKNHMT    WHEQ 1
||   C           WKNHMT    OREQ 3
||   C           WKNHMT    OREQ 5
||   C           WKNHMT    OREQ 7
||   C           WKNHMT    OREQ 8
||   C           WKNHMT    OREQ 10
||   C           WKNHMT    OREQ 12
||    *<<31日より大きい場合は月加算>>
|| +-C           WKNHDY    IFGT 31
|| | C                     ADD  1         WKNHMT           月加算
|| |  *<<12月のみ年加算>>
|| |+C           WKNHMT    IFEQ 12
|| ||C                     ADD  1         WKNHYR           年加算
|| |+C                     ENDIF
|| |  *<<日付変換>>
|| |+C                     SELEC
|| ||C           WKNHDY    WHEQ 32
|| ||C                     Z-ADD1         WKNHDY            32日⇒1
|| ||C           WKNHDY    WHEQ 33
|| ||C                     Z-ADD2         WKNHDY            33日⇒2
|| ||C           WKNHDY    WHEQ 34
|| ||C                     Z-ADD3         WKNHDY            34日⇒3
|| ||C           WKNHDY    WHEQ 35
|| ||C                     Z-ADD4         WKNHDY            35日⇒4
|| ||C           WKNHDY    WHEQ 36
|| ||C                     Z-ADD5         WKNHDY            36日⇒5
|| ||C           WKNHDY    WHEQ 37
|| ||C                     Z-ADD6         WKNHDY            37日⇒6
|| ||C           WKNHDY    WHEQ 38
|| ||C                     Z-ADD7         WKNHDY            38日⇒7
|| ||C           WKNHDY    WHEQ 39
|| ||C                     Z-ADD8         WKNHDY            39日⇒8
|| ||C           WKNHDY    WHEQ 40
|| ||C                     Z-ADD9         WKNHDY            40日⇒9
|| ||C           WKNHDY    WHEQ 41
|| ||C                     Z-ADD10        WKNHDY            41日⇒10
|| |+C                     ENDSL
|| +-C                     ENDIF
||    *<<30日までの月>>
||   C           WKNHMT    WHEQ 4
||   C           WKNHMT    OREQ 6
||   C           WKNHMT    OREQ 9
||   C           WKNHMT    OREQ 11
||    *<<30日より大きい場合は月加算>>
|| +-C           WKNHDY    IFGT 30
|| | C                     ADD  1         WKNHMT           月加算
|| |  *<<日付変換>>
|| |+C                     SELEC
|| ||C           WKNHDY    WHEQ 31
|| ||C                     Z-ADD1         WKNHDY            31日⇒1
|| ||C           WKNHDY    WHEQ 32
|| ||C                     Z-ADD2         WKNHDY            32日⇒2
|| ||C           WKNHDY    WHEQ 33
|| ||C                     Z-ADD3         WKNHDY            33日⇒3
|| ||C           WKNHDY    WHEQ 34
|| ||C                     Z-ADD4         WKNHDY            34日⇒4
|| ||C           WKNHDY    WHEQ 35
|| ||C                     Z-ADD5         WKNHDY            35日⇒5
|| ||C           WKNHDY    WHEQ 36
|| ||C                     Z-ADD6         WKNHDY            36日⇒6
|| ||C           WKNHDY    WHEQ 37
|| ||C                     Z-ADD7         WKNHDY            37日⇒7
|| ||C           WKNHDY    WHEQ 38
|| ||C                     Z-ADD8         WKNHDY            38日⇒8
|| ||C           WKNHDY    WHEQ 39
|| ||C                     Z-ADD9         WKNHDY            39日⇒9
|| ||C           WKNHDY    WHEQ 40
|| ||C                     Z-ADD10        WKNHDY            40日⇒10
|| |+C                     ENDSL
|| +-C                     ENDIF
||    *<<2月>>
||   C           WKNHMT    WHEQ 2
||    *
||   C                     MOVEL'0'       WKURYR           閏年フラグ
||   C                     Z-ADD*ZERO     WKNDIV           納品日(商)
||   C                     Z-ADD*ZERO     WKNMVR           納品日(剰余)
||    *
||   C           WKNHYR    DIV  4         WKNDIV
||   C                     MVR            WKNMVR
||+--C           WKNMVR    IFEQ *ZERO                       4で割り切れる
|||  C           WKNHYR    DIV  100       WKNDIV
|||  C                     MVR            WKNMVR
|||+-C           WKNMVR    IFEQ *ZERO                       100で割り切れる
|||| C           WKNHYR    DIV  400       WKNDIV
|||| C                     MVR            WKNMVR
||||+C           WKNMVR    IFEQ *ZERO                       400で割り切れる
|||||C                     MOVEL'1'       WKURYR           閏年フラグ
||||+C                     ENDIF
|||| C                     ELSE
|||| C                     MOVEL'1'       WKURYR           閏年フラグ
|||+-C                     ENDIF
||+--C                     ENDIF
||    *<<閏年>>
||+--C           WKURYR    IFEQ '1'
|||   *<<29日より大きい場合は月加算>>
|||+-C           WKNHDY    IFGT 29
|||| C                     ADD  1         WKNHMT           月加算
||||  *<<日付変換>>
||||+C                     SELEC
|||||C           WKNHDY    WHEQ 30
|||||C                     Z-ADD1         WKNHDY            30日⇒1
|||||C           WKNHDY    WHEQ 31
|||||C                     Z-ADD2         WKNHDY            31日⇒2
|||||C           WKNHDY    WHEQ 32
|||||C                     Z-ADD3         WKNHDY            32日⇒3
|||||C           WKNHDY    WHEQ 33
|||||C                     Z-ADD4         WKNHDY            33日⇒4
|||||C           WKNHDY    WHEQ 34
|||||C                     Z-ADD5         WKNHDY            34日⇒5
|||||C           WKNHDY    WHEQ 35
|||||C                     Z-ADD6         WKNHDY            35日⇒6
|||||C           WKNHDY    WHEQ 36
|||||C                     Z-ADD7         WKNHDY            36日⇒7
|||||C           WKNHDY    WHEQ 37
|||||C                     Z-ADD8         WKNHDY            37日⇒8
|||||C           WKNHDY    WHEQ 38
|||||C                     Z-ADD9         WKNHDY            38日⇒9
|||||C           WKNHDY    WHEQ 39
|||||C                     Z-ADD10        WKNHDY            39日⇒10
||||+C                     ENDSL
|||+-C                     ENDIF
|||  C                     ELSE
|||   *<<28日より大きい場合は月加算>>
|||+-C           WKNHDY    IFGT 28
|||| C                     ADD  1         WKNHMT           月加算
||||  *<<日付変換>>
||||+C                     SELEC
|||||C           WKNHDY    WHEQ 29
|||||C                     Z-ADD1         WKNHDY            29日⇒1
|||||C           WKNHDY    WHEQ 30
|||||C                     Z-ADD2         WKNHDY            30日⇒2
|||||C           WKNHDY    WHEQ 31
|||||C                     Z-ADD3         WKNHDY            31日⇒3
|||||C           WKNHDY    WHEQ 32
|||||C                     Z-ADD4         WKNHDY            32日⇒4
|||||C           WKNHDY    WHEQ 33
|||||C                     Z-ADD5         WKNHDY            33日⇒5
|||||C           WKNHDY    WHEQ 34
|||||C                     Z-ADD6         WKNHDY            34日⇒6
|||||C           WKNHDY    WHEQ 35
|||||C                     Z-ADD7         WKNHDY            35日⇒7
|||||C           WKNHDY    WHEQ 36
|||||C                     Z-ADD8         WKNHDY            36日⇒8
|||||C           WKNHDY    WHEQ 37
|||||C                     Z-ADD9         WKNHDY            37日⇒9
|||||C           WKNHDY    WHEQ 38
|||||C                     Z-ADD10        WKNHDY            38日⇒10
||||+C                     ENDSL
|||+-C                     ENDIF
||+--C                     ENDIF
|+---C                     ENDSL
|    C                     Z-ADDWKNHDT    PRNHDT           納品日
|     *<<更新日時>>
|    C                     TIME           WKDATE
|    C                     Z-ADDWKDAT8    PRUPDT           最終更新日
|    C                     Z-ADDWKTIME    PRUPTM           最終更新時刻
|     *<<更新処理>>
|    C                     UPDATPRR01
|     *<<完了メッセージ>>
|    C                     MOVELMSG,12    D1MSG
|     *
+----C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SBDLT    削除ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 削除処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SBDLT     BEGSR
      *
     C                     MOVELD1PRCD    PRPRCD           品番
      *
     C           KEYPR     CHAINPRR01                90
      *
    +C           *IN90     IFEQ *OFF
    | *<<削除処理>>
    |C                     DELETPRR01
    | *<<完了メッセージ>>
    |C                     MOVELMSG,13    D1MSG
    | *
    +C                     ENDIF
      *
     C                     ENDSR
      *===============================================================*
      *          SBEND    終了ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : プログラムの終了を行う。
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C           SBEND     BEGSR
      *
     C                     SETON                     LR
     C                     RETRN
      *
     C                     ENDSR
      *===============================================================*
      *                   テーブル
      *===============================================================*
**    *  FOTTER
 F3=終了F5=モード切替
 F3=終了F12=前画面
**    *  MOD <<更新モード>>
登録
変更
削除
照会
**
品番に値が入力されていません。
入力された品番は品目マスターに既に存在します。
入力された品番は品目マスターに存在しません。
品名に値が入力されていません。
品目タイプに値が入力されていません。
品目タイプは指定可能な値ではありません。
発注日は指定可能な値ではありません。
実行キーで登録されます。
実行キーで更新されます。
実行キーで削除されます。
品目マスターへの登録が完了しました。
品目マスターの更新が完了しました。
品目マスターから削除が完了しました。
**    *  COPYRIGHT IBM
5754-AEP COPYRIGHT IBM CORP. 1995 LICENSED MATERIAL-PROGRAM PROPERTY OF IBM

rpg3画面ソース

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      *           COPYRIGHT IBM CORP.                                  *
      *                                                                *
      *                                                                *
      *                                                                *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
      *  DSP FILE ID.  :  RPG100D                                      *
      *  DSP FILE記述: 品目マスター保守                            *
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A                                      REF(*LIBL/PCRRM)
     A                                      CHGINPDFT
     A                                      IGCCNV(CF18 24)
     A                                      PRINT
      *===============================================================*
      *           FMT10    FMT10 第1画面
      *===============================================================*
     A          R FMT10
      *
     A                                      OVERLAY
     A                                      BLINK
     A                                      CHANGE(70 'MDT フラグ')
     A                                      CA03
     A                                      CF05
     A                                      KEEP
      *
     A            D1PGID        10A     1  3TEXT('プログラムID')
     A                                  1 20'** 品目マスター保守 **'
     A                                      DSPATR(RI HI)
     A            D1MOD          6A     1 56TEXT('モード')
     A                                      DSPATR(RI HI)
     A            D1DAT6         6Y 0O  1 71TEXT('日付')
     A                                      EDTWRD('0 /  /  ')
     A            D1TIME         6Y 0O  2 71TEXT('時刻')
     A                                      EDTWRD('  :  :  ')
      *
     A                                  4  6'品 番'
     A            D1PRCD        20A  B  4 21TEXT('品番')
     A                                      DSPATR(CS UL)
     A  50                                  DSPATR(RI PC)
      *
     A            D1CMD         78O  O 23  1TEXT('コマンド')
     A                                      COLOR(BLU)
     A            D1MSG         78O  O 24  1TEXT('メッセージ')
     A                                      COLOR(WHT)
      *===============================================================*
      *           FMT20    FMT20 第2画面
      *===============================================================*
     A          R FMT20
      *
     A                                      OVERLAY
     A                                      BLINK
     A                                      CHANGE(70 'MDT フラグ')
     A                                      CA03
     A                                      CF12
     A                                      KEEP
      *
     A            D2PGID        10A     1  3TEXT('プログラムID')
     A                                  1 20'** 品目マスター保守 **'
     A                                      DSPATR(RI HI)
     A            D2MOD          6A     1 56TEXT('モード')
     A                                      DSPATR(RI HI)
     A            D2DAT6         6Y 0O  1 71TEXT('日付')
     A                                      EDTWRD('0 /  /  ')
     A            D2TIME         6Y 0O  2 71TEXT('時刻')
     A                                      EDTWRD('  :  :  ')
      *
     A                                  4  6'品 番'
     A            D2PRCD        20A  B  4 21TEXT('品番')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                  7  6'品 名'
     A            D2PRRK        22O  B  7 21TEXT('品名')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  51                                  DSPATR(RI PC)
      *
     A                                  9  6'仕入先コード'
     A            D2SRCD         5A  B  9 21TEXT('仕入先コード')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                 11  6'図面番号'
     A            D2ZMBN        20O  B 11 21TEXT('図面番号')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                 13  6'品目タイプ'
     A            D2PRTP         1A  B 13 21TEXT('品目タイプ')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  52                                  DSPATR(RI PC)
      *
     A                                 15  6'定 価'
     A            D2TEIK        11Y 0B 15 21TEXT('定価')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 15 40'原 価'
     A            D2GENK        11Y 0B 15 55TEXT('原価')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 17  6'当月売上数量'
     A            D2GSUR        11Y 0B 17 21TEXT('当月売上数量')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 17 40'当年売上数量'
     A            D2NSUR        11Y 0B 17 55TEXT('当年売上数量')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 19  6'発注日'
     A            D2HCDT         8Y 0B 19 21TEXT('発注日')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  53                                  DSPATR(RI PC)
     A                                      EDTCDE(W)
      *
     A            D2CMD         78O  O 23  1TEXT('コマンド')
     A                                      COLOR(BLU)
     A            D2MSG         78O  O 24  1TEXT('メッセージ')
     A                                      COLOR(WHT)

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      *           COPYRIGHT IBM CORP.                                  *
      *                                                                *
      *                                                                *
      *                                                                *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
      *  DSP FILE ID.  :  RPG100D                                      *
      *  DSP FILE記述: 品目マスター保守                            *
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A                                      REF(*LIBL/PCRRM)
     A                                      CHGINPDFT
     A                                      IGCCNV(CF18 24)
     A                                      PRINT
      *===============================================================*
      *           FMT10    FMT10 第1画面
      *===============================================================*
     A          R FMT10
      *
     A                                      OVERLAY
     A                                      BLINK
     A                                      CHANGE(70 'MDT フラグ')
     A                                      CA03
     A                                      CF05
     A                                      KEEP
      *
     A            D1PGID        10A     1  3TEXT('プログラムID')
     A                                  1 20'** 品目マスター保守 **'
     A                                      DSPATR(RI HI)
     A            D1MOD          6A     1 56TEXT('モード')
     A                                      DSPATR(RI HI)
     A            D1DAT6         6Y 0O  1 71TEXT('日付')
     A                                      EDTWRD('0 /  /  ')
     A            D1TIME         6Y 0O  2 71TEXT('時刻')
     A                                      EDTWRD('  :  :  ')
      *
     A                                  4  6'品 番'
     A            D1PRCD        20A  B  4 21TEXT('品番')
     A                                      DSPATR(CS UL)
     A  50                                  DSPATR(RI PC)
      *
     A            D1CMD         78O  O 23  1TEXT('コマンド')
     A                                      COLOR(BLU)
     A            D1MSG         78O  O 24  1TEXT('メッセージ')
     A                                      COLOR(WHT)
      *===============================================================*
      *           FMT20    FMT20 第2画面
      *===============================================================*
     A          R FMT20
      *
     A                                      OVERLAY
     A                                      BLINK
     A                                      CHANGE(70 'MDT フラグ')
     A                                      CA03
     A                                      CF12
     A                                      KEEP
      *
     A            D2PGID        10A     1  3TEXT('プログラムID')
     A                                  1 20'** 品目マスター保守 **'
     A                                      DSPATR(RI HI)
     A            D2MOD          6A     1 56TEXT('モード')
     A                                      DSPATR(RI HI)
     A            D2DAT6         6Y 0O  1 71TEXT('日付')
     A                                      EDTWRD('0 /  /  ')
     A            D2TIME         6Y 0O  2 71TEXT('時刻')
     A                                      EDTWRD('  :  :  ')
      *
     A                                  4  6'品 番'
     A            D2PRCD        20A  B  4 21TEXT('品番')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                  7  6'品 名'
     A            D2PRRK        22O  B  7 21TEXT('品名')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  51                                  DSPATR(RI PC)
      *
     A                                  9  6'仕入先コード'
     A            D2SRCD         5A  B  9 21TEXT('仕入先コード')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                 11  6'図面番号'
     A            D2ZMBN        20O  B 11 21TEXT('図面番号')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                 13  6'品目タイプ'
     A            D2PRTP         1A  B 13 21TEXT('品目タイプ')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  52                                  DSPATR(RI PC)
      *
     A                                 15  6'定 価'
     A            D2TEIK        11Y 0B 15 21TEXT('定価')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 15 40'原 価'
     A            D2GENK        11Y 0B 15 55TEXT('原価')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 17  6'当月売上数量'
     A            D2GSUR        11Y 0B 17 21TEXT('当月売上数量')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 17 40'当年売上数量'
     A            D2NSUR        11Y 0B 17 55TEXT('当年売上数量')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 19  6'発注日'
     A            D2HCDT         8Y 0B 19 21TEXT('発注日')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  53                                  DSPATR(RI PC)
     A                                      EDTCDE(W)
      *
     A            D2CMD         78O  O 23  1TEXT('コマンド')
     A                                      COLOR(BLU)
     A            D2MSG         78O  O 24  1TEXT('メッセージ')
     A                                      COLOR(WHT)

RPGⅣ

rpg4物理ファイルソース

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      *           COPYRIGHT IBM CORP.                                  *
      *                                                                *
      *                                                                *
      *                                                                *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *--------------------------------------------------------------*
      *  物理ファイル名:CDMPR                                *
      *                :品目マスター                              *
      *--------------------------------------------------------------*
     A          R PRR01                     TEXT('品目マスター')
     A            PRPRCD        20A         COLHDG('品番')
     A            PRPRRK        22A         COLHDG('品名')
     A            PRSRCD         5A         COLHDG('仕入先コード')
     A            PRZMBN        20A         COLHDG('図面番号')
     A            PRPRTP         1A         COLHDG('品目タイプ')
     A            PRTEIK        11S 0       COLHDG('定価')
     A            PRGENK        11S 0       COLHDG('原価')
     A            PRGSUR        11S 0       COLHDG('当月売上数量')
     A            PRNSUR        11S 0       COLHDG('当年売上数量')
     A            PRGGNK        11S 0       COLHDG('当月売上原価')
     A            PRNGNK        11S 0       COLHDG('当年売上原価')
     A            PRGKIN        11S 0       COLHDG('当月売上金額')
     A            PRNKIN        11S 0       COLHDG('当年売上金額')
     A            PRHCDT          L         DATFMT(*JIS)
     A                                      COLHDG('発注日')
     A            PRNHDT          L         DATFMT(*JIS)
     A                                      COLHDG('納品日')
     A            PRCRDT          L         DATFMT(*YMD)
     A                                      COLHDG('作成日')
     A            PRUPDT          L         DATFMT(*YMD)
     A                                      COLHDG('最終更新日')
     A            PRCRTM          T         TIMFMT(*JIS)
     A                                      COLHDG('作成時刻')
     A            PRUPTM          T         TIMFMT(*JIS)
     A                                      COLHDG('最終更新時刻')
      *
     A          K PRPRCD

rpg4メイン機能ソース

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      * 5754-AEP  COPYRIGHT IBM CORP. 1995 LICENSED MATERIAL -         *
      *           PROGRAM PROPERTY OF IBM                              *
      *           REFER TO COPYRIGHT INSTRUCTIONS FORM                 *
      *                              NO. N:G120-2083                   *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
      *  PROGRAM   :  RPG100                                       *
      *  PROGRAM記述 : 品目マスター保守                            *
      *                                                                *
      * 更新日       :  2024/08/30                                   *
      *                                                                *
      *                                                                *
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
     H DATEDIT(*YMD/)
      *===============================================================*
      *                   FILE
      *===============================================================*
      *---------------------------------------------------------------*
      *  画面                   : DISPLAY FILE
      *---------------------------------------------------------------*
     FRPG100D   CF   E             WORKSTN
     F                                     INFDS(WSINF)
      *---------------------------------------------------------------*
      *  品目マスター  M/F      : INDEX  KLIST=KEYPR
      *---------------------------------------------------------------*
     FCDMPRODUCTUF A E           K DISK
      *===============================================================*
      *                   ARRAY
      *===============================================================*
     D CMD             S             78    DIM(2) CTDATA PERRCD(1)               CMD KEY情報
     D MOD             S              6    DIM(4) CTDATA PERRCD(1)              モード
     D MSG             S             78    DIM(15) CTDATA PERRCD(1)             メッセージ
     D COIBM           S             76    DIM(1) CTDATA PERRCD(1)               COPYRIGHT IBM
      *===============================================================*
      *                   DS
      *===============================================================*
      *  +--------------------------------------------------+
      *  |   コントロールフラグの、処理
      *  |        WDSP      画面処理のトリガー
      *  |        WUPD      更新処理のトリガー
      *  |        WLOOP     同一画面処理の繰り返し制御
      *  |        WCLR1     第一画面クリア
      *  |        WCLR2     第二画面クリア
      *  |        WERR1     第一画面エラー制御
      *  |        WERR2     第二画面エラー制御
      *  |        WERR3     第三画面エラー制御
      *  |        WERR9     ファイル更新エラー
      *  |        WMOD      処理モード判別フラグ
      *  |        WCHG      データ変更判別フラグ
      *  |        WFRST     一回目の制御フラグ
      *  |        WDLT      削除確認フラグ
      *  +--------------------------------------------------+
     D WCTL            DS
     D  WDSP                   1      1
     D  WUPD                   2      2
     D  WLOOP                  3      3
     D  WCLR1                  4      4
     D  WCLR2                  5      5
     D  WERR1                  6      6
     D  WERR2                  7      7
     D  WERR3                  8      8
     D  WERR9                  9      9
     D  WMOD                  10     10
     D  WCHG                  11     11
     D  WFRST                 12     12
     D  WDLT                  13     13
      *<<システム日付>>
     D                 DS
     D  WKDATE                         D   DATFMT(*YMD) INZ(*SYS)
     D  WKTIME                         T   TIMFMT(*HMS) INZ(*SYS)
      *----------------------------*
      *   PROGRAM DATA STRUCTURE   *
      *----------------------------*
     D                SDS
     D  WKPGM            *PROC
     D  WWSID                244    253
     D  WUSER                254    263
      *----------------------------*
      *   WORKSTN DATA STRUCTURE   *
      *----------------------------*
      *<<罫線>>
     D S#KBFR          DS
     D  X2F                    1      1
     D  KBFR                   2      2
      *<<カーソル制御>>
     D WSINF           DS
     D  WLINE                370    370
     D  WCOLM                371    371
     D  WGYO                 378    379B 0
     D                 DS
     D  W1LIN                  1      2B 0
     D  W1LIN2                 1      1
     D  W1LIN1                 2      2
     D  W1COL                  3      4B 0
     D  W1COL2                 3      3
     D  W1COL1                 4      4
      *<<コミット制御>>
     D CMTID           DS
     D  USER                   1     10
     D  PGMN                  11     20
     D P@MDTA          DS
     D  P@M01                  1      8P 0
     D  P@M02                  9     16P 0
     D  P@M03                 17     32
     D  P@M04                 33     62
     D  P@M05                 63     64P 0
     C/EJECT
     C                   MOVEL     COIBM         COIBM                          COPYRIGHT IBM
      *===============================================================*
      *                   PLIST
      *===============================================================*
      *===============================================================*
      *                   KLIST
      *===============================================================*
      *<<品目マスター>>
     C     KEYPR         KLIST
     C                   KFLD                    PRPRCD                         品番
      *===============================================================*
      *          MAIN ROUTINE
      *===============================================================*
      *<< 初期設定 >>
     C                   EXSR      SBINZ                                        初期設定処理
      *
     C                   DO        *HIVAL
      *<<画面処理>>
     C     WDSP          CASEQ     '1'           SB1000                         第一画面処理
     C     WDSP          CASEQ     '2'           SB2000                         第二画面処理
     C     WDSP          CASEQ     '9'           SBEND                          終了処理
     C                   ENDCS
      *<<更新処理>>
    +C     WUPD          IFEQ      '1'
    |C                   EXSR      SBUPD                                        更新処理
    +C                   ENDIF
      *
     C                   ENDDO
      *==============================================================*
      *          SBINZ    ワークフィールドの初期設定
      *==============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : ワークフィールドの初期設定
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SBINZ         BEGSR
      *<<画面クリア>>
     C                   CLEAR                   FMT10                           FMT10-CLEAR
     C                   CLEAR                   FMT20                           FMT20-CLEAR
      *<< WORK FILDの定義を行う。>>
     C                   Z-ADD     *ZERO         WKHDIV            8 0          発注日(商)
     C                   Z-ADD     *ZERO         WKHMVR            8 0          発注日(剰余)
     C                   Z-ADD     *ZERO         WKNDIV            8 0          納品日(商)
     C                   Z-ADD     *ZERO         WKNMVR            8 0          納品日(剰余)
     C                   MOVEL     '0'           WKEMSG            1             エラーメッセージフラグ
     C                   MOVEL     '0'           WKURYR            1            閏年フラグ
      *<<フィールドの初期設定を行う。>>
     C                   MOVEL     WKPGM         D1PGID                          プログラム ID
     C                   MOVEL     '1'           WCLR1                          第一画面クリアー
     C                   MOVEL     'W'           WMOD                           モード(初期値:登�
     C                   SETON                                        99         オーバーフロー標識ON
      *<<画面メッセージCTL SFLEND >>
     C                   SETON                                        22
      *
     C                   MOVEL     '1'           WDSP
      *
     C                   ENDSR
      *===============================================================*
      *          SB1000   第一画面ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第一画面処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SB1000        BEGSR
      *<<第一画面クリアルーチン>>
    +C     WCLR1         IFEQ      '1'
    |C                   EXSR      SB1CR
    +C                   ENDIF
      *<<第一画面初期設定ルーチン>>
     C                   EXSR      SB1IZ
      *<<入力制御>>
    +C     WMOD          IFEQ      'W'
    |C     WMOD          OREQ      'U'
    |C                   SETOFF                                       30
    |C                   ELSE
    |C                   SETON                                        30
    +C                   ENDIF
      *<<第一画面出力>>
     C                   EXFMT     FMT10
      *<< MESSEGE CLEAR >>
    +C     *INKC         IFEQ      '0'
    |C     *INKE         ANDEQ     '0'
    |C                   MOVEL     *BLANK        D1MSG
    +C                   ENDIF
   +-C                   SELECT
   |  *<< CMD3終了処理>>
   | C     *INKC         WHENEQ    '1'
   | C                   MOVEL     '9'           WDSP
   |  *<< CMD5モード切替>>
   | C     *INKE         WHENEQ    '1'
   | C                   EXSR      SB1KE
   |  *<<実行キー(CMD3以外)処理>>
   | C                   OTHER
   |  *<<第一画面チェックルーチン>>
   | C                   EXSR      SB1CK
   |  *<<エラーなし;第二画面処理>>
   |+C     WERR1         IFEQ      '0'
   ||C                   MOVEL     '2'           WDSP
   ||C                   MOVEL     '1'           WCLR2
   |+C                   ENDIF
   +-C                   ENDSL
      *
     C                   ENDSR
      *===============================================================*
      *          SB1CR    第一画面クリアルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第一画面のクリア処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SB1CR         BEGSR
      *
      *<<第一画面クリアーを行なう。>>
     C                   CLEAR                   FMT10                           FMT10-CLEAR
      *<<エラーフラグOFFを行なう。 >>
     C                   MOVEL     '0'           WERR1                          代表エラーフラグ
      *<<クリアー・フラグ >>
     C                   MOVEL     '0'           WCLR1                          第一画面クリアー
     C                   MOVEL     '1'           WCLR2                          第二画面クリアー
      *
     C                   ENDSR
      *===============================================================*
      *          SB1IZ    第一画面クリアルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第一画面のクリア処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SB1IZ         BEGSR
      *
     C                   TIME                    WKDATE
     C                   TIME                    WKTIME
     C                   EVAL      D1DAT6 = WKDATE                              日付
     C                   EVAL      D1TIME = WKTIME                              時刻
      *
     C                   MOVEL     WKPGM         D1PGID                          プログラムID
     C                   MOVEL     CMD(1)        D1CMD                           CMD KEY情報
      *<<処理モードのセット>>
    +C                   SELECT
    |C     WMOD          WHENEQ    'W'
    |C                   MOVEL     MOD(1)        D1MOD
    |C     WMOD          WHENEQ    'U'
    |C                   MOVEL     MOD(2)        D1MOD
    |C     WMOD          WHENEQ    'D'
    |C                   MOVEL     MOD(3)        D1MOD
    |C     WMOD          WHENEQ    'S'
    |C                   MOVEL     MOD(4)        D1MOD
    +C                   ENDSL
      *
     C                   SETOFF                                       30        画面プロテクト = OFF
      *
     C                   ENDSR
      *===============================================================*
      *          SB1KE    モード切替ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : モード切替処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SB1KE         BEGSR
      *
     C                   SELECT
     C     WMOD          WHENEQ    'W'
     C                   MOVEL     'U'           WMOD
     C     WMOD          WHENEQ    'U'
     C                   MOVEL     'D'           WMOD
     C     WMOD          WHENEQ    'D'
     C                   MOVEL     'S'           WMOD
     C     WMOD          WHENEQ    'S'
     C                   MOVEL     'W'           WMOD
     C                   ENDSL
      *
     C                   ENDSR
      *===============================================================*
      *          SB1CK    第一画面チェックルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 第一画面の入力フィールドすべて
      *  | PROCESS : エラーチェック
      *  |           エラーがあればWERR1 ON
      *  | OUTPUT  : 第一画面の入出力フィールドすべて
      *  |           画面の出力フィールドすべて
      *  |            WERR1 (エラーフラグ)
      *  +------------------------------------------------------+
     C     SB1CK         BEGSR
      *<<エラーフラグOFF>>
     C                   MOVEL     '0'           WERR1
     C                   MOVEL     '0'           WKEMSG
      *<<入力チェックを行う。>>
     C                   EXSR      SB1CK1                                       品番チェック
      *
     C                   ENDSR
      *===============================================================*
      *          SB1CK1   品番チェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D1PRC1
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN40
      *  +------------------------------------------------------+
     C     SB1CK1        BEGSR
      *
     C                   SETOFF                                       50
      *<<未入力はエラー>>
   +-C     D1PRCD        IFEQ      *BLANK
   | C                   SETON                                        50
   | C                   MOVEL     '1'           WERR1
   |  *
   |+C     WKEMSG        IFEQ      '0'
   ||C                   MOVEL     MSG(1)        D1MSG
   |+C                   ENDIF
   |  *
   +-C                   ENDIF
      *<<品目マスターチェック>>
     C                   MOVEL     D1PRCD        PRPRCD                         品番
     C     KEYPR         CHAIN(N)  PRR01                              90
      *<<登録>>
  +--C     WMOD          IFEQ      'W'                                          登録
  |+-C     *IN90         IFEQ      *OFF
  ||  *<<登録の時、品目マスターに存在する場合はエラー。>>
  || C                   SETON                                        50
  || C                   MOVEL     '1'           WERR1
  ||  *
  ||+C     WKEMSG        IFEQ      '0'
  |||C                   MOVEL     MSG(2)        D1MSG
  ||+C                   ENDIF
  ||  *
  |+-C                   ENDIF
  |   *<<変更・削除・表示>>
  |  C                   ELSE                                                   変更・削除・表示
  |+-C     *IN90         IFEQ      *ON
  ||  *<<登録以外の時、品目マスターに存在しない場合はエラー。>>
  || C                   SETON                                        50
  || C                   MOVEL     '1'           WERR1
  ||  *
  ||+C     WKEMSG        IFEQ      '0'
  |||C                   MOVEL     MSG(3)        D1MSG
  ||+C                   ENDIF
  ||  *
  |+-C                   ENDIF
  +--C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SB2000   第二画面ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 第二画面処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SB2000        BEGSR
      *
      *<<第二画面初期設定ルーチン>>
     C                   EXSR      SB2IZ
      *<<入力制御>>
    +C     WMOD          IFEQ      'W'
    |C     WMOD          OREQ      'U'
    |C                   SETOFF                                       30
    |C                   ELSE
    |C                   SETON                                        30
    +C                   ENDIF
      *<<第二画面出力>>
     C                   EXFMT     FMT20
      *<< MESSEGE CLEAR >>
    +C     *INKC         IFEQ      '0'
    |C     *INKL         ANDEQ     '0'
    |C                   MOVEL     *BLANK        D2MSG
    +C                   ENDIF
 +---C                   SELECT
 |    *<< CMD3終了処理>>
 |   C     *INKC         WHENEQ    '1'
 |   C                   MOVEL     '9'           WDSP
 |    *<< CMD12前画面>>
 |   C     *INKL         WHENEQ    '1'
 |   C                   MOVEL     '1'           WDSP
 |    *<<実行キー(CMD3,12以外)処理>>
 |   C                   OTHER
 |  +C     WMOD          IFEQ      'S'                                          照会モード
 |  |C                   MOVEL     '0'           WFRST                          1回目フラグ
 |  |C                   MOVEL     '0'           WDLT                           全件削除フラグ
 |  |C                   MOVEL     '0'           WCLR2                           クリアフラグ
 |  |C                   ELSE
 |  | *<<第一画面チェックルーチン>>
 |  |C                   EXSR      SB2CK
 |  +C                   ENDIF
 |    *<<エラーなし;第二画面処理>>
 |+--C     WERR2         IFEQ      '1'
 ||  C     *IN70         OREQ      *ON                                           MDT標識
 ||  C     WFRST         OREQ      '1'                                          一回目フラグ
 ||   *<<エラーなし,MDT ONのときメッセージ出力>>
 ||+-C     WERR2         IFEQ      '0'                                          代表エラーフラグ
 |||+C                   SELECT
 ||||C     WMOD          WHENEQ    'W'
 ||||C                   MOVEL     MSG(8)        D2MSG
 ||||C     WMOD          WHENEQ    'U'
 ||||C                   MOVEL     MSG(9)        D2MSG
 ||||C     WMOD          WHENEQ    'D'
 ||||C                   MOVEL     MSG(10)       D2MSG
 ||||C                   OTHER
 ||||C                   MOVEL     *BLANK        D2MSG
 |||+C                   ENDSL
 ||+-C                   ENDIF
 ||   *
 ||  C                   MOVEL     '0'           WFRST                          1回目フラグ
 ||  C                   MOVEL     '0'           WDLT                           全件削除フラグ
 ||  C                   MOVEL     '0'           WCLR2                           クリアフラグ
 ||   *<<エラーなし;更新&第四画面処理>>
 ||  C                   ELSE
 ||  C                   MOVEL     '1'           WFRST                          1回目フラグ
 ||  C                   MOVEL     '0'           WLOOP                          ループせずに
 ||  C                   MOVEL     '1'           WDSP                           画面処理
 ||  C                   MOVEL     '1'           WUPD                           更新処理へ
 |+--C                   ENDIF
 |    *
 +---C                   ENDSL
      *
     C                   ENDSR
      *==============================================================*
      *          SB2IZ    第二画面初期化ルーチン
      *==============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROSESS : 第二画面の初期設定
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SB2IZ         BEGSR
      *
     C                   TIME                    WKDATE
     C                   TIME                    WKTIME
     C                   EVAL      D2DAT6 = WKDATE                              日付
     C                   EVAL      D2TIME = WKTIME                              時刻
      *
     C                   MOVEL     WKPGM         D2PGID                          プログラムID
     C                   MOVEL     D1MOD         D2MOD                          処理モード
     C                   MOVEL     CMD(2)        D2CMD                           CMD KEY情報
      *
    +C     WCLR2         IFEQ      '1'
    | *<<明細画面項目セット>>
    |C                   EXSR      SB2SET                                       フィールドセット
    +C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SB2SET   明細画面セットルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :  CDMPR
      *  | PROSESS : 明細画面のフィールドセットを行う。
      *  | OUTPUT  :  FMT20,FMT30
      *  +------------------------------------------------------+
     C     SB2SET        BEGSR
      *<<登録>>
   +-C     WMOD          IFEQ      'W'                                          登録
   | C                   MOVEL     D1PRCD        D2PRCD                         品番
   | C                   MOVEL     *BLANK        D2PRRK                         品名
   | C                   MOVEL     *BLANK        D2SRCD                         仕入先コード
   | C                   MOVEL     *BLANK        D2ZMBN                         図面番号
   | C                   MOVEL     *BLANK        D2PRTP                         品目タイプ
   | C                   Z-ADD     *ZERO         D2TEIK                         定価
   | C                   Z-ADD     *ZERO         D2GENK                         原価
   | C                   Z-ADD     *ZERO         D2GSUR                         当月売上数量
   | C                   Z-ADD     *ZERO         D2NSUR                         当年売上数量
   | C                   TIME                    WKDATE
   | C                   TIME                    WKTIME
   | C                   EVAL      D2HCDT = WKDATE
   | C                   ELSE
   |  *<<変更・削除・表示>>
   | C                   MOVEL     D1PRCD        PRPRCD                         品番
   | C     KEYPR         CHAIN(N)  PRR01                              90
   |  *<<品目マスターよりセット>>
   |+C     *IN90         IFEQ      *OFF
   ||C                   MOVEL     D1PRCD        D2PRCD                         品番
   ||C                   MOVEL     PRPRRK        D2PRRK                         品名
   ||C                   MOVEL     PRSRCD        D2SRCD                         仕入先コード
   ||C                   MOVEL     PRZMBN        D2ZMBN                         図面番号
   ||C                   MOVEL     PRPRTP        D2PRTP                         品目タイプ
   ||C                   Z-ADD     PRTEIK        D2TEIK                         定価
   ||C                   Z-ADD     PRGENK        D2GENK                         原価
   ||C                   Z-ADD     PRNSUR        D2GSUR                         当月売上数量
   ||C                   Z-ADD     PRNSUR        D2NSUR                         当年売上数量
   ||C                   EVAL      D2HCDT = PRHCDT                              発注日
   |+C                   ENDIF
   |  *
   +-C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SB2CK    第二画面チェックルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 第二画面の入力フィールドすべて
      *  | PROCESS : エラーチェック
      *  |           エラーがあればWERR2 ON
      *  | OUTPUT  : 第二画面の入出力フィールドすべて
      *  |           第二画面の出力フィールドすべて
      *  |            WERR2 (エラーフラグ)
      *  |            *IN70 (MDTフラグ)
      *  +------------------------------------------------------+
     C     SB2CK         BEGSR
      *<<エラーフラグOFF>>
     C                   MOVEL     '0'           WERR2
     C                   MOVEL     '0'           WKEMSG
      *<<入力チェックを行う。>>
     C                   EXSR      SB2CK1                                       品名
     C                   EXSR      SB2CK2                                       品目タイプ
      *
     C                   ENDSR
      *===============================================================*
      *          SB2CK1   品名チェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D2PRRK
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN42
      *  +------------------------------------------------------+
     C     SB2CK1        BEGSR
      *
     C                   SETOFF                                       51
      *<<未入力はエラー>>
   +-C     D2PRRK        IFEQ      *BLANK
   | C                   SETON                                        51
   | C                   MOVEL     '1'           WERR2
   |  *
   |+C     WKEMSG        IFEQ      '0'
   ||C                   MOVEL     MSG(4)        D2MSG
   ||C                   MOVEL     '1'           WKEMSG
   |+C                   ENDIF
   |  *
   +-C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SB2CK2   品目タイプチェック
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   : 画面入力フィールド D2HCDT
      *  | PROCESS : 画面の入力チェック
      *  | OUTPUT  :  *IN51
      *  +------------------------------------------------------+
     C     SB2CK2        BEGSR
      *
     C                   SETOFF                                       52
      *<<未入力はエラー>>
   +-C     D2PRTP        IFEQ      *BLANK
   | C                   SETON                                        52
   | C                   MOVEL     '1'           WERR2
   |  *
   |+C     WKEMSG        IFEQ      '0'
   ||C                   MOVEL     MSG(5)        D2MSG
   ||C                   MOVEL     '1'           WKEMSG
   |+C                   ENDIF
   |  *
   +-C                   ENDIF
      *<<1,2以外はエラー>>
   +-C     D2PRTP        IFNE      '1'
   | C     D2PRTP        ANDNE     '2'
   | C                   SETON                                        52
   | C                   MOVEL     '1'           WERR2
   |+ *
   ||C     WKEMSG        IFEQ      '0'
   ||C                   MOVEL     MSG(6)        D2MSG
   ||C                   MOVEL     '1'           WKEMSG
   |+C                   ENDIF
   |  *
   +-C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SBUPD    登録ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 登録処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SBUPD         BEGSR
      *
     C                   MOVEL     '0'           WERR9                          ファイル更新エラー
      *
    +C                   SELECT
    |C     WMOD          WHENEQ    'W'
    |C                   EXSR      SBWRT
    |C     WMOD          WHENEQ    'U'
    |C                   EXSR      SBUPT
    |C     WMOD          WHENEQ    'D'
    |C                   EXSR      SBDLT
    +C                   ENDSL
      *
     C                   MOVEL     *BLANK        D1PRCD                         品番
     C                   MOVEL     '0'           WUPD                           更新処理のトリガー
     C                   MOVEL     '0'           WCLR1                          第一画面クリアー
      *
     C                   ENDSR
      *===============================================================*
      *          SBWRT    登録ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 登録処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SBWRT         BEGSR
      *
     C                   MOVEL     D2PRCD        PRPRCD                         品番
     C                   MOVEL     D2PRCD        PRPRCD                         品番
     C                   MOVEL     D2PRRK        PRPRRK                         品名
     C                   MOVEL     D2SRCD        PRSRCD                         仕入先コード
     C                   MOVEL     D2ZMBN        PRZMBN                         図面番号
     C                   MOVEL     D2PRTP        PRPRTP                         品目タイプ
     C                   Z-ADD     D2TEIK        PRTEIK                         定価
     C                   Z-ADD     D2GENK        PRGENK                         原価
     C                   Z-ADD     D2GSUR        PRNSUR                         当月売上数量
     C                   Z-ADD     D2NSUR        PRNSUR                         当年売上数量
     C                   EVAL      PRHCDT = PRHCDT                              発注日
      *<<計算項目セット>>
     C     D2GENK        MULT      D2GSUR        PRGGNK                         当月売上原価
     C     D2GENK        MULT      D2NSUR        PRNGNK                         当年売上原価
     C     D2TEIK        MULT      D2GSUR        PRGKIN                         当月売上金額
     C     D2TEIK        MULT      D2NSUR        PRNKIN                         当年売上金額
      *<<納品日(発注日+ 10日)>>
     C                   EVAL      PRNHDT = PRHCDT + %DAYS(10)                  納品日
      *<<作成・更新日時>>
     C                   TIME                    WKDATE
     C                   TIME                    WKTIME
     C                   EVAL      PRCRDT = WKDATE                              作成日
     C                   EVAL      PRUPDT = WKDATE                              最終更新日
     C                   EVAL      PRCRTM = WKTIME                              作成時刻
     C                   EVAL      PRUPTM = WKTIME                              最終更新時刻
      *<<登録処理>>
     C                   WRITE     PRR01
      *<<完了メッセージ>>
     C                   MOVEL     MSG(11)       D1MSG
      *
     C                   ENDSR
      *===============================================================*
      *          SBUPT    更新ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 更新処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SBUPT         BEGSR
      *
     C                   MOVEL     D1PRCD        PRPRCD                         品番
      *
     C     KEYPR         CHAIN     PRR01                              90
      *
    +C     *IN90         IFEQ      *OFF
    | *<<項目初期化>>
    |C                   MOVEL     *BLANK        PRPRCD                         品番
    |C                   MOVEL     *BLANK        PRPRRK                         品名
    |C                   MOVEL     *BLANK        PRSRCD                         仕入先コード
    |C                   MOVEL     *BLANK        PRZMBN                         図面番号
    |C                   MOVEL     *BLANK        PRPRTP                         品目タイプ
    |C                   Z-ADD     *ZERO         PRTEIK                         定価
    |C                   Z-ADD     *ZERO         PRGENK                         原価
    |C                   Z-ADD     *ZERO         PRNSUR                         当月売上数量
    |C                   Z-ADD     *ZERO         PRNSUR                         当年売上数量
    |C                   Z-ADD     *ZERO         PRGGNK                         当月売上原価
    |C                   Z-ADD     *ZERO         PRNGNK                         当年売上原価
    |C                   Z-ADD     *ZERO         PRGKIN                         当月売上金額
    |C                   Z-ADD     *ZERO         PRNKIN                         当年売上金額
    | *<<項目セット>>
    |C                   MOVEL     D2PRCD        PRPRCD                         品番
    |C                   MOVEL     D2PRRK        PRPRRK                         品名
    |C                   MOVEL     D2SRCD        PRSRCD                         仕入先コード
    |C                   MOVEL     D2ZMBN        PRZMBN                         図面番号
    |C                   MOVEL     D2PRTP        PRPRTP                         品目タイプ
    |C                   Z-ADD     D2TEIK        PRTEIK                         定価
    |C                   Z-ADD     D2GENK        PRGENK                         原価
    |C                   Z-ADD     D2GSUR        PRNSUR                         当月売上数量
    |C                   Z-ADD     D2NSUR        PRNSUR                         当年売上数量
    |C                   EVAL      PRHCDT = D2HCDT                              発注日
    |C     D2GENK        MULT      D2GSUR        PRGGNK                         当月売上原価
    |C     D2GENK        MULT      D2NSUR        PRNGNK                         当年売上原価
    |C     D2TEIK        MULT      D2GSUR        PRGKIN                         当月売上金額
    |C     D2TEIK        MULT      D2NSUR        PRNKIN                         当年売上金額
    | *<<納品日(発注日+ 10日)>>
    |C                   EVAL      PRNHDT = PRHCDT + %DAYS(10)                  納品日
    | *<<更新日時>>
    |C                   TIME                    WKDATE
    |C                   TIME                    WKTIME
    |C                   EVAL      PRUPDT = WKDATE                              作成時刻
    |C                   EVAL      PRUPTM = WKTIME                              最終更新時刻
    | *<<更新処理>>
    |C                   UPDATE    PRR01
    | *<<完了メッセージ>>
    |C                   MOVEL     MSG(12)       D1MSG
    | *
    +C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SBDLT    削除ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : 削除処理
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SBDLT         BEGSR
      *
     C                   MOVEL     D1PRCD        PRPRCD                         品番
      *
     C     KEYPR         CHAIN     PRR01                              90
      *
    +C     *IN90         IFEQ      *OFF
    | *<<削除処理>>
    |C                   DELETE    PRR01
    | *<<完了メッセージ>>
    |C                   MOVEL     MSG(13)       D1MSG
    | *
    +C                   ENDIF
      *
     C                   ENDSR
      *===============================================================*
      *          SBEND    終了ルーチン
      *===============================================================*
      *  +------------------------------------------------------+
      *  | INPUT   :
      *  | PROCESS : プログラムの終了を行う。
      *  | OUTPUT  :
      *  +------------------------------------------------------+
     C     SBEND         BEGSR
      *
     C                   SETON                                        LR
     C                   RETURN
      *
     C                   ENDSR
      *===============================================================*
      *                   テーブル
      *===============================================================*
**    *  FOTTER
 F3=終了F5=モード切替
 F3=終了F12=前画面
**    *  MOD <<更新モード>>
登録
変更
削除
照会
**
品番に値が入力されていません。
入力された品番は品目マスターに既に存在します。
入力された品番は品目マスターに存在しません。
品名に値が入力されていません。
品目タイプに値が入力されていません。
品目タイプは指定可能な値ではありません。
発注日は指定可能な値ではありません。
実行キーで登録されます。
実行キーで更新されます。
実行キーで削除されます。
品目マスターへの登録が完了しました。
品目マスターの更新が完了しました。
品目マスターから削除が完了しました。
**    *  COPYRIGHT IBM
5754-AEP COPYRIGHT IBM CORP. 1995 LICENSED MATERIAL-PROGRAM PROPERTY OF IBM

rpg4画面ソース

      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *                                                                *
      *           COPYRIGHT IBM CORP.                                  *
      *                                                                *
      *                                                                *
      *                                                                *
      *           THIS MODULE IS "RESTRICTED MATERIALS OF IBM"         *
      *                                                                *
      *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
      *  DSP FILE ID.  :  RPG100D                                      *
      *  DSP FILE記述: 品目マスター保守                            *
      *・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*
     A*%%EC
     A                                      DSPSIZ(24 80 *DS3)
     A                                      REF(*LIBL/PCRRM)
     A                                      CHGINPDFT
     A                                      IGCCNV(CF18 24)
     A                                      PRINT
      *===============================================================*
      *           FMT10    FMT10 第1画面
      *===============================================================*
     A          R FMT10
      *
     A                                      OVERLAY
     A                                      BLINK
     A                                      CHANGE(70 'MDT フラグ')
     A                                      CA03
     A                                      CF05
     A                                      KEEP
      *
     A            D1PGID        10A     1  3TEXT('プログラムID')
     A                                  1 20'** 品目マスター保守 **'
     A                                      DSPATR(RI HI)
     A            D1MOD          6A     1 56TEXT('モード')
     A                                      DSPATR(RI HI)
     A            D1DAT6          L  O  1 71TEXT('日付')
     A                                      DATFMT(*YMD)
     A***                                   EDTWRD('0 /  /  ')
     A            D1TIME          T  O  2 71TEXT('時刻')
     A                                      TIMFMT(*JIS)
      *
     A                                  4  6'品 番'
     A            D1PRCD        20A  B  4 21TEXT('品番')
     A                                      DSPATR(CS UL)
     A  50                                  DSPATR(RI PC)
      *
     A            D1CMD         78O  O 23  1TEXT('コマンド')
     A                                      COLOR(BLU)
     A            D1MSG         78O  O 24  1TEXT('メッセージ')
     A                                      COLOR(WHT)
      *===============================================================*
      *           FMT20    FMT20 第2画面
      *===============================================================*
     A          R FMT20
      *
     A                                      OVERLAY
     A                                      BLINK
     A                                      CHANGE(70 'MDT フラグ')
     A                                      CA03
     A                                      CF12
     A                                      KEEP
      *
     A            D2PGID        10A     1  3TEXT('プログラムID')
     A                                  1 20'** 品目マスター保守 **'
     A                                      DSPATR(RI HI)
     A            D2MOD          6A     1 56TEXT('モード')
     A                                      DSPATR(RI HI)
     A            D2DAT6          L  O  1 71TEXT('日付')
     A                                      DATFMT(*YMD)
     A            D2TIME          T  O  2 71TEXT('時刻')
     A                                      TIMFMT(*JIS)
      *
     A                                  4  6'品 番'
     A            D2PRCD        20A  B  4 21TEXT('品番')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                  7  6'品 名'
     A            D2PRRK        22O  B  7 21TEXT('品名')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  51                                  DSPATR(RI PC)
      *
     A                                  9  6'仕入先コード'
     A            D2SRCD         5A  B  9 21TEXT('仕入先コード')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                 11  6'図面番号'
     A            D2ZMBN        20O  B 11 21TEXT('図面番号')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
      *
     A                                 13  6'品目タイプ'
     A            D2PRTP         1A  B 13 21TEXT('品目タイプ')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  52                                  DSPATR(RI PC)
      *
     A                                 15  6'定 価'
     A            D2TEIK        11Y 0B 15 21TEXT('定価')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 15 40'原 価'
     A            D2GENK        11Y 0B 15 55TEXT('原価')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 17  6'当月売上数量'
     A            D2GSUR        11Y 0B 17 21TEXT('当月売上数量')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 17 40'当年売上数量'
     A            D2NSUR        11Y 0B 17 55TEXT('当年売上数量')
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A                                      EDTCDE(J)
      *
     A                                 19  6'発注日'
     A            D2HCDT          L  B 19 21TEXT('発注日')
     A                                      DATFMT(*JIS)
     A N30                                  DSPATR(CS UL)
     A  30                                  DSPATR(PR)
     A  53                                  DSPATR(RI PC)
      *
     A            D2CMD         78O  O 23  1TEXT('コマンド')
     A                                      COLOR(BLU)
     A            D2MSG         78O  O 24  1TEXT('メッセージ')
     A                                      COLOR(WHT)

5
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?