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文に変換して。