新規投稿 記事一覧 ホーム
●ご利用方法,ご利用に際しての規約はこちらをお読みください。
こちらからの投稿は、先頭に表示されているコメントへの返信になります。
RE:タブ区切り結合データの再分割 IKD さん [ 7月26日(木) 10時2分 ]

    RPG であればレコードを外部定義として配列でオーバーレイ定義して
    LOOKUP で分割を繰り返すことができます。
    以下はテストはしていませんがサンプルとして作成したソースです。
    また C/400 であれば、strtok いう分割用の関数がありますので
    もっと簡単になります。
    RPG から分割対象のフィールドのポインターをパラメータとして
    渡せば、この C/400 を使って項目を取り出すことができます。

    【PPG サンプル: TESTTOK 】
    http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGLESC.FILE/TESTTOK.MBR
    ------------------------------------------------------------------------------------------
    -----
    0001.00 H DFTNAME(TESTTOK) DATEDIT(*YMD/)                                       
    0002.00 F******** 項目の分割 ************************************************** 
    0003.00 FDATAFL    IF   E           K DISK                                      
    0004.00 F********************************************************************** 
    0005.00 D DDS001        E DS                  EXTNAME(DATAFL)                   
    0006.00 D  VAR                    1   1024                                      
    0007.00 D                                     DIM(1024)                         
    0008.00 D CRLF            S              1B 0 INZ(X'00')                        
    0009.00 D LEN             S              4S 0                                   
    0010.00 C                   Z-ADD     1             M                 4 0       
    0011.00 C                   DO        *HIVAL                                    
    0012.00 C     CRLF          LOOKUP    VAR(N)                                 50 
    0013.00 C     *IN50         IFEQ      *ON                                       
    0014.00 C                   SUB       1             N                           
    0015.00 C                   EVAL      LEN = N - M + 1                           
    0016.00 C     LEN           SUBST     DDS01:M       ITEM            256         
    0017.00 C     N             ADD       2             M                           
    0018.00 C                   ELSE                                                
    0019.00 C                   LEAVE                                               
    0020.00 C                   END                                                 
    0021.00 C                   END
    ------------------------------------------------------------------------------------------
    -----
    【C/400 サンプル: TESTTOK】
    http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QCSRC.FILE/TESTTOK.MBR
    ------------------------------------------------------------------------------------------
    -----
    0001.00 #include <stdio.h>                              
    0002.00 #include <stdlib.h>                             
    0003.00 #include <string.h>                             
    0004.00                                                 
    0005.00 #define TRUE         0                          
    0006.00 #define FALSE       -1                          
    0007.00                                                 
    0008.00 int  main(int argc, char *argv[]){              
    0009.00    char* str;                                   
    0010.00    char* tokenPtr;                              
    0011.00                                                 
    0012.00    memcpy(str, argv[1], 16);                    
    0013.00    tokenPtr = strtok(str, 0x05);                
    0014.00    while(tokenPtr != NULL){/*while*/            
    0015.00      printf("tokenPtr = %sn", tokenPtr);       
    0016.00      tokenPtr = strtok(NULL, 0x05);             
    0017.00    }/*while*/                                   
    0018.00 }                                               
    ------------------------------------------------------------------------------------------
    -----

お名前
パスワード
e-mailアドレス
タイトル
ホームページ
アドレス