簡體   English   中英

動態解析文本文件

[英]Dynamically parsing the text file

我有一個要求導入文本文件。

文本文件中的一些內容有 static 出現,一些有動態。

例子:

H0X004010850TPQ0030030030030032021/03/1710:34:450

H100DEVTEST01

H2PQ003003003003003

H3CP001001001001001PP002002002002002

D1DEVTEST01

D2T-010

S1100000

這個 H0,H1,H2,H3 和 S1 在一個文件中只出現一次,但 D1 和 D2 可以出現多次。

如果我有 static 內容數量,則以下內容效果很好。 但是,如果我的 D1 和 D2 出現多次,這將失敗。

任何人都可以幫助我解決這個問題嗎?

DEFINE TEMP-TABLE TT-File 

FIELDS H0 AS CHAR

FIELDS H1 AS CHAR

FIELDS H2 AS CHAR

FIELDS H3 AS CHAR

FIELDS H4 AS CHAR

FIELDS D1 AS CHAR

FIELDS D2 AS CHAR

FIELDS S1 AS CHAR.

DEFINE VARIABLE W-IMPORT-FILE      AS CHARACTER   NO-UNDO.
DEFINE VARIABLE W-COUNT            AS INTEGER     NO-UNDO.


ASSIGN W-IMPORT-FILE = "C:\Temp\Manny.txt".
INPUT FROM VALUE(W-IMPORT-FILE).
    ASSIGN W-COUNT = 0.
    REPEAT TRANSACTION:
        
        CREATE TT-File.            
        IMPORT UNFORMATTED TT-File.H0.
        IMPORT UNFORMATTED TT-File.H1.
        IMPORT UNFORMATTED TT-File.H2.
        IMPORT UNFORMATTED TT-File.H3.
        IMPORT UNFORMATTED TT-File.D1.
        IMPORT UNFORMATTED TT-File.D2.
        IMPORT UNFORMATTED TT-File.S1.                
            
    END.
INPUT CLOSE.

FOR EACH TT-File:
    IF SUBSTRING(TT-File.H1,1,2) = "H0":U THEN
        MESSAGE "Header 0 is available to parse":U. 
END.

由於沒有關於標題等實際作用的信息,因此很難給出一個很好的答案。 如果一個行/標題改變了另一行的含義,那么臨時表可能是一個好主意。 但是,如果每一行都是它自己的小宇宙,我不會打擾臨時表,而是自己處理每一行。

像這樣的東西(您需要填寫 CASE 語句的所有塊)。

DEFINE VARIABLE W-IMPORT-FILE      AS CHARACTER   NO-UNDO.
DEFINE VARIABLE W-COUNT            AS INTEGER     NO-UNDO.

DEFINE VARIABLE cImport            AS CHARACTER   NO-UNDO.
DEFINE VARIABLE cHeader            AS CHARACTER   NO-UNDO.


ASSIGN W-IMPORT-FILE = "C:\Temp\Manny.txt".
INPUT FROM VALUE(W-IMPORT-FILE).
    ASSIGN W-COUNT = 0.
    REPEAT TRANSACTION:
        IMPORT UNFORMATTED cImport.

        cHeader = SUBSTRING(cImport,1,2).

        CASE cHeader:
            WHEN "H0" THEN DO:

            END.
            WHEN "H1" THEN DO:

            END.
            WHEN "H2" THEN DO:

            END.
            WHEN "H3" THEN DO:

            END.
            WHEN "H4" THEN DO:

            END.
            WHEN "D1" THEN DO:

            END.
            WHEN "D2" THEN DO:

            END.    
            WHEN "S1" THEN DO:

            END.
        END.

        W-COUNT = W-COUNT + 1.             
            
    END.
INPUT CLOSE.

>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM