Tools

57. すべてのソース・ファイルを検索する SCNSRC

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 はすべてのユーザー・ライブラリーの中を
検索することができる。
多くのソース・ライブラリーを保有しているユーザーにとって
非常に役に立つツールになると信じている。

【 コマンド : 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)        

【 CLP : SRCSRCCL 】
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)

【 RPG : SRCSRC 】
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)                                   

【 RPG : SRCUSR 】
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)