2009-12-08 3 views
1

Я работаю в области EDI и хотел бы помочь с макросом EDIFACT, чтобы сделать файлы EDIFACT более удобочитаемыми.EDIFACT macro (читаемая структура сообщений)

сообщение выглядит следующим образом:

data'data'data'data' 

Я хотел бы иметь макрос, преобразующий структуру:

data' 
data' 
data' 
data' 

Pls дайте мне знать, как это сделать. Спасибо заранее!

BR Jonas

+0

В какое приложение вы бы написать макрос? –

ответ

2

Если вы просто хотите, чтобы просмотреть файлы в более удобном для чтения формате, попробуйте загрузить Softshare EDI Notepad. Это довольно хороший инструмент для этой цели, он поддерживает стандарты X12, EDIFACT и TRADACOMS, и это бесплатно.

0

Это вы что искали?

Option Explicit 

Dim stmOutput: Set stmOutput = CreateObject("ADODB.Stream") 
stmOutput.Open 
stmOutput.Type = 2 'adTypeText 
stmOutput.Charset = "us-ascii" 

Dim stm: Set stm = CreateObject("ADODB.Stream") 
stm.Type = 1 'adTypeBinary 
stm.Open 
stm.LoadFromFile "EDIFACT.txt" 

stm.Position = 0 
stm.Type = 2 'adTypeText 
stm.Charset = "us-ascii" 

Dim c: c = "" 
Do Until stm.EOS 
    c = stm.ReadText(1) 
    Select Case c 
    Case Chr(39) 
     stmOutput.WriteText c & vbCrLf 
    Case Else 
     stmOutput.WriteText c 
    End Select 
Loop 


stm.Close 
Set stm = Nothing 

stmOutput.SaveToFile "EDIFACT.with-CRLF.txt" 
stmOutput.Close 
Set stmOutput = Nothing 

WScript.Echo "Done." 
2

Замена в VIM (при условии, что стандартные EDIFACT сепараторы/управляющие символы для набора символов ЮНОА используются):

:s/\([^?]'\)\(.\)/\1\r\2/g 

Ломая регулярное выражение:
\([^?]'\) - поиск ', которое происходит после любого символа, кроме ? (стандартный escape-символ) и захватить эти два символа в качестве первого атома. Это два последних символа каждого сегмента.
\(.\) - Захват любого символа, следующий терминатор сегмента (т. Е не совпадает, если терминатор сегмента уже в конце строки)

Затем замените все матчи на этой линии с новой линией между сегментом терминатора и начала следующего сегмента.

В противном случае вы могли бы в конечном итоге с этим:

... 
FTX+AAR+++FORWARDING?: Freight under Vendor?' 
s care.' 
NAD+BY+9312345123452' 
CTA+PD+0001:Terence Trent D?' 
Arby' 
... 

вместо этого:

... 
FTX+AAR+++FORWARDING?: Freight under Vendor?'s care .' 
NAD+BY+9312345123452' 
CTA+PD+0001:Terence Trent D?'Arby' 
... 
Смежные вопросы