SCNSRC( Scan Source )コマンドとはソース・ファイルの中から指定した
特定の文字列が含まれるソース・メンバーを抽出するコマンドであり、
「3. SCNSRC 原始文字列の検索」として紹介した。
SCNSRC は弊社では毎日ように利用する。
過去のソフトウェア資産を検索するに非常に便利であり、
過去の経験が次の開発に生かされる重要な機能のひとつである。
経験が累積すればするほど次の開発も短時間でできるようになり、
より高度な開発が可能になるのだ。
さて今までの SCNSRC でも十分、役に立っていたのであるが、
SCNSRC は特定のライブラリーとソース・ファイルの名前を指定して
次のようにして検索する。
ソース文字列の検索 (SCNSRC) 選択項目を入力して,実行キーを押してください。 原始ファイル . . . . . . . . . > QCLSRC 名前 ライブラリー . . . . . . . . > R610SRC 名前 , *LIBL, *CURLIB... 原始メンバー . . . . . . . . . *ALL 名前 , *ALL 探索文字列 . . . . . . . . . . > SFLMSGKEY 出力 . . . . . . . . . . . . . > * *PRINT, *, *BOTH
しかし対象となるソース・ファイルは特定のライブラリーだけでなく、
あちらこちらに分散しして保管されている場合が多い。
そこで今回の改訂ではソース・ライブラリーの名前を一意的に特定して
検索するのではなく
*ALLUSR
としてすべてのユーザー・ライブラリーを検索できるようにした。
つまり次のような指定が可能である。
ソース文字列の検索 (SCNSRC) 選択項目を入力して,実行キーを押してください。 原始ファイル . . . . . . . . . > QCLSRC 名前 ライブラリー . . . . . . . . > *ALLUSR 名前 , *LIBL, *CURLIB... 原始メンバー . . . . . . . . . *ALL 名前 , *ALL 探索文字列 . . . . . . . . . . > SFLMSGKEY 出力 . . . . . . . . . . . . . > * *PRINT, *, *BOTH
*ALLUSR
の指定によって SCNSRC はすべてのユーザー・ライブラリーの中を
検索することができる。
多くのソース・ライブラリーを保有しているユーザーにとって
非常に役に立つツールになると信じている。
0001.00 CMD PROMPT(' ソース文字列の検索 ') 0002.00 PARM KWD(SRCFILE) TYPE(SRCFILE) + 0003.00 PROMPT(' ソース・ファイル ') 0004.00 SRCFILE: QUAL TYPE(*NAME) LEN(10) DFT(QCSRC) 0005.00 QUAL TYPE(*NAME) LEN(10) DFT(R610SRC) + 0006.00 SPCVAL((*LIBL) (*CURLIB) (*ALLUSR)) + 0007.00 PROMPT(' ライブラリー ') 0008.00 PARM KWD(SRCMBR) TYPE(*NAME) LEN(10) DFT(*ALL) + 0009.00 SPCVAL((*ALL)) PROMPT(' ソース・メンバー ') 0010.00 PARM KWD(STRING) TYPE(*CHAR) LEN(80) CASE(*MIXED) + 0011.00 PROMPT(' 探索文字列 ( 英小文字可 )') 0012.00 PARM KWD(OUTPUT) TYPE(*CHAR) LEN(8) RSTD(*YES) + 0013.00 DFT(*PRINT) VALUES(*PRINT * *BOTH) + 0014.00 PROMPT(' 出力 ') 0015.00 PARM KWD(EXCLUDE) TYPE(*CHAR) LEN(4) RSTD(*YES) + 0016.00 DFT(*YES) VALUES(*NO *YES) + 0017.00 PMTCTL(*PMTRQS) + 0018.00 PROMPT('BACKUP メンバー (_) の除外 ') 0019.00 PARM KWD(ONCE) TYPE(*CHAR) LEN(4) RSTD(*YES) + 0020.00 DFT(*YES) VALUES(*NO *YES) + 0021.00 PMTCTL(*PMTRQS) + 0022.00 PROMPT(' 一回のみ表示する ')
CRTCMD CMD(MYOBJLIB/SCNSRC) PGM(MYOBJLIB/SCNSRCCL) SRCFILE(MYSRCIB/QCMDSRC) + AUT(*ALL)
0001.00 PGM PARM(&SRCFILLIB &SRCMBR &STRING &OUTPUT + 0002.00 &EXCLUDE &ONCE) 0003.00 /*--------------------------------------------------------------------- 0004.00 /* SCNSRC : ソース文字列の検索 0005.00 /* 0006.00 /* 2018/04/21 : *ALLUSR での検索機能を追加した。 0007.00 /*--------------------------------------------------------------------- 0008.00 DCL VAR(&SRCFILLIB) TYPE(*CHAR) LEN(20) 0009.00 DCL VAR(&SRCFIL) TYPE(*CHAR) LEN(10) 0010.00 DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) 0011.00 DCL VAR(&SRCMBR) TYPE(*CHAR) LEN(10) 0012.00 DCL VAR(&STRING) TYPE(*CHAR) LEN(80) 0013.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(80) 0014.00 DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) 0015.00 DCL VAR(&CHR) TYPE(*CHAR) LEN( 80) 0016.00 DCL VAR(&OUTPUT) TYPE(*CHAR) LEN(8) 0017.00 DCL VAR(&EXCLUDE) TYPE(*CHAR) LEN(4) 0018.00 DCL VAR(&ONCE) TYPE(*CHAR) LEN(4) 0019.00 /*( *ALLUSR 用変数 )*/ 0020.00 DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + 0021.00 VALUE(X'000074') /* 2 進数 */ 0022.00 DCL VAR(&APIVAR) TYPE(*CHAR) LEN(116) + 0023.00 VALUE(X'000074') /* 2 進数 */ 0024.00 DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + 0025.00 VALUE(X'00000000') 0026.00 DCL VAR(&INZSIZ) TYPE(*CHAR) LEN(4) 0027.00 DCL VAR(&OBJOBJLIB) TYPE(*CHAR) LEN(20) + 0028.00 VALUE('*ALLUSR ') 0029.00 DCL VAR(&STRPOS) TYPE(*CHAR) LEN(4) + 0030.00 VALUE(X'0000007D') /* 2 進数開始位置 : + 0031.00 125 */ 0032.00 DCL VAR(&LENDTA) TYPE(*CHAR) LEN(4) + 0033.00 VALUE(X'00000010') /* 2 進数受取長さ : 16 */ 0034.00 DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(16) + 0035.00 VALUE(X'0000000000000000') 0036.00 DCL VAR(&OFFSET) TYPE(*CHAR) LEN(4) /* + 0037.00 2 進数 オフセット */ 0038.00 DCL VAR(&NOENTR) TYPE(*CHAR) LEN(4) /* + 0039.00 2 進数項目数 */ 0040.00 DCL VAR(&LSTSIZ) TYPE(*CHAR) LEN(4) /* + 0041.00 2 進数リストサイズ */ 0042.00 DCL VAR(&DEC08) TYPE(*DEC) LEN(8 0) /* WORK */ 0043.00 DCL VAR(&ADDLEN) TYPE(*DEC) LEN(8 0) /* WORK */ 0044.00 DCL VAR(&NOENT) TYPE(*DEC) LEN(8 0) /* WORK */ 0045.00 DCL VAR(&N) TYPE(*DEC) LEN(8 0) VALUE(1) /* WORK */ 0046.00 DCL VAR(&RCVDTA) TYPE(*CHAR) LEN(4096) /* + 0047.00 受取データ */ 0048.00 DCL VAR(&STSMSG) TYPE(*CHAR) LEN(128) 0049.00 DCL VAR(&INLR) TYPE(*CHAR) LEN(1) 0050.00 DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) 0051.00 DCL VAR(&FILEFILLIB) TYPE(*CHAR) LEN(20) 0052.00 DCL VAR(&BIN4) TYPE(*CHAR) LEN(4) 0053.00 DCL VAR(&RECSU) TYPE(*DEC) LEN(8 0) /* WORK */ 0054.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 0055.00 0056.00 IF COND(&OUTPUT *NE '*PRINT') THEN(DO) 0057.00 OVRPRTF FILE(QPRINT) HOLD(*YES) SECURE(*YES) 0058.00 ENDDO 0059.00 CHGVAR VAR(&SRCFIL) VALUE(%SST(&SRCFILLIB 01 10)) 0060.00 CHGVAR VAR(&SRCLIB) VALUE(%SST(&SRCFILLIB 11 10)) 0061.00 0062.00 /*( *ALLUSR での検索 )*/ 0063.00 IF COND(&SRCLIB *EQ '*ALLUSR ') THEN(DO) 0064.00 CHGVAR VAR(%BIN(&INZSIZ)) VALUE(32767) 0065.00 CALL PGM(QUSCRTUS) PARM('SCNSRC QTEMP ' + 0066.00 'PF ' &INZSIZ X'00' '*ALL ' + 0067.00 'SCNSRC 用ユーザー空間 ' '*YES ' + 0068.00 &APIERR) 0069.00 MONMSG CPF9870 0070.00 /*( *ALLUSR ライブラリー一覧の出力 )*/ 0071.00 CHGVAR VAR(%BIN(&RCVLEN)) VALUE(4096) 0072.00 CHGVAR VAR(&OBJOBJLIB) VALUE(&SRCFIL *CAT + 0073.00 '*ALLUSR ') 0074.00 CALL PGM(QUSLOBJ) PARM('SCNSRC QTEMP ' + 0075.00 'OBJL0400' &OBJOBJLIB '*ALL ' &APIERR) 0076.00 /*( ユーザー・スペースを検索する )*/ 0077.00 /*( 1. リストデータセクションのオフセット値を検索 )*/ 0078.00 CALL PGM(QUSRTVUS) PARM('SCNSRC QTEMP ' + 0079.00 &STRPOS &LENDTA &RCVVAR) 0080.00 CHGVAR VAR(&OFFSET) VALUE(%SST(&RCVVAR 1 4)) 0081.00 CHGVAR VAR(&NOENTR) VALUE(%SST(&RCVVAR 9 4)) 0082.00 CHGVAR VAR(&LSTSIZ) VALUE(%SST(&RCVVAR 13 4)) 0083.00 /*( RCVVAR によって OFFSET,LSTSIZ を受取った )*/ 0084.00 CHGVAR VAR(&STRPOS) VALUE(&OFFSET) 0085.00 CHGVAR VAR(&DEC08) VALUE(%BIN(&STRPOS)) 0086.00 CHGVAR VAR(&DEC08) VALUE(&DEC08 + 1) 0087.00 CHGVAR VAR(%BIN(&STRPOS)) VALUE(&DEC08) 0088.00 CHGVAR VAR(&LENDTA) VALUE(&LSTSIZ) 0089.00 CHGVAR VAR(&ADDLEN) VALUE(%BIN(&LENDTA)) 0090.00 CHGVAR VAR(&NOENT) VALUE(%BIN(&NOENTR)) 0091.00 CHGVAR VAR(&N) VALUE(1) 0092.00 OVRPRTF FILE(QPRINT) SECURE(*YES) OVRSCOPE(*JOB) + 0093.00 SHARE(*YES) 0094.00 NXTRTV: 0095.00 CALL PGM(QUSRTVUS) PARM('SCNSRC QTEMP ' + 0096.00 &STRPOS &LENDTA &RCVDTA) 0097.00 /*( 処理の開始 )*/ 0098.00 CHGVAR VAR(&SRCLIB) VALUE(%SST(&RCVDTA 11 10)) 0099.00 IF COND(%SST(&SRCLIB 1 3) *NE 'DDM') THEN(DO) + 0100.00 /* DDM は除く */ 0101.00 CHGVAR VAR(&STSMSG) VALUE(&SRCLIB *TCAT + 0102.00 ' を検索中。 ') 0103.00 SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&STSMSG) + 0104.00 TOPGMQ(*EXT) MSGTYPE(*STATUS) 0105.00 /*( QUSRMBRD : メンバー記述API )*/ 0106.00 CHGVAR VAR(&FILEFILLIB) VALUE(&SRCFIL *CAT &SRCLIB) 0107.00 CHGVAR VAR(&APIERR) VALUE(&APIVAR) 0108.00 CALL PGM(QUSRMBRD) PARM(&RCVDTA &RCVLEN 'MBRD0300' + 0109.00 &FILEFILLIB '*FIRST ' '0' &APIERR) 0110.00 IF COND(%SST(&APIERR 5 4) *EQ &NULL4) THEN(DO) + 0111.00 /* メンバーあり */ 0112.00 IF COND(&N *EQ &NOENT) THEN(DO) 0113.00 CHGVAR VAR(&INLR) VALUE('*') 0114.00 ENDDO 0115.00 OVRDBF FILE(SRCFIL) TOFILE(&SRCLIB/&SRCFIL) + 0116.00 MBR(&SRCMBR) SECURE(*YES) OVRSCOPE(*JOB) 0117.00 CALL PGM(QUATTRO/SCNUSR) PARM(&STRING &EXCLUDE + 0118.00 &ONCE &INLR) 0119.00 MONMSG CPF4100 0120.00 DLTOVR FILE(SRCFIL) LVL(*JOB) 0121.00 MONMSG CPF9800 0122.00 ENDDO /* メンバーあり */ 0123.00 ENDDO /* DDM は除く */ 0124.00 /*( 処理の終了 )*/ 0125.00 IF COND(&N < &NOENT) THEN(DO) 0126.00 CHGVAR VAR(&N) VALUE(&N + 1) 0127.00 CHGVAR VAR(&DEC08) VALUE(%BIN(&STRPOS)) 0128.00 CHGVAR VAR(&DEC08) VALUE(&DEC08 + &ADDLEN) 0129.00 CHGVAR VAR(%BIN(&STRPOS)) VALUE(&DEC08) 0130.00 GOTO NXTRTV 0131.00 ENDDO 0132.00 DLTOVR FILE(QPRINT) LVL(*JOB) 0133.00 ENDDO 0134.00 /*( 単独ライブラリーの検索 )*/ 0135.00 ELSE CMD(DO) 0136.00 CHKOBJ OBJ(&SRCLIB/&SRCFIL) OBJTYPE(*FILE) 0137.00 OVRDBF FILE(SRCFIL) TOFILE(&SRCLIB/&SRCFIL) + 0138.00 MBR(&SRCMBR) SECURE(*YES) OVRSCOPE(*JOB) 0139.00 CALL PGM(QUATTRO/SCNSRC) PARM(&STRING &EXCLUDE + 0140.00 &ONCE) 0141.00 MONMSG CPF4102 0142.00 DLTOVR FILE(SRCFIL QPRINT) LVL(*JOB) 0143.00 MONMSG CPF9800 0144.00 ENDDO 0145.00 0146.00 IF COND(&OUTPUT *NE '*PRINT') THEN(DO) 0147.00 DSPSPLF FILE(QPRINT) SPLNBR(*LAST) 0148.00 ENDDO 0149.00 IF COND(&OUTPUT *EQ '*') THEN(DO) 0150.00 DLTSPLF FILE(QPRINT) SPLNBR(*LAST) 0151.00 ENDDO 0152.00 IF COND(&OUTPUT *EQ '*BOTH') THEN(DO) 0153.00 RLSSPLF FILE(QPRINT) SPLNBR(*LAST) 0154.00 ENDDO 0155.00 SNDPGMMSG MSG(&SRCLIB *TCAT '/' *TCAT &SRCFIL *TCAT + 0156.00 ' の原始メンバー ' *TCAT &SRCMBR *TCAT + 0157.00 ' を検索した ') MSGTYPE(*DIAG) 0158.00 RETURN 0159.00 ERROR: RCVMSG RMV(*NO) MSG(&MSG) 0160.00 SNDMSG: SNDPGMMSG MSG(&MSG) MSGTYPE(*DIAG) 0161.00 ENDPGM
CRTCLPGM PGM(MYOBJLIB/SCNSRCCL) SRCFILE(MYSRCLIB/QCLSRC) AUT(*ALL)
0001.00 H DFTNAME(SCNSRC) DATEDIT(*YMD/) 0002.00 F********** 原始メンバーの翻訳 *********************************** 0003.00 FSRCFIL IP F 92 DISK 0004.00 F INFDS(INFDS) 0005.00 FQPRINT O F 132 PRINTER OFLIND(*INOF) 0006.00 F FORMLEN(66) 0007.00 F FORMOFL(62) 0008.00 F***************************************************************** 0009.00 * 2017/01/22: 漢字の文字列で検索する場合シフト文字を除去する 0010.00 D OE S 1A INZ(X'0E') 0011.00 D OF S 1A INZ(X'0F') 0012.00 D N S 4S 0 0013.00 D AR S 1 DIM(80) 0014.00 D HDR S 34 DIM(2) CTDATA PERRCD(1) 0015.00 D INFDS DS 0016.00 D* FILNAM: 実際に OPEN されている ファイル 名 0017.00 D FILNAM 83 92 0018.00 D* FILLIB: 実際に FILNAM を OPEN している ライブラリー 名 0019.00 D FILLIB 93 102 0020.00 D* MBRNAM: メンバー 名 0021.00 D MBRNAM 129 138 0022.00 D* RECRRN: 入出力 ヤラーヌ゙ の RRN 0023.00 D RECRRN 397 400B 0 0024.00 ISRCFIL AA 01 0025.00 I 1 92 SRCDTA 0026.00 I 1 6 SRCNOA 0027.00 I 13 92 CMPSRC 0028.00 C*----------------------------------------------------+ 0029.00 C* 他の パレg゙wヨ からの CALL---r゚wリーnー の受取 * 0030.00 C*----------------------------------------------------+ 0031.00 C *ENTRY PLIST 0032.00 C PARM STRING 80 0033.00 C PARM EXCLUDE 4 0034.00 C PARM ONCE 4 0035.00 C*----------------------------------------------------+ 0036.00 C MBRNAM IFNE BEFNAM 0037.00 C SETON 80 0038.00 C MOVE MBRNAM BEFNAM 0039.00 C *LIKE DEFINE MBRNAM BEFNAM 0040.00 C EXCLUDE IFEQ '*YES' 0041.00 C SETON 80 0042.00 C '_' SCAN MBRNAM 50 0043.00 C 50 SETOFF 80 0044.00 C ENDIF 0045.00 C ENDIF 0046.00 *( N80: 表示しない ) 0047.00 C N80 GOTO END 0048.00 C* 0049.00 C STRING:L SCAN CMPSRC:1 N 50 0050.00 C *IN50 IFEQ *ON 0051.00 C EXSR NOCHK 0052.00 C*----------------------------------------------------+ 0053.00 C SETON 42 0054.00 C EXSR OUTPUT 0055.00 C*----------------------------------------------------+ 0056.00 *( 1 度きりの表示 ) 0057.00 C ONCE IFEQ '*YES' 0058.00 C SETOFF 80 0059.00 C ENDIF 0060.00 C END 0061.00 C END TAG 0062.00 * 0063.00 CLR KENSU COMP *ZEROS 48 0064.00 C*----------------------------------------------------+ 0065.00 CLR SETON 49 0066.00 CLR EXSR OUTPUT 0067.00 C*----------------------------------------------------+ 0068.00 C****************************************************** 0069.00 C *INZSR BEGSR 0070.00 C****************************************************** 0071.00 C MOVE STRING STRING_B 0072.00 C *LIKE DEFINE STRING STRING_B 0073.00 C RECRRN IFEQ *ZEROS 0074.00 C RETURN 0075.00 C ENDIF 0076.00 C*( 2017/01/22: シフト文字を外す ) 0077.00 C MOVEA STRING AR 0078.00 C OE SCAN STRING:1 N 50 0079.00 C DOW *IN50 = *ON 0080.00 C MOVE ' ' AR(N) 0081.00 C MOVEA(P) AR STRING 0082.00 C OE SCAN STRING:1 N 50 0083.00 C ENDDO 0084.00 C OF SCAN STRING:1 N 50 0085.00 C DOW *IN50 = *ON 0086.00 C MOVE ' ' AR(N) 0087.00 C MOVEA(P) AR STRING 0088.00 C OF SCAN STRING:1 N 50 0089.00 C ENDDO 0090.00 C EVAL STRING = %TRIML(STRING) 0091.00 C* 0092.00 C MOVE *BLANKS SRCFLB 21 0093.00 C FILLIB CAT '/':0 SRCFLB 0094.00 C SRCFLB CAT FILNAM:0 SRCFLB 0095.00 C Z-ADD 1 S 4 0 0096.00 C NXTBLK TAG 0097.00 C ' ' SCAN STRING:S N 4 0 50 0098.00 C *IN50 IFEQ '1' 0099.00 C MOVEA STRING AR 0100.00 C MOVE *BLANKS FLD80 80 0101.00 C MOVEA AR(N) FLD80 0102.00 C FLD80 IFNE *BLANKS 0103.00 C S ANDLT 80 0104.00 C N ADD 1 S 0105.00 C GOTO NXTBLK 0106.00 C END 0107.00 C N SUB 1 L 4 0 0108.00 C END 0109.00 C L IFEQ *ZEROS 0110.00 C SETON LR 0111.00 C LR RETURN 0112.00 C END 0113.00 C INZEND ENDSR 0114.00 C****************************************************** 0115.00 C NOCHK BEGSR 0116.00 C****************************************************** 0117.00 C MOVEA *BLANKS AR 0118.00 C MOVEA SRCNOA AR 0119.00 C 1 DO 6 N 4 0 0120.00 C AR(N) IFEQ '0' 0121.00 C MOVE ' ' AR(N) 0122.00 C ELSE 0123.00 C LEAVE 0124.00 C END 0125.00 C END 0126.00 C MOVEA AR SRCNOA 0127.00 C MOVEL SRCNOA SRCNO1 4 0128.00 C MOVE SRCNOA SRCNO2 2 0129.00 C MOVE *BLANKS SRCNO 7 0130.00 C SRCNO1 CAT '.':0 SRCNO 0131.00 C SRCNO CAT SRCNO2:0 SRCNO 0132.00 C ENDSR 0133.00 C****************************************************** 0134.00 C *PSSR BEGSR 0135.00 C****************************************************** 0136.00 C ENDSR '*CANCL' 0137.00 C****************************************************** 0138.00 C OUTPUT BEGSR 0139.00 C****************************************************** 0140.00 C N40 SETON 4041 0141.00 C EXCEPT 0142.00 C OF SETOFF 40OF 0143.00 C SETOFF 414243 0144.00 C SETOFF 444546 0145.00 C SETOFF 474849 0146.00 C ADD 1 KENSU 4 0 0147.00 C ENDSR 0148.00 OQPRINT E 41 2 06 0149.00 O UDATE Y 8 0150.00 O 14 ' 作成 ' 0151.00 O HDR(1) 84 0152.00 O 129 'PAGE.' 0153.00 O PAGE Z 132 0154.00 O E 41 1 0155.00 O 10 ' 文字列 :' 0156.00 O STRING_B 91 0157.00 O E 41 1 0158.00 O 14 ' 原始ファイル ' 0159.00 O SRCFLB 35 0160.00 O E 41 1 0161.00 O 24 '----------------------- 0162.00 O 48 '----------------------- 0163.00 O 72 '----------------------- 0164.00 O 96 '----------------------- 0165.00 O 120 '----------------------- 0166.00 O 132 '------------' 0167.00 O E 41 1 0168.00 O 14 ' 原始メンバー ' 0169.00 O 32 ' ステートメント ' 0170.00 O 42 ' 桁位置 ' 0171.00 O 64 ' 原始ステートメント ' 0172.00 O E 41 2 0173.00 O 24 '----------------------- 0174.00 O 48 '----------------------- 0175.00 O 72 '----------------------- 0176.00 O 96 '----------------------- 0177.00 O 120 '----------------------- 0178.00 O 132 '------------' 0179.00 O*( 明細行 ) 0180.00 O E 42 1 0181.00 O MBRNAM 12 0182.00 O SRCNO 27 0183.00 O N Z 40 0184.00 O CMPSRC 122 0185.00 O E 42 1 0186.00 O E 48 1 0187.00 O HDR(2) 64 0188.00 O E 49 1 0189.00 O* 20 ' 【合計】 ' 0190.00 O E 49 1 0191.00 O 40 ' 処理件数 ' 0192.00 O 57 '. . . . . . . . .' 0193.00 O KENSU 2 65 0194.00 DR 0194.00 ** HDR 0195.00 原始文字列の検索 0196.00 見つかったレコードはありません
CRTBNDRPG PGM(MYOBJLIB/SCNSRC) SRCFILE(MYSRCLIB/QRPGLESRC) DFTACTGRP(*NO) + ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)
0001.00 H DFTNAME(SCNUSR) DATEDIT(*YMD/) 0002.00 F********** 原始メンバーの翻訳 *********************************** 0003.00 FSRCFIL IF F 92 DISK 0004.00 F INFDS(INFDS) 0005.00 FQPRINT O F 132 PRINTER OFLIND(*INOF) 0006.00 F FORMLEN(66) 0007.00 F FORMOFL(62) 0008.00 F***************************************************************** 0009.00 * 2017/01/22: 漢字の文字列で検索する場合シフト文字を除去する 0010.00 D OE S 1A INZ(X'0E') 0011.00 D OF S 1A INZ(X'0F') 0012.00 D N S 4S 0 0013.00 D AR S 1 DIM(80) 0014.00 D HDR S 34 DIM(2) CTDATA PERRCD(1) 0015.00 D INFDS DS 0016.00 D* FILNAM: 実際に OPEN されている ファイル 名 0017.00 D FILNAM 83 92 0018.00 D* FILLIB: 実際に FILNAM を OPEN している ライブラリー 名 0019.00 D FILLIB 93 102 0020.00 D* MBRNAM: メンバー 名 0021.00 D MBRNAM 129 138 0022.00 D* RECRRN: 入出力 z[ーq゙ の RRN 0023.00 D RECRRN 397 400B 0 0024.00 ISRCFIL AA 01 0025.00 I 1 92 SRCDTA 0026.00 I 1 6 SRCNOA 0027.00 I 13 92 CMPSRC 0028.00 C*----------------------------------------------------+ 0029.00 C* 他の プログラム からの CALL---パラメーター の受取 * 0030.00 C*----------------------------------------------------+ 0031.00 C *ENTRY PLIST 0032.00 C PARM STRING 80 0033.00 C PARM EXCLUDE 4 0034.00 C PARM ONCE 4 0035.00 C PARM LR 1 0036.00 C*----------------------------------------------------+ 0037.00 C DO *HIVAL 0038.00 C SETOFF 50 0039.00 C READ SRCFIL 50 0040.00 C 50 LEAVE 0041.00 C MBRNAM IFNE BEFNAM 0042.00 C SETON 80 0043.00 C MOVE MBRNAM BEFNAM 0044.00 C *LIKE DEFINE MBRNAM BEFNAM 0045.00 C EXCLUDE IFEQ '*YES' 0046.00 C SETON 80 0047.00 C '_' SCAN MBRNAM 50 0048.00 C 50 SETOFF 80 0049.00 C ENDIF 0050.00 C ENDIF 0051.00 *( N80: 表示しない ) 0052.00 C N80 GOTO END 0053.00 C* 0054.00 C STRING:L SCAN CMPSRC:1 N 50 0055.00 C *IN50 IFEQ *ON 0056.00 C EXSR NOCHK 0057.00 C*----------------------------------------------------+ 0058.00 C SETON 42 0059.00 C EXSR OUTPUT 0060.00 C*----------------------------------------------------+ 0061.00 *( 1 度きりの表示 ) 0062.00 C ONCE IFEQ '*YES' 0063.00 C SETOFF 80 0064.00 C ENDIF 0065.00 C END 0066.00 C END TAG 0067.00 C ENDDO 0068.00 * 0069.00 C LR IFEQ '*' 0070.00 C SETON LR 0071.00 C KENSU COMP *ZEROS 48 0072.00 C*----------------------------------------------------+ 0073.00 C SETON 49 0074.00 C EXSR OUTPUT 0075.00 C*----------------------------------------------------+ 0076.00 C ENDIF 0077.00 C RETURN 0078.00 C****************************************************** 0079.00 C *INZSR BEGSR 0080.00 C****************************************************** 0081.00 C MOVE STRING STRING_B 0082.00 C *LIKE DEFINE STRING STRING_B 0083.00 C RECRRN IFEQ *ZEROS 0084.00 C RETURN 0085.00 C ENDIF 0086.00 C*( 2017/01/22: シフト文字を外す ) 0087.00 C MOVEA STRING AR 0088.00 C OE SCAN STRING:1 N 50 0089.00 C DOW *IN50 = *ON 0090.00 C MOVE ' ' AR(N) 0091.00 C MOVEA(P) AR STRING 0092.00 C OE SCAN STRING:1 N 50 0093.00 C ENDDO 0094.00 C OF SCAN STRING:1 N 50 0095.00 C DOW *IN50 = *ON 0096.00 C MOVE ' ' AR(N) 0097.00 C MOVEA(P) AR STRING 0098.00 C OF SCAN STRING:1 N 50 0099.00 C ENDDO 0100.00 C EVAL STRING = %TRIML(STRING) 0101.00 C* 0102.00 C MOVE *BLANKS SRCFLB 21 0103.00 C FILLIB CAT '/':0 SRCFLB 0104.00 C SRCFLB CAT FILNAM:0 SRCFLB 0105.00 C Z-ADD 1 S 4 0 0106.00 C NXTBLK TAG 0107.00 C ' ' SCAN STRING:S N 4 0 50 0108.00 C *IN50 IFEQ '1' 0109.00 C MOVEA STRING AR 0110.00 C MOVE *BLANKS FLD80 80 0111.00 C MOVEA AR(N) FLD80 0112.00 C FLD80 IFNE *BLANKS 0113.00 C S ANDLT 80 0114.00 C N ADD 1 S 0115.00 C GOTO NXTBLK 0116.00 C END 0117.00 C N SUB 1 L 4 0 0118.00 C END 0119.00 C L IFEQ *ZEROS 0120.00 C SETON LR 0121.00 C LR RETURN 0122.00 C END 0123.00 C INZEND ENDSR 0124.00 C****************************************************** 0125.00 C NOCHK BEGSR 0126.00 C****************************************************** 0127.00 C MOVEA *BLANKS AR 0128.00 C MOVEA SRCNOA AR 0129.00 C 1 DO 6 N 4 0 0130.00 C AR(N) IFEQ '0' 0131.00 C MOVE ' ' AR(N) 0132.00 C ELSE 0133.00 C LEAVE 0134.00 C END 0135.00 C END 0136.00 C MOVEA AR SRCNOA 0137.00 C MOVEL SRCNOA SRCNO1 4 0138.00 C MOVE SRCNOA SRCNO2 2 0139.00 C MOVE *BLANKS SRCNO 7 0140.00 C SRCNO1 CAT '.':0 SRCNO 0141.00 C SRCNO CAT SRCNO2:0 SRCNO 0142.00 C ENDSR 0143.00 C****************************************************** 0144.00 C OUTPUT BEGSR 0145.00 C****************************************************** 0146.00 C N40 SETON 4041 0147.00 C EXCEPT 0148.00 C OF SETOFF 40OF 0149.00 C SETOFF 414243 0150.00 C SETOFF 444546 0151.00 C SETOFF 474849 0152.00 C ADD 1 KENSU 4 0 0153.00 C ENDSR 0154.00 C****************************************************** 0155.00 C *PSSR BEGSR 0156.00 C****************************************************** 0157.00 C ENDSR '*CANCL' 0158.00 OQPRINT E 41 2 06 0159.00 O UDATE Y 8 0160.00 O 14 ' 作成 ' 0161.00 O HDR(1) 84 0162.00 O 129 'PAGE.' 0163.00 O PAGE Z 132 0164.00 O E 41 1 0165.00 O 10 ' 文字列 :' 0166.00 O STRING_B 91 0167.00 O E 41 1 0168.00 O 14 ' 原始ファイル ' 0169.00 O SRCFLB 35 0170.00 O E 41 1 0171.00 O 24 '----------------------- 0172.00 O 48 '----------------------- 0173.00 O 72 '----------------------- 0174.00 O 96 '----------------------- 0175.00 O 120 '----------------------- 0176.00 O 132 '------------' 0177.00 O E 41 1 0178.00 O 14 ' 原始メンバー ' 0179.00 O 32 ' ステートメント ' 0180.00 O 42 ' 桁位置 ' 0181.00 O 64 ' 原始ステートメント ' 0182.00 O E 41 2 0183.00 O 24 '----------------------- 0184.00 O 48 '----------------------- 0185.00 O 72 '----------------------- 0186.00 O 96 '----------------------- 0187.00 O 120 '----------------------- 0188.00 O 132 '------------' 0189.00 O*( 明細行 ) 0190.00 O E 42 1 0191.00 O MBRNAM 12 0192.00 O SRCNO 27 0193.00 O N Z 40 0194.00 O CMPSRC 122 0195.00 O E 42 1 0196.00 O E 48 1 0197.00 O HDR(2) 64 0198.00 O E 49 1 0199.00 O* 20 ' 【合計】 ' 0200.00 O E 49 1 0201.00 O 40 ' 処理件数 ' 0202.00 O 57 '. . . . . . . . .' 0203.00 O KENSU 2 65 0204.00 ** HDR 0205.00 原始文字列の検索 0206.00 見つかったレコードはありません
CRTBNDRPG PGM(MYOBJLIB/SCNUSR) SRCFILE(MYSRCLIB/QRPGLESRC) DFTACTGRP(*NO) + ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)