presentation includes information and evaluation results of a product currently under development. Specifications, functions, and UI may change prior to the official release. •This session contains confidential information. Recording, photography, and screen capturing are strictly prohibited. •No presentation materials will be distributed. 注意事項(Disclaimer)
50A INZ 入力文字列 D XOUTPUT S 50A INZ 出力文字列 D XPOS S 3S 0 INZ @の位置 C EVAL XPOS = 3 C %SUBST(XINPUT:WPOS:1) C IFEQ '@' C EVAL XOUTPUT = %SUBST(WINPUT:WPOS+1) C ENDIF txt SCAN使用版: C '@' SCAN XINPUT XPOS C XPOS IFEQ 3 C EVAL XOUTPUT = %SUBST(XINPUT:XPOS+1) C ENDIF txt サンプルコード(サンプルRPGソース_XXXMU900.txt)の168-172行目のパターンを参考にしています。 %SUBST(WINPUT:XPOS+1)で@の次の位置から文字列末尾まで抽出します。 Bobの回答 設計書・仕様書が無い(古い) このRPGをコーディングした人は もはや不在 消費税改定などでプログラム を変更したいが。
契約書番号 GNTSCD, -- 得意先CD GNCHCD, -- 注文主CD GNEUCD, -- エンドユーザーCD GNCHNO, -- 他社注文番号 GNMKCD, -- メーカーCD GNJYDT, -- 契約日 GNSVSD -- 保守開始日 FROM IGSTSTDBR.AAFKKKL01 -- 期間契約情報管理ファイル WHERE -- 日付区分による条件分岐 CASE WHEN '1' = '1' THEN GNJYDT -- 契約日 ELSE GNSVSD -- 保守開始日 END BETWEEN 20240101 AND 20241231 -- 得意先CD条件(入力値がある場合のみ) AND ('10994' = '' OR '10994' IS NULL OR GNTSCD = '10994') -- 注文主CD条件(入力値がある場合のみ) AND ('' = '' OR '' IS NULL OR GNCHCD = '') -- エンドユーザーCD条件(入力値がある場合のみ) AND ('10994A35' = '' OR '10994A35' IS NULL OR GNEUCD = '10994A35') -- メーカーCD条件(入力値がある場合のみ) AND ('A02003' = '' OR 'A02003' IS NULL OR GNMKCD = 'A02003') ORDER BY CASE WHEN '1' = '1' THEN GNJYDT -- 契約日でソート ELSE GNSVSD -- 保守開始日でソート END, GNKYNO -- 契約書番号でソート C #S920 BEGSR * C @S920 TAG C* C WIDKBN IFEQ '1' IF C READ AAFKKKL09 70 | C ELSE ELSE C READ AAFKKKL10 70 | C ENDIF ENDIF C* C *IN70 IFEQ *ON IF C MOVEL *HIVAL NKEY1 | C ELSE ELSE C WIDKBN IFEQ '1' |IF C Z-ADD GNJYDT WKDATE || C ELSE |ELSE C Z-ADD GNSVSD WKDATE || C ENDIF |ENDIF C*日付読み切り | C WKDATE IFGT WIDATET |IF C MOVEL *HIVAL NKEY1 || C ELSE |ELSE C*得意先CD読み飛ばし || C WITSCD IFNE *BLANK ||IF C GNTSCD ANDNE WITSCD ||AND C GOTO @S920 ||| C ENDIF ||ENDIF C*注文主CD読み飛ばし || C WICHCD IFNE *BLANK ||IF C GNCHCD ANDNE WICHCD ||AND C GOTO @S920 ||| C ENDIF ||ENDIF C*エンドユーザーCD読み飛ばし || C WIEUCD IFNE *BLANK ||IF C GNEUCD ANDNE WIEUCD ||AND C GOTO @S920 ||| C ENDIF ||ENDIF C*メーカーCD読み飛ばし || C WIMKCD IFNE *BLANK ||IF C GNMKCD ANDNE WIMKCD ||AND C GOTO @S920 ||| C ENDIF ||ENDIF C*キーセーブ || C MOVEL GNKYNO NKKYNO || C ENDIF |ENDIF C ENDIF ENDIF * C ENDSR #サブルーチンのロジックをSQLのSELECT文に変換して。 指令③:#S920のロジックをSQLのSELECT文に変換して。