[英]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.