Translator Version 3.0 TIE Holding N.V

Feb 15, 2005 - Hierarchical database model. 4. 1.4.3. EDI concepts. 5. 1.4.4 .... and what to do to solve / avoid them. ... In practice this means you may obtain a ...... is defined as: the tag occurs in the list, and a test for inequality is defined as: ...
839KB taille 57 téléchargements 239 vues
!

"# $ %

&' ( ")* + , &' ( ")* ---.

!.//000 " . 23

1 1

'

48 9-: ;< =

' *+ 1 '

5(

*

(

!

"# $ %

&' "( ")* &' "( ")* !.//000 23

1

1




2

A

B

C

D

A

B

E

F

1 2

A A

XXX YYY

UUU VVV

1 1

A A

111 222

ABC DEF

2

C

ZZZ

WWW

2

A

333

GHI

2

C

444

JKL

2

C

555

MNO

primary key

1 ?

foreign key

!1 2 1 !? 2 0

%5 1

! 5% 5 0 0 5 1 2 0 1 .

2 1 1

4 !5 #

6 #

7"(

* 15

2 0

! 1

2 >

1

%5

1 ?

5

1 ?

0 ! 5% 5 1 !

5% 5 1

'

1 ? 1 5 2

1

0

.= 5 2

%5 %5

*/ (/(

*

(

Joining

G

1

-

1 2

0

2

1 2

A A

and

1 1

C

D

XXX YYY

UUU VVV

2

$ 1 0

?

0

1

results in:

0

A

B

C

D

1 1

A A

XXX YYY

UUU VVV

2

A

XXX

UUU

2

A

YYY

VVV

1

0 2 1 0

2 ?

=

@((

J

5

2

2 2

1 , 5

!! 1 0

K 15 1 0 0

1 0 5. 1 2 1

1

2

=

1 1 5 ? 5

2 2 2 2

B

1

0

J

A

!2 22

2 5!

K # ?

2

?0 2

15

51 -

2

2 2 2 1 2

5! ? 2

2

-

8 ? 0

?

1

0 5!

2 2 •

!! 2

5! ?



5!



5!

0

0

? ?

5! ? ,

0

! %1 -

5! ?

1

5! 2

0

2 5

0 0 5.

5

" %

5! 2

5! .

typeA

typeB

typeC

typeD

typeE ? typeA

5! ? typeB 5! ? typeA 2 5! typeC? 0 2 5! typeA? 0

1

typeF

typeG 2 5! typeE? 0 51 2 ?

typeG 5! 1

? 5

? ? 20

? typeC typeD ?1 2 5! typeC 2 0 1 .

recno: type: 1 2 3 4 5 6 7

typeA typeB typeD typeA typeC typeE typeE

( 5? 1 1 5! ? 4 !5 #

'1

?

*1

2 0

0 0 6 #

? ,! 7"(

?0 !

* 15

0

2typeC 0 1

@

+ 1 0

@ , ! ?

) 2

2

71 2 5! typeA # 2 5

* 1

*/ (/(

*

'

./ % ! !

,

2 !2 5

9

5? ,

21 2

2

! 2 2

!

2

B / ; + 4 =

0 B

=

!

! ! J= < K

+

,

+

2 ? > A=:

1

! ?

!

# ?

!

1 15

!!

9 ?0 2 2 2 AuctionBlock -

'() 2 2A=: 15 version 1 PB

1

5

2

!!

2 A=:

49; Q 2

A=: 1.0? 0

? 2 A=: ! ?

?

2 1

?

1 2 5 ? %! 2 . ? !5 5 1 ?0 % 5RS ! 1 ? ? ?0 , ! 2

2 !

2

1996 Price

Linda ?

? ! 0

2

2 A=:

0

?

1

! 1 15

!

A=:

:%

5 A=: ? H 5 2 -

? A=: 2 2

6 #

7"(

* 15

1

?

!

2 ? 1 2 2 A=: % ? !! XPATH 1.0 J PA QK H 2 2 2 1 ; 1 2 ,1 ? H ! ?0 1 0 2 !"15" ! !! ! , 1 ! !! A=:? ?0 0 ! A=: 2 ?0 = : A=: 5 1 ,!

2 5 !

51 2 2 ,1 5 2 2 A=: % 5 ;

1 4 !5 #

0 ! 0

? A=: !

2

!5

2 ?

2

?

!5 ,

51

auction.dtd? 5! 2 !

2

5 0

2A=:

0

1 5

2

! 5

1 !

"1 2

7

*/ (/(

*

2

? ;

5

*

5

,

+ " %

0 5 2 1 9 0 0 !

1

::= 0

1

5 , 2 2 0 2

?0

,

1

0

2 !

,! ,! •

P * Q



T * U * + * ,



* +| * ,

* +



* *


2* ?

>

0

2

2 [

1 0

5

5? 1

J

*

*

+ ]K

* ,

!

2 !

2

(?

0

5

.

::= [ ] [ ] [ ] * 2 0

!

2

! 15

2

;2 5 2 ? ! 2

! 5 "

> 0 5

2 ?0

1

; 52 0? 1 ! ! 2 2

0 0

?0

15

2 1 -

! 2 0

/ , 5 +

2

,

! ?

.

:VERSION ETC 3.0 !

2



.

::= ″:VERSION″ ″ETC″

% "

4 !5 #

"+

6 #

N 2

7"(

5

* 15

15

!

2

2

2

!

>1

*/ (/(

*

'

(? 5 ?0

!

0

1

0 !

,!

?1 150

!

5 -

, 2

0

!

. ::= { | | } + ?0

!

B 2 * C 0

5

2 ,? J

?

1

2 K

?

1

/

?

%

0" 1

8 0

2 5 0

# #

J

4 !5 #

% 50

!

6 #

7"(

* 15

2 5 , 2

!

?5 0

2

% K

*/ (/(

*

%&% $

-

!' (#)*

, !



?!

1 !

1 !

;

!

2 50

$1J K

0 0 5.

5

?



!

2

1

,

) -

$1

15 5 , 2 O ! K.

5 1

4? %

ETC V PV PV -

WV - WV WQ PV WQ

,

!

!

V

W. 0 C CSEG CV T TV

W. J!

V

2

W.

! 2

-

0

0 5J

$1

1

('2

!

K.

1 J

2

! V

2

V

2 "

2

2

W. J! -

K?

? W? W

2

J

K

2

W. ! ! J

K? 2

! 2

W. !

5?

; 2 ? 2

2

"

2

2 2

! 52

2

1 !

2

:MESSAGE

K

W.

0 W

" !

"

2

2 1 !

2 2

2

0

J0 2 2

:INHOUSE 2

K

; #

2 :INHOUSE

" 2

"

2 0

:GLOBAL :GLOBAL

2

2

" 2

2

K?

"

K !

2

2

!

?

2 " 0 2

! 20

2

2J! @

15

K

!

2

2

J0

! !

J

V V -

2 ?! 1 50 ! 2 :INHOUSE 2 " 2 :INHOUSE :INHOUSE 2 " 2 ? "

"

! .

"

2 ! 5

2 ,

!

2 2

! ! 6 #

! 2 0 1 2 % % 7"(

* 15

9; 4

?0

!

$1?

0

4 !5 #

2 5 J

W

1

? 2

2

! 0

2

V -

V

2$1 0 0 0

K

WV WQ

2

? 0

W

-

2

%

W

V

V

-

?

% 2

0 ! 2

! 2

2

0

2 2 ?1

2; 2 ; 2 0 ,

!

1 0: OK? 2 ?

0

2 .rsp

. */ (/(

*

'

V

-

W?V

2

0

W?V

*W

15

7

2 ! 2

2$1 0 .

2 ETC V

-

?

-

W!

! 2 ! 2 2 0 .

2 2 V V

2 W P?V -

-

V

W? V -

2 -

V -

-

K

V 0

, W, V

W, V

15

2

1 0: OK? 2 ?

! 0

2

2

WQ

2

2$1 ? 2 .rsp

!

-

2 ; 2 ; 2 1

W? -

2 5 !

$1

1 2 ?

"

0 0

2 ?1

2 5

$1 ! 2!

"

5 W!

2 2

W? V WQ P?V -

!

! 2

2

J! $1

W? V WQ P?V

W2

!

15 !

W

V

5

1

!

! 2 , ! . " !

2 0

1 ! 2

2 0 !

?

1 2

%

%

2

2 0 .

*W

,

$1?

0

0 2

! 2

% 2 2

! 2

! -

2 2

!

9! 1

2!

51 ! 2 0

0 # ; %!

-c

0 5

!!

A=: 2 0

2

-bV W

!

-

-g

; 1

; ;?

2

,

-f

1 2 2

V W

2

-i

"

-l

%!

-m

2 !

; 2 ! W

-

-s

2 V !!

!" J2

-v

G

-wV . W 6 #

! 2

7"(

W

!5

-t

4 !5 #

1

.


2

MaxSegmentLength

2 2

> 2

No

A=: 2 5

; ;? %! 2 0 Silent

!! 0

K 512

?2

2048

? 25 0 5 0 2 ? 2 ! ?5 0 ! 2 0 c:\program files\tie\ep\etc_w.22\etc.ini c:\program files\tie\ep\editie.ini 2 J 25 ! 2 ! c:\program files\tie\ep\etc_w.22\etc.exe). [etc_w.22] TraceToFile = Yes

!1

2 ! ,?

! ?

! 2 ! 2 2 22 2 2

2 ?1

2

2 1

5!

2

!

!

5

1

2. •

"



=



: %! 0 2 1

2 ? ! 15

!5 -s !

2

/9 J-i !

K?

/9 J-m !

K?

J-l ! 0

!

! -m -l 2 0 ; 2

-i -l 2 0

2 ! 1 15

2 2

J

5 ,! !

/9? 2

1 5

2

? 1

!!

5

% 2 * @ (* C

4 !5 #

K?

2

?

1 ,

0 2

2 2 50

? DISPLAY

SET TRACE %

2

*@ K

6 #

7"(

* 15

'

*/ (/(

*

,

! -#$*%

%

!

#!

( " " !

5

2 !!

2 J

2 51 2

2 2

((

;2 2 2 2 15 2 1

K

2

0

5

2 0 !

0

2 !

! 2

2 ;2 ?

0 5

: 5 ;2 2

5 5

!

1 J !




5 5 SDF 2 ">

5? TruncateSDF 5?

. DecimalSep? 0

1 0 1 2 Y,O 15 2 DecimalSep 1 FieldSep ( ' * @K 1

>

!

5

0

! -

2

5

2

= { ″”″ ″”″ } | { ″’″ ″’″ } = { ″”″ * ″”″ } | { ″’″ * ″’″ } ? ! %

2

? !

0

>

? % Y O H

!

H


'7('

2

H "

'7(@

0

! "

"

K

!

,

'7((

4 !5 #

J2,

5 "

'7(

0

2

!

4 6 #

7"(

* 15

)

*/ (/(

*

'

'7(*

4

'7() '7(7

1

%

'7(

!

'7(

5

4

J K? = 0

0

0 50

2 J K -

2 -

J 50

5? 0 K 5K 2

J

0

1

2

15 50

0 0

!

0 0

,

H

0 2

0 !

. ! 0 0

1

= 0

5 !

5 -

5

J%K? ? 0 ?1

?

! .

:WARNINGS 8 E 4 I 5

,

1

15.

::= ″:WARNINGS″ * ::= { ″E″ | ″I″ | ″M″ | ″W″ } ? 1

;0

, / .& 1

1

5

2

1

1

?

?

0

('

< 2

0

2 0 2

2 -

2

"

2 0

!

2

5 1

2

2A=:

?

A=: -

1


#

2

)

(

/9

)

'

,!

)

@

+

)

*

+

)

)

+

)

7

50

!! ?

2

0

1 2

!

0 0

B +" 15

)

B +"

)

B

,!

15 0

)

2

)

1

1

)

(

)

'

)

@

)

*

# !

)

)

+

4 !5 #

# !

2 2 1

1

6 #

7"(

* 15

0

! 1

! 2,

1 /0'()

52

2/0* N 0 7

A=: " */ (/(

*

)

7

4;

0

)

4

2 !

0

)

4

2

0

) (

4

2

0

) (

4

2

0

) ((

4

!

) ('

2 2

!

) (@

P

2Q

!5

5

52

2 ! 2,

2

1

0

!5B#

1

1

%

0 ) (*

1

) ()

1

!5

P

2

2Q

1

1

P

2

2Q

1

1

0 ) (7 % ) (

; 1

* 1

1

) (

2

1

! 2,

) '

2 2

52

0

) ' ) '(

2

) ''

P;

5! Z

) '@

Z

1

5

Q

!5

2 2

52

) '*

P

2

2Q

1

?

5

) ')

P

2

2Q

1

?

5

) '7

,

5

1

) '

,

5

1

) '

1

) @

; !

) @

= !

) @(

P;

0

!

;

1

5! Z

) @'

P

1

2Q

Q 1

! ?

2 2 2

) @)

, *

) @7

, *

2

5

) @@ ) @*

!

;94 C Z

2

0

2

,

!

!

2 52

0 0

2 "1

A=:

N

B +" ) A=:

N

) @ ) @

P

) *

4;

2

2Q 0

=

1

?

2

C

) * ) *( 4 !5 #

" 6 #

7"(

* 15

2!

2

5J

K */ (/(

*

'

) *'

# 2

,

) *@

5

5

2 !

) **

= !

0

) *)

1

) *7

4

) *

#

) *

#

) )

+ =

5?

"

2

*

%

N

B#: !

L

!

52 2

2

15 1

2 B#: M !

B#: !

M

2 2

2

B#:

2

1

2

) ) ) )(

4

2

0

) )'

4

2

0

) )@

4

2

0

) )*

= !

*

% 1

!5

N

) )) ) )7

0

) )

; ; !

2

1

5

1 2

) ) ) 7

4

!

) 7

;

) 7(

# H

; ; 1

!

) 7'

1

) 7@

1

1

) 7*

# !

1

) 7)

# !

1

) 77

! 2, ! 2, !

1

) 7

; 1 5

,

1

[+ A ;

* 1

1

2

15.

::= ″:XMLWARNINGS″ * 0

1

A=: 0

2

7

,/4 H

2 2

? 2

2

('* 5! 0 5 2 2

"

2

2

1

2

SUPA ORD24974 ART1000_43 4 !5 6 7"( # #

* 15

2 0

?0 0

5!

!

1 5

2

1 5 A A! !!

2 1

2 1 0 0 5!

2 2

! "

5! 2 + , ! ? ! 2 !! ? 2 orders.dat % %. 1

1

*/ (/(

*

ART4798_1 ORD24392 ART1424_4 ART4223_7 SUPB ORD25141 ART1231_32 ART5232_26

2

?

1 ! ! " 1

2 ART

B ?1 2 0

% %

?0 Article Article 0 ( [Detail] ( TypeA TypeB ) ) 2

0

5 , ! 2

5

! 1

"

1 . ORD 5 2 , 50 0 2

.

:INHOUSE orders "Order "order.dat" sdf Supplier 0 ( Order 0 ( Article 0 ) ) , ! ! 2 2 J ! 5! Supplier 1 0 +

;0

5! 2 1 ORD 1 ,! 5 2

Database" 999999

"Supplier Record"

999999

"Order Record"

999999

"Article Record"

" 1 2 order.dat 5! 0 =2 K !" 5 2 5 1 1 0 + 555555 Supplier 5 555555 Order ?0 1 0 + 555555 Article : 5 Article 51 2 ! 2 15 2 1 TypeA ? TypeB - 0 2 0 0 5. 999999 "Article Record" 0

999999

1 1

1 1

"Details"

"Detail Type A" "Detail Type B"

1

% %

.

SUPA ORD24974 ART1000_43 DTAthis is a detail of type A DTBthis is a detail of type B DTAthis is another detail of type A ART4798_1

Detail TypeB TypeA? TypeB

? 1

2

? ?

?0 ! !

4 !5 #

15 2

6 #

7"(

* 15

! ? ,

! !

(

0 15 5

;2

? 1 !

TypeA ?0

2 5! ; Detail !

2

15.

*/ (/(

*

'

:INHOUSE orders "Order "order.dat" sdf ( Supplier ( Order ( Article ) ) )

Database" 0

999999

"Supplier Group"

1 0

1 999999

"Supplier Record" "Order Group"

1 0

1 999999

"Order Record" "Article Group"

1

1

"Article Record"

2 1 2

?

! !! !? 0

B 0

!

2 ?2 0 5

? 1

. %

1

('*(# # 2 2

5! 2 5!

2 ;2 ?1 0

2 0

2 5 ? 2 % % , ! ? 20 0 1 ?0 % % .

2 2

! ?

0

"K

"Info A Record" "Info B Record" 2

!? 0

! 1

!?

0 2 2

?0

5

5 2 1

!

,

2 !

1

5

?

2 5 1

2 ,! 2 ?

2 0 + 0 5! 2 5 5! 2 2 , 5 ! % 2 2 !! ? 2 2

22 ? 0 515 ! 2 5 2 1 ?

0

1 5

2 % J 2 ? 0

0 ! 2 5 supplier article.dat 5 !

1 % 0 orders 2 order.dat order 2 1 5 2 ? 5 2 2 .

2 ?

1 ?1

1 2

2

"

" 2 0

!

5! 0

K1

"

0

2

Database" fix 0 999999 fix 0 999999 fix 0 999999

1

, J

"Demo Group"

:INHOUSE orders "Order "supplier.dat" Supplier "order.dat" Order "article.dat" Article ?

2

51

1 1

5! 2

1 0 0 InfoB

15 0 2 5

1

5

.

:INHOUSE demo "Group Demo Database" "demo.dat" sdf 0 999999 ( InfoA 1 2 InfoB 1 2 ) , ! 0 InfoA

, ?

2

?

2

2

+ 00 "

2

0

"Supplier Record" "Order Record" "Article Record" 2

. H

2 supplier.dat article % 0 2

supplier.dat: A B

4 !5 #

6 #

7"(

* 15

(

*/ (/(

*

order.dat: 24974A 24392A 25141B article.dat: 1000_43 24974 4798_1 24974 1424_4 24392 4223_7 24392 1231_32 25141 5232_26 25141

('*' C A=: !! H

A=:

"

2

5! 2 2 0 2 2

!!

%!

2

,! 1

5

A=: -

2 !

2 - 14

-

5 A=:

?$

A=: "

>

!

! 2 5 2

0 !?

50 2 1 , 5 %

! 2 5 , J-'4K 5! 0 "2

1 2 ?0 1 H ? % A=: % ! 0 52

0

!"

A=: ?

?

A=: ? 0

1 ; ; 2 5

!! A=: 2 2

2

7"(

?1 H 2

A=: !! ?

! ; ; ? 2

5 50 5 ! ? 15 ? 1

2 ?0

!!

* 15

2 5 2 2 A=: % %

; ; ? 2 0

((

?

; ; 2 5 %

5 ,2 ! 2 5 A=: A=: ! ? % 2 ! A=: ; ; 0 ? A=: 2 2A=: 2 ! A=: "2

2 ; ;2 ! ! A=: 1 2 ; ; 2 ! ! ! 2 !! ! A=: 02 2 ! A=: 1 % !! ! !! 5 !

2 2 ? !

!!

! ! 5 !! ? 2 2 1$ ! !

?

? 0 1 0

A=: A=: !! 2

!

! !! ! A=: !

1 % 2 A=:

6 #

0

H

1

4 !5 #

2 2

A=:

2, 2

-

2

" A=: ? ,!

; ; 0 ; ;

2

5

H ?

!1 0 2

,?

1 ?

; ;

.

5

A=:

?0

2

2

A=: 2 0 2 2 0

"

2

5

1 2 ,1

1

2

0

1 ! ? A=: 5 1 H 2 2 ? ?

,

5

A=:

0

2 !

1 1

!

"

-

0!

1

5

2

"

.

*/ (/(

*

'

:INHOUSE TESTFILE "A file structure for testing" "test.xml" xml TEST UTF_8 "For testing purposes" " ] > " ?0

!

2 2

2 5 2

" 2 2 5 !

! 2 ! + ! ?0 1

! 2

0 ?0 ; ;

%

test.xml TEST? 2 0 ; ; 1 0 2 5 ! 2

2 ?0 2 ?

A=: ?1

1 A=: H 5

? >

.! 2 5 ! ! 1 ! ! 5 ! 0 1 ! ! 5 ! ? 2 2 ! ! 5 ! 2 ! \ ,! 9 S -

2 A=: 2 2 ! ? ! 52 A=: ! ! ? ? 1 ! 1" HEADER TEXT % 2 !

?

! 15

!

2

!

2

?

> A=: !

FILE? 1 ! ?

!

1

" ; ;2 , A=:

"

1

2 ; ;

J\ K H % 5

! H 2 1 ; ; H 1"

?

UTF_8 0

?

1 H J]K 1 H ?0 0

2

2

A=:

!

!

1 ! 5 !" ! 1

! 1

2 % 0

xml 2 ! 1

+ !

+ 1

.

Put your title or header here


2 0 5? ! ,

; ;? 1 5 2

5! 5! !!

2

0

2

?

B#: 5! 2

2

2

$ !

51

% = UTF_8

B +"

1

A=: 1

>

2

2 5 !! ; ; ! 2 ? B#: 0 ? 1 5 2 !! ? ! 5

! ! 5

2




B

2 2

+ )"1

? "1

!1 "1

B

2

5 ISO_646

9")@)

9 )@) 5

4 !5 #

6 #

7"(

* 15

('

? 5

7"1 1

?0

2 B " 4 = 2, */ (/(

*

> 9"

9"

ISO_8859_1

* "

ISO_8859_2

* "(

9"

* "'

ISO_8859_3

9"

* "@

ISO_8859_4

9"

9"

ISO_8859_5

* "*

9 * ? !! ; < ? ! ? 0 9 * ? !! # ?

@. :

9 * ? !! # ?

*. :

?:

?

/45 5

% ! 1

"1

1

.: 0

B

2

+

?

! 1 * ?+ ?

? )"1 ?

"1 "1 ?+

?+ ?

!

? ?

1

9

B +" )?

9" )@)" B4 "(

ISO_10646_UCS_2

9" )@)" B4 "("

ISO_10646_UCS_2_B

9"

)@)"B4 "(? 1

9" )@)" B4 "(":

ISO_10646_UCS_2_L

9"

)@)"B4 "(?

)@) B

4 ?

!

("15

?

1

9

ASCII

H

2 9")@)

US_ASCII

H

2 9")@)

9":

"

ISO_Latin_1

H

2 9"

* "

9":

"(

ISO_Latin_2

H

2 9"

* "(

9":

"'

ISO_Latin_3

H

2 9"

* "'

9":

"@

ISO_Latin_4

H

2 9"

* "@

9":

"*

ISO_Latin_5

H

2 9"

* "*

9":

")

ISO_Latin_6

H

2 9"

* ")

9":

"7

ISO_Latin_7

H

2 9"

* "7

9":

"

ISO_Latin_8

H

2 9"

* "

(@

0

! 1 ? 0

!

UTF_16_L

9

1

/ 1 C

9 * ? .: !! ; ?; < ? ? ? 0 ? %

B +" )":

* 15

"1 ?=

/


0

"1 ?+ ?

?+

?

1 "4

9"

9"

! 1 ?

(. : 1

9 * ? !! =

ISO_8859_6

* ")

.: ?; ?

*/ (/(

*

'

UCS_2

B4 "(

H

. A=: ! 1 2 ! 5 9 = %

( ' * @ 9; 4

0

2 9"

5 2 2 0 . B +" ? B +" )": B +" )" ? 1 ! 1 0

"

0

0

2 "

2 0 !

5

.

; # 4 B ;

!

)@)"B4 "("

2

?1 9; 4 /

2 5

5

9; 4

9; 4 H

0

?

52

? 9; 4 !

H %

1 2

>

"

2

;

4:

B

=

C:

C9BO#

-

: =

:

9#

9

1

B

49= :

;

49## 4 ; 9

;

% H H

0

#C ;

49

4C 9#

C9B# 9-

#

B =9

# 4

9

-

8

; 9 :C B ;

# 4 -

?

< #9B

: 4 #9 0 2

&2) 0 5

2 2

9; 4 1 %2

1

+

! 2

? 0

? 2

?

! !

&2)

.

!

!

1

0 #0

!

%

51 !

"

! 50 2

H

B

!

0

!

?

!!



J



J



-

1

2

2

1

? ! ? !

2

.

2 ?

22

.*

. J

!

!

null

0

!

&2) ?

2

2

1 !

5.

K K

? #B

?+ :

K 4 !5 #

6 #

7"(

* 15

(*

*/ (/(

*

!

!

2

1

%

51

?

2

2

5! .

:INHOUSE database “connection” ODBC { “conn”, ”user”, ”pass”, 50, 10, FALSE } 2

2 &2)

!

H

# )

?

?0

2 &2)

.

!

@

9; 4 ^ H ! 2

5H 1

5 5! ^ 51 ?

%

"

! H 5

?

2

>

.

:RECORD orderline { “SELECT * FROM orderline where orderid = ?” } 5"1 1

0 ? 2

?

!

2 H

> H ! % ! 4 1 2! 0 5 1 2 15! ? 15 5 % 1

5

2

H

2

2 ?! 0

2

2

? 5!

2

0

5

!

0

5

H

5

>

H H

2 ,1 H

!

?

5

2 2 H 1 ?!

! 0 5 % 0 + 0 2 5

H

?0

5 ? 5 2

2 5 5

1

% %.

:RECORD orderline { “SELECT * FROM orderline where orderid = ?” } fk_orderid M N10 ->orders/orderid “the orderid parameter” orderid M N10 “column 1, the order id” articleid M C35 “column 2, the article id” deliverydate C C10 “column 3, the delivery date” H

? 2 orderid 2

2 fk_orderid 2 ! 2

%

1

orders 1 2 2 %5 orders

0 orders 1 2 ,

H

5

%.

orders 0 999999 ( orderline 0 99999 ) orders

-

% %.

:RECORD orders { “SELECT * FROM orders WHERE status = ‘export’” } orderid M N10 “column 1, the order id” customerid M C35 “column 2, the customer id” orderdate M C10 “column 3, the order date” 2 0

!

orders 2 0

5! 1

0

?

H %

5

,

.

WHILE NEXT(orders) DO READ orders; WHILE NEXT(orderline) DO READ orderline; END END -

2

%5

!!

1

?

!

1

,!

51 2

orderline

!. WHILE NEXT(orders) DO READ orders; orderline/fk_orderid = i0; 4 !5 #

6 #

7"(

* 15

()

*/ (/(

*

'

WHILE NEXT(orderline) DO READ orderline; END END : 4 H 1 , ! 5H

2H 5 1 5

0 1 !

?0

2

! 2

9; 4 # H 5? 0 !! / ?

! % 0 1

9; 4 1 5 H 5 2 , ! .

!! H ? # H 5

? 0

:RECORD orders { “INSERT INTO orders (customerid, orderdate) VALUES (?,?)” } customerid M C35 “column 2, the customer id” orderdate M C10 “column 3, the order date” ,

0 1 2 WRITE orders; H 5 -# C 5 ! 0 !! 2 1 2 5 1 0 H 2 ? # H 5 5 ? 1 2 05 2H 5 2 ! ? 5 1 1 H 5 H 5 1 ! 2? 2 5 5 = ^: 1 !

! 0

1

2

H

5 ?0

,

1 ! H

!1

2 5

2

! 2 ?5

2 ?

1

? ! , ! ? 2 0 .

+

:RECORD identity { “SELECT @@IDENTITY”} id M N10 “generated identity value” C

0

?

0

:RECORD orderline { “INSERT INTO orderline (orderid,articleid,deliverydate VALEUS (?,?,?)”} orderid M N10 ->identity/id “column 2, the order id” articleid M C35 “column 2, the article id” deliverydate C C10 “column 3, the delivery date” B

2

0

.

orders 0 999999 ( identity 1 1 orderline 0 99999 ) C

2 %

1

.

WHILE … DO … WRITE orders; READ identity; WHILE … DO … WRITE orderline; END END -# !!5 + #

5 # 9; 4 9; 4

; 1

4 !5 #

6 #

2 ; 0! ! 2 2 H

7"(

* 15

?

2 ! 5

9; 4

25 1

2

!!

0 # ; % ! % 20 -#

(7

.+ !!

2 2

5! ? 5

0 !! 2 H

?

? 1

*/ (/(

*

0

0

% ! !

9; 4 !! H 5? 0 0 0

0

1 ?5

! 22 0

?

!! ! 0 ! ?

50 2 2

0 H

,! ?

!

H

2

0

1

2

-

48

0 ! 1

0

1

-

51 2 0

!! % 29; 4? 0

! 2 2

?

5

2 ?0

!

!

? ?

2 1

5? 0 #9::

5 25 2 5

! 5 2

. 1

" 0

2

5! 1 !! !! 0 , !! !

! 2 !

? ? ,!

0 2 ! 2 ?

! 49== !! 0

5

!

1

.

WHILE … DO … WRITE orders; READ identity; WHILE … DO … WRITE orderline; END COMMIT orders; END 5

2

!

-

!

. 1

('**

5

?

!

#4 ? :998B -# 9; 4 !

1

"1

0

2

!! >

%0

0

2 !

2 9; 4 # ; -#

H

1 2

2

5

, !1

2

1 51

A=: 2

0 5?

5

,2

1 ?0

?0 0

2 2

, 1

2 ? .

!?

0

A=:

?

::= ″:INHOUSE″ [ ] + ::= { | ″null″ } { + | ″xml″ [ ] { ] } ::= ″sdf″ | ″del″ | ″named″ | ″os400″ | ″fix″ | ″sep″ | ″odbc″ ::= [ ″(″ + ″)″ ] ::= { ″″ } | { ″[″ ″]″ } |

4 !5 #

6 #

7"(

* 15

(

*/ (/(

*

'

::= "UTF_8" | "ISO_646" | "ISO_8859_1" | "ISO_8859_2" | "ISO_8859_3" | "ISO_8859_4" | "ISO_8859_5" | "ISO_8859_6" | "ISO_8859_7" | "ISO_8859_8" | "ISO_8859_9" | "UTF_16_B" | "UTF_16_L" | "ISO_10646_UCS_2_B" | "ISO_10646_UCS_2_L" | "UTF_16" | "ISO_10646_UCS_2" | "ASCII" | "US_ASCII" | "ISO_Latin_1" | "ISO_Latin_2" | "ISO_Latin_3" | "ISO_Latin_4" | "ISO_Latin_5" | "ISO_Latin_6" | "ISO_Latin_7" | "ISO_Latin_8" | "UCS_2" ::= ″{″ [ ″,″ [ ] [ ″,″ [ ] [ ″,″ [ ] [ ″,″ [ ] [ ″,″ [ ] ] ] ] ] ″}″ ::= ″true″ | ″false″ 2 2

2

5!

0

2

0

.

8 sdf

2

2

0

2, " -

!

2 ?0 0 2 2

2

! sdf

5!

2 del

4

"

2

0

1

H

2

! named

2

os400

2

4; 4

fix

+, 2 !

sep

4

2

2

!

2

A=:

?

!

2 ! ? !

9; 4

,!

5 A=: !

?

4O

5! ! 1

.

2 % 15 % ?0 % K

2 K

H

!

!

0

!

!

; 2

!

2 9; 4 ' *

5? 5 0 ! 2 ?0 0 ? 25 ! 2 5″null″ 2 2 ? 2 0 " 2 2 1 ,! 50 NEWBASE 5 ! 2 9; 4 ! 1 %

0

15 =

!

2

0

0

+

" odbc

/@

J % sdf? 1

2

"

tpl xml

2

?

2 ? ! % ! ! ? ? 15 J2

%

0

!

1

!

?

5

0

:; J

*@

?

*K

2

% 2 1 ! % K? ! 2 !

? 2 ! J 2

, / 3' 2 1 ! ? ! 5 1 2 1 " +

4 !5 #

5 2 1 K + -

,

7"(

2 5

!!

!

+

.

1

!

2 1 2

1 0 + % 2

0 J ?

1

5 5

(

?1

!! 2

1 * 15

1 , 2

1

! 0 1

? A=: 5 6 #

1 2 ?0 5 , 2 5 2 2 ? 2 ? 0 5

!

2 5

1

0 1

2

!! 1

2 ? 0

/0 ?

/ ! 0 5A=: */ (/(

*

? !

2

! 0

2 ?

1

1

2 ? 50 1 5

1 A=: 2 !

updateable !!

! %0

,.

::= ″:GLOBAL″ + ::= { [ ] | ″xml″ [″updateable″ ] [ ] [ ] }

, / A" ;2 5 5! ? 0 " 5

2

J K 2 1 ? 2 ! 2 ?0 % ! 1 ! 2 0 ,

51 1

0

" 2

1 5! ? 0 % !

2 !

2 ?

2

?1 1

2 !

2

C3 C35

= "SUP"

:RECORD Order tag ordnr

M M

C3 N5

= "ORD"

:RECORD Article tag artcode spacer artcnt

M M M M

C3 N4 C1 N5

= "ART"

Supplier 15 Article ″ART″? 15 ! J0 !! 5J 15 ″M″K? , ! . 5 1 1 51 + ? 2! 1 2 . ? 20 ! 2 tag

M 0

2

M 0

2

2 5

1 1

6 #

7"(

2 H 1

?

1 2

2

2 !!

51 H 15.

?

2

0 1 2 K

? " H ? ! 2 5 2

2

51

15

!! L 2 2 0 ? ! ? 2

,

0 5 " H H

?

!

″SUP″? 2

0

2 5!

C3

?

?

0 1 ?

2

H

5

.

″SAB″? ″SAC″ !

″ZZZ″K 0

2 5 Supplier

?

"SAA,ZZZ" ″SAA″

H

″ZZZ″ 0

2 5 Supplier

?0 5

2

4 !5 #

,

5!

! 5!

? ! 1

2 2

?

!

2

2

%

:RECORD Supplier supname

!

5 5!

> "SAA"

2

?

5 2

1

″SAA″ J

tag

5 2

1

C3

2 5.

0

1 ″ORD″?

,

2 2 5! 2 5 ('* .

M M

?0 Order 2 !

1

2

:RECORD Supplier tag supname

2

?

_ ,

M * 15

!

('*(

1

2

0 .

C35 '

*/ (/(

*

'

:RECORD Order ordnr supplier

M M

N5 C35

-> Supplier/supname

:RECORD Article artcode spacer artcnt order

M M M M

N4 C1 N5 N5

-> Order/ordnr ″->″ .

15 5

,2

?2

0

15

#

/+

2

::= ″:RECORD″ [ ″{″ ″}″

] +

::= { ″M″ | ″C″ } [ ] [ | ] ::= { ″″ | ″″ | ″>=″| ″″ ″/″ . 2

!

2

!

>

H

2

51

%

5 !!

,!

1

9; 4 H

(@

.

5

2

1

H

0

A=:

,/B

< ?5

!

2 5

2 0

1 5

2

%

2

2

2 1 ,

2

1 22 ? ('* 0

! !

2

% %

. :MESSAGES "orders.emd" 25 ,! 2

"orders.eld" 2 2

0

5!

! ?5

2 2 0 5.

2 ! 2 5 2 2

5? 2

,

! 0 / % 2

!! 2

:MESSAGES Supplier "orders1.emd" "orders1.eld" (Supplier/supname = ″A″″) "orders2.emd" "orders2.eld" (Supplier/supname ″A″″) 2

2 ('*

!

K

!! !

:MESSAGES "orders.emd" "typea.emd" "typeb.emd"

5! 1

2 ?

! 2 2

?

2 2

0

5!

2Detail J

0 5.

"orders.eld" "typea.eld" "typeb.eld"

0 ! 2 :Messages 2 2

% /

%

2

2 2 ? 2

/

2 0 !" 2

%2 !

! ? 15″ "

2

2 ″

2 % !

55

2

59 2 ? 1

15. ::= ″:MESSAGES″ { ″-″ | } + 4 !5 #

6 #

7"(

* 15

'

*/ (/(

*

::= [ ″(″ ″/″ { ″″ | ″=″ } ″)″ ] 2 ? ?

(@

5

+

5 2 1

!

2 1

!

9

5 0

1 2 2

15

2

5

2 5

2

2 2 2 2

2

2

2 2

2

! ? .

2 2

2 5 ?5 ! 1 15 % 5

!!

!!

-

0

0?

2 ?

2

5

22 , 2 2

::= { | | | } [ ″(″ * ″)″ ] ::= ″P″ [ ″.″ ] ::= "Z" ::= ″C″ ::= ″N″ [ ″.″ ] ::= ″B″ [ ″2″ | ″4″ ] ::= ″R″ | ″L″ | ″Z″ | ″E″ | ″F″ | ″I″ | ″T″ | ″C″ | "X" | ″O″ | "B" %

JPK? E 5

JZK H

5JBK 2 2 0

2

5!

9 /@

4 2 5 ? 0 9 /@ ;; 2 2

? 2

2

! %

2 2

5! 9 /@ 5

2 5 1 !

?

=

2 2

2

2

.




2

2

C X

+

O

+

B

+ R? L

Z

6 #

0

! 1 1 2

2

4 !5 #

! 2 2 5!

2

>

2 :998B 9; 4 H 9; 4 H

5! 5!

5 ,

! 5!

7"(

* 15

2

%

!

5

2

?

2

'(

*/ (/(

*

'

H

B 5!

O

2

5 , 1

J

K

:RECORD Demo dem1 dem2 dem3 dem4 dem5

N14.8 Z8.2 P8.2 C35 B4

dem1

4 !5 #

6 #

7"(

'*" 9 /@

@

* 15

>

!

5

2

? 9; 4

(R) (Z)

0

0 5

!

(TLE)

0

? ?0

%

.

> 9 /@ K 2 > 2 ! 2 5 2 159 /@ 1 52 J

2 ?

! M M M M M

!

!

?

2 K 20

2 0 2 2 dem2 > ! dem3 dem2 ? 1 ? ! ! 1 2 ; ,2 dem4 2 0 dem3 @ 2 0 >

''

2

J ! % ! ! ; 2 # 2

% 0 5

*/ (/(

*

/

%**0'%

%

!

#!

' + 2 2

1 5

K ? 2 2

2 2 1 1

2

'(

J ; K

1

?0 ?

0 5 2

2

=

; 2

1 0 /

"

%

2 J =; =; 2 2 ?

: 5 =; 2 5

2

2

0

.

.; 2 *8

1

J !
* 15

= : A=:K

2

! ')

2 */ (/(

*

'

' (*

J

0

= : A=:K B % 0

1

=;

A=: 0

2

A=:

J1

//.

2

(*

" = : A=:

2

2

1

('@

< =; ; = 1 ?0

1

2

0?

,

2

5

5 % 0

?

? 2 ; ; 2 0

A=:

!!52

K

!

!

?

2

; 2

"

2A=: 5! 2

. 2 A=:?

0

;

''@

;

5!

2

B / ; + 4

! 1

%

%

.

:MESSAGE orders ″My order messages″″ ( MSG 1 9999 ″Message″″ UNH 1 1 ″Message Header″″ DTM 0 5 ″Date/Time″″ ( Grp1 0 2 ″Address Group″″ NAD 1 1 ″Name/Address″″ RFF 0 2 ″Reference″″ ) ( Grp2 1 9999 ″Details″″ LIN 1 1 ″Line Item″″ ) DTM 0 5 ″2nd DTM segment in Msg!″″ UNT 1 1 ″Interchange Trailer″″ ) orders

2 Msg? 0

5 UNH !

0 0 2

-

?! K?

1 52

,!

''@(

2

1 0 0 15 20 DTM J 1 2

! DTM ? K

!J 1

?

K 2 ! JGrp1

!. Grp2?

UNT

A=:

A=: 5 ,2 ! ('*' ! ! 2 ! A=: 2 A=:

?

!

1 A=: 2 2

2 2

2 0 5

1 2 A=:

2 ! "

2 2

" 2 5!

2

.

:MESSAGE orders ″My order messages″″ ORDERS ″ ″″ ORDERS

?

4 !5 #

6 #

7"(

* 15

2

'7

A=:

%

2

*/ (/(

*

.! 2 5 ! ! 1 ! ! 5 ! 0 1 ! ! 5 ! ? 2 2 ! ! 5 ! 2 ! \ ,! 9 S

''@'

2

2

% 0

?

1 H J]K 1 H ?0 0

> A=: !

J\ K H

1

% 5

= : A=:

= : A=: 2 ; 2

!

0

!

;

?1

0 2

2 ?

5 5

A=: 2 = : A=: 2 2 ?0

?

= : A=: 2 ')

''@@

2

0

0

0 5

! ! = : A=:

0

2

, ,2

.

::= ″:MESSAGE″ [ ] { | | } ::= [ ] [ ] ::= [ ] [ ] ::= ″(″ [ ] { | } + ″)″ ::= [ ] '*0 0

!

2,

!

2

2

order

15

/ / 4* < 2

2

DTM

2

:SEGMENT Msg/DTM:2 /UNA 1001 C AN3 ( C001 M 1002 M N8 1003 C N..14 ) 2 ?2

J

0 %1 K 15 !

0

0 1

2

''@

, ! ? % %.

″Date Qualifier″″ ″Date/Time Composite″″ ″Date″″ ″xxx″″ - ′CODE1′′ ′CODE2′′ …

2! 1

+

order

2

DTM ?0 @ !! 1 !

?0 0 ! 2 " J ! K ,1 0 /UNA ! ! B / ; + 4 B

2 4

! 1 !

1

! 1

1

0

H 2 5

5 ?0 , ! J1001? C001? 1002 1003K ?1 5 ? B / ; + 4

2 5

2 0 Y=O . H 0

?2 , 5

4 !5 #

6 #

1 15 B 5 0

?

J -

0

,

7"(

2

* 15

K

5?

2 !

2

1 2 15

2

! ? ! 0

2 2

2 51

15 2 ?

2 .

'

*/ (/(

*

'

::= ″:SEGMENT″ [ ″=″ ] [ ] + ::= ″/UNA″ | ″/UNB″ | ″/UNG″ | ″/UNH″ | ″/UNT″ | ″/UNE″ | ″/UNZ″ | ″/RAW″ | ″/RAWNT″ | ″/NOCR″ | ″/NOTAG″ ::= | ::= { ″M″ | ″C″ } [ ] [ ″=″ ] [ ″-″ ] ::= ″(″ { ″M″ | ″C″ } [ ] { + } ″)″ 1 0

! , 2

5

2 .

1

2

?1

0

0

!

::= ″/″ [ ″:″ ] 0

!

!

0

0 !

1

!

0

2

2

!

2

0

* < /ISA

! L !

2 5

2

4A( ,

/NOCR

0

N 1

!

0

!

% 2

/NOTAG

!

N

0

,!

5 2 /RAW

!

/RAWNT

N

0

!

,!

N

5 2

0

,!

5 2 /UNA

!

2

!

N

0

!

! /UNB

! ?

/UNE

!

/UNG

!

? B / ; + 4

!!

0

!

5 , B 9 "B 9+

" @?

/UNH /UNT /UNZ

! .

2

'@

2 ! 2 2

4 !5 #

6 #

5! ? 2 7"(

* 15

2

A=:

! 0 ! 2 "

J ? 2

5!

2 ! K ! J

! 5 ( @K '

0

5

2

! !

1

1 5!

2 !

2 */ (/(

*

!

5 5

,

!

-

1 0

2

2

B / ; + 4 ?

4A(

4

" =

5

.

::= { | | } [ ″(″ * ″)″ ] ::= { ″A″ | ″AN″ | ″N″ } [ ″.″ ] ::= { ″A″ | ″AN″ | ″I″ | ″ID″ | ″N″ | ″R″ | ″T″ | ″TM″ | ″D″ | ″DT″ | ″B″ } [ "/" ] ::= { { ″N″ | ″A″ | ″M″ | ″T″ } { | { ″[″ ″]″ }} [ ″P″ ] } | ″/″ | { ″

"2

"

N8.2

>

"2

"

AN..8.2 " = 2


!

"2

2) P44QCC==;; 2

> !

"2

> !

"2

2

,

!

2

2

5 !

/

,

2 J

0 15

!!

2 ,! (@ "*K? !

!

? !

2@

P

!

2@ P P QQQ 2

?

? !

2

B / ; + 4

4(2

?1

2

=;

+

'*

A( 15

2 2 5! J;K 1 0

!

2

9#;#

?

!

2

?

!

2

15

B

B / ; + 4

5; '

#Message Tag: ORDRSP #Message Name: PURCHASE ORDER RESPONSE MESSAGE #Message Version: D #Message Release: 93A #Message Revision: ? #Issue Date: 19961007 #Responsible Agency: UN # Note: TIE Translator will skip everything before the # :VERSION section :VERSION 2.20 :SYNTAX EDIFACT UNOA LOOSE :MESSAGE ORDRSP "PURCHASE ORDER RESPONSE MESSAGE" ( Msg 0 200000 UNH 1 1 "MESSAGE HEADER" BGM 1 1 "BEGINNING OF MESSAGE" DTM 1 35 "DATE/TIME/PERIOD" ( Grp1 0 10 RFF 1 1 "REFERENCE" ) ( Grp2 0 20 NAD 1 1 "NAME AND ADDRESS" ) UNS 1 1 "SECTION CONTROL" UNT 1 1 "MESSAGE TRAILER" ) :SEGMENT Msg/UNH 0062 M ( S009 M 0065 M 0052 M 0054 M 0051 M 4 !5 #

6 #

7"(

AN..14 AN..6 AN..3 AN..3 AN..2 * 15

"Message reference number" "MESSAGE IDENTIFIER" "Message type identifier" "Msg type version number" "Msg type release number" "Controlling agency" @

*/ (/(

*

0057 ) 0068 ( S010 0070 0073 )

C

AN..6

"Association assigned code"

C C M C

AN..35 N..2 A1

"Common access reference" "STATUS OF THE TRANSFER" "Seq msg transfer number" "1st/last s/m/t indication"

AN..3 AN..3 AN..3 AN..35

"DOCUMENT/MESSAGE NAME" "Doc/msg name, coded" "Code-list qualifier" "C-list resp agency, coded" "Document/message name"

AN..35 AN..3 AN..3

"Document/message number" "Message function, coded" "Response type, coded"

:SEGMENT Msg/BGM ( C002 C 1001 C 1131 C 3055 C 1000 C ) 1004 C 1225 C 4343 C

:SEGMENT Msg/DTM ( C507 M 2005 M AN..3 2380 C AN..35 2379 C AN..3 )

"DATE/TIME/PERIOD" "D/t/p qualifier" "Date/time/period" "D/t/p format qualifier"

:SEGMENT Grp1/RFF ( C506 M 1153 M AN..3 1154 C AN..35 1156 C AN..6 4000 C AN..35 )

"REFERENCE" "Reference qualifier" "Reference number" "Line number" "Reference version number"

:SEGMENT Grp2/NAD 3035 M AN..3 ( C082 C 3039 M AN..17 1131 C AN..3 3055 C AN..3 ) ( C058 C 3124 M AN..35 3124 C AN..35 3124 C AN..35 3124 C AN..35 3124 C AN..35 ) ( C080 C 3036 M AN..35 3036 C AN..35 3036 C AN..35 3036 C AN..35 3036 C AN..35 3045 C AN..3 ) ( C059 C 3042 M AN..35 3042 C AN..35 3042 C AN..35 ) 3164 C AN..35 4 !5 #

6 #

7"(

* 15

"Party qualifier" "PARTY IDENT. DETAILS" "Party id identification" "Code-list qualifier" "C-list resp agency, coded" "NAME "Name "Name "Name "Name "Name "PARTY "Party "Party "Party "Party "Party "Party

AND and and and and and

ADDRESS" address line" address line" address line" address line" address line"

NAME" name" name" name" name" name" name format, coded"

"STREET" "Street and number/PO box" "Street and number/PO box" "Street and number/PO box" "City name" @(

*/ (/(

*

'

3229 3251 3207

C C C

AN..9 AN..9 AN..3

"Country sub-entity id" "Postal code id" "Country, coded"

:SEGMENT Msg/UNS 0081 M A1

"Section identifier"

:SEGMENT Msg/UNT 0074 M N..6 0062 M AN..14

"Number of segments in msg" "Message reference number"

')

= : A=: 5

?

2

! A=: 0

1 ?

0

2 0 A=: $ 1 2

A=: 5

,2 ! 1 0 ! 2 ! 5 2 0

5 ;

2 2 ,!

= : A=: 2 0 5

"

;

?1

A=: ; !

" 0 5

2

2 ! , 1 2A=:? 0 J ; K

5

?

5

0 1 2 A=: 1

5 +

A=:

; = : A=: 2 ; 2 ?

?

5

0 0

,!

! 2

2 0 !1 5

A=:

= : A=: 2

!

5 ! ?

= : A=: 2

2 A=:

! ! 1 50

!

!

!

0

/3 = : A=: A=: 5 ,

2 5

1

5 ? = : A=:

= : A=:? 0 !

0

5 5

!

!! ? ;

2A=: =; 2 ! 1

A=:

!! A=: ? 5! 2A=: 0 ; ; 5 ! 0 1 ! ! 2 5

2 A=:

0 ! 0 5

J

1 !

1 !

8 !

!

2

,K? ,

0

%

!

3.

1 5

0 1 ! 1

? A=:

A=: ? ,

1

A=:

!5 ,

?0 2

5A=:

,

5+ 52

0

"

A=: 5

1%& 1 ,

2 2

2 2

A=: !

2

5

0

, B

H

!

= *

1

0

;

?

A=: 0 2 !

/ 3 ,% A=:

5

;

= : A=: 2 5 0 2

2 5 !"

0

2

, %" ! 2

?

;

; ? 2

;

1

0 2 0 !!

! ,

2 A=:

A=: 0

2 -

5 0

, !

-

1 2

? ?

=;

< 2

=; 0

1 1

!

2

0

!

2

.

4 !5 #

6 #

7"(

* 15

@'

*/ (/(

*

repko modem
repko cable


')(

5 1

,

= : A=: 2 ! 2 1

1

')((

?5 ?

!

2 5SIMPLEXML 5 , !

% 5!

= 2 0

0 4

= : A=: ! 2

5 2 2

!

4

!

1 !

.

!

2 5

!

2 1

2

1

0 0

=

!

?

? 2

!"

2

!

A=: 0 2

= : A=:

1 2 ? 0

0 1

5

B / ; + 4

5

1

2 ! ,A=: 2

0

2 5 2,

5B / ; + 4 2

4 2 ! ('*@

0 1 2

2

2

5!

1

2

2

! A=:

2 2

,

! 1 !

!

1

%

?

B / ; + 4 2

?1 1 A=:

!

0

%.

:MESSAGE orders “My XML order messages” UTF_8 “” ( Ichg 1 1 orders 1 1 ( Msg 0 200000 order 1 1 "Order message" buyer 1 1 "The buyer" seller 1 1 "The seller" ( Grp1 0 20000 lines 1 1 "The order lines" article 0 20000 "The article" ) ) ) B +" ?

% 0 ,0

! ?

1 5!

! 2

.! 2 5 ! ! 1 ! ! 5 ! 0 1 ! ! 5 ! ? 2 2 ! ! 5 ! 2 ! \ ,! 9 S

4 !5 #

6 #

7"(

* 15

@@

2 % 0

?

0

1

?

2

?

> A=: !

1 H J]K 1 H ?0 0

!

1

J\ K H % 5

*/ (/(

*

'

')(' +

,

2 ! ?

2 2

B / ; + 4
J

.

A=:

K

A=:

% %. :SEGMENT Grp1/article ucc cnt _value

M M C

N14 N..8 AN..50

“UCC identifier” “Quantity ordered” “Description”

2

0 2 5 ! 2 @"

, !!5 1 2

0

1

3.

2 !

! ?

1 1

,

!

1

2

2 ! 1

2@

1 .

:SEGMENT Ichg/orders :SEGMENT Msg/order on M date time xml___lang

AN..30 M N8 M N4 M AN..10

"Order number" "Order date" "Order time" "Language"

:SEGMENT Msg/buyer eancode

M

N14

"Buyer EAN identifier "

:SEGMENT Msg/seller eancode

M

N14

"Seller EAN identifier"

:SEGMENT Grp1/lines cnt C

N..5

:SEGMENT Grp1/article ucc M cnt M _value

N14 "EAN/UCC artcle identifier" N..8 "Quantity ordered" C AN..50 "Description"

4 !5 #

6 #

7"(

* 15

"Number of lines"

@*

*/ (/(

*

. 1 !2 %

!

#!

@ !

( 2

'? 0

"

2 2 J :;K 2 ! 2 5 , 5 ?

1

1

2 1

1

@(

: 5

?0 0

!!

:; 2

5

2

5

! .

1 !

2

2 0

!

2

?0

2 5

2 0

K. ; 2 K. ; 2

2

J !

K. ; 2

2

K. B

0 5 !! 2

" 0 5

5

J !

J !

1 0

.

J !

1 7

2 1 0

$1 $1

%

!

!! 50 :; 2

0

; 2

2

=; 2

.

.

::= * [ ] * [ ] { | } * 1

!

?

;0

;

2 0 =; 2

2

0

1

2

@' 05

0

2

!

2

2

:;

./ 2 5

2 !

,

2 0

./ , . !

2

?2

,

! ?

2 CONVERT_FWD .

1 ?0 CONVERT_REV

1 1

2

:CONVERSION ConTab "BY" "BBB" "SU" "SSS" "DP" "DDD" 4 !5 #

6 #

7"(

* 15

@)

*/ (/(

*

'

; 2

1

YConTabO 4 " ″BY″ 0

1 "

2 ″BBB″

? 1 CONVERT_FWD, " ″SSS″ 0 2 CONVERT_REV - 0 ,! 2 .

1 0

0

" " ″SU″ % !

5 ,

+

" ! ?0

2 5

2

0

2 +

0?

::= ″:CONVERSION″ { } + 4

1 1

?

,

1

?

?

2

1

!

,

2

; +

?0 5 , 2

2

2

./ / ! " * 9

0 ,! .

2 2

0

$1

1

? 0

% $1

,

::= ″:CONSTRUCT″ %! ! ,?

J 2

!

0

K

% ! 5

20

, %

!

2

5!

1 %!

%

:CONSTRUCT WHILE NEXT(Header) DO READ Header; LINK Header; WRITE Msg/UNH; WHILE NEXT(Address) DO READ Address; LINK Address; WRITE Grp1/NAD; END WRITE Msg/BGM; Msg/UNT/0074 = SEGCOUNT(Msg)+1; WRITE Msg/UNT; END , ! 2Msg SEGCOUNT

"

1

N

% !

% 2

1

header 2

address J

J

K

K

./ . !

2

0 "

:;

$1

1

2 5

?0 , .

, 2

0

5

2

,

! 2

::= ″:TRANSLATE″ ,

!

2

0

!

!

:TRANSLATE WHILE NEXT(Msg/UNH) DO READ Msg/UNH; BCLEAR b0; WHILE NEXT(Grp1/NAD) DO READ Grp1/NAD; 4 !5 #

6 #

7"(

* 15

@7

*/ (/(

*

LINK Address; BAPPEND Address TO b0; END READ Msg/BGM; LINK Header; WRITE Header; FOR i0=1 TO BSIZE(b0) DO BREAD b0 AT i0; WRITE Address; END READ Msg/UNT; CHECK Msg/UNT/0062 = Msg/UNH/0062 FOR Msg/UNT/0062; CHECK Msg/UNT/0074 = SEGCOUNT(Msg) FOR Msg/UNT/0074; END , 1

! 0 0

! ,1 header

0

!

0 1 2

1 2 2 0

address address

5 ?

0

0

./ 4 1 7 !

2 50

0

5 !

:

2 8

!! ? , ! 2 0 !! .

! 2 20

15 5

5

2 , 2

2 ! 2

% %

1 2

1

%? ?

1 %?

% 0

0 5

%

2 ? % ! %

::= ″:LINK″ ,

!

%

2

?0

0

!

.

:LINK Header /C Msg/UNH/0062 = "1"; /C Msg/UNT/0062 = Msg/UNH/0062; FIXED Msg/UNH/S009/0052 = "D"; FIXED Msg/UNH/S009/0054 = "95B"; FIXED Msg/UNH/S009/0051 = "UN"; Msg/BGM/1004 : Header/Number; ?

5

0

J

? !

@'@

2

! ?

2

?

2

4 !5 #

6 #

2

Msg/UNH/0062 % 0 ! 2

Msg/UNT/0062 0 5 K 2 1 ? 2

″1″ 0 FIXED 0 "0 5 ?

2

7"(

* 15

@

*/ (/(

*

'

4

-% 1 !2 10!'$0'%

@

! 2 0

!

*

: %!

5

?0

1 0

!

% 5

,

5

%! , .

2

2 %

?

!

″;″

15

%!

::= [ { ″;″ } * ] [ ″;″ ] 0

? 2

0

%

″END″?

0

1 , ?

2

51 !

J/CK 0

1

,

1 0

51

? 2

1

"

5

!

2

1

2 J/TK !

! 2 5-

15

0

!

0 5 5 ,2

0

.

?0 .

%

!

1

::= [ ″/C″ | ″/T″ ] { | | } 5

5 !

! ?0 0

*(

1

2 %!

,

,

@'*

%

1

1

1

2

1 "

1

1

@'' 0

?

?

1 1

!

!

1

!

!

1 2

? "

;

1

2 ?

1 2 N 1

5

,2

%

1

.

::= | |

4,

8 1

?

5

2

5 ? J2 ! K 2 ! 2 1 2 5! 1 5 2 !

5 !

2 2

; 2 1

!

=; 5? 4

?1

!

J

5! ; 0 5 5 !! 0 5 , 2 ! '* 2 1 K 1

2

+

2 ! 0

4,, +

!

2

%

0 5 Header

2 4 !5 #

6 #

7"(

* 15

;2 0 ?5 0

2

0 5 ! 0

2

2 ,

? ! ?

2 ! 2 5

2 Sender

5. @

*/ (/(

*

Header/Sender 5

, 2 2

1

0

!

0

0

1

!

2

.

::= ″/″

4 , /% =;?

;

2 ? BGM

1004

2 %

2 Msg

!? ! 2

2

1

.

Msg/BGM/1004 2

5

,2

1

.

::= ″/″[″:″] [″/″[″:″]] ″/″[″:″] !

!

5

50 5

2 52

0 2

!

! ?

!

4 , .* ? 5 !

?

%

1

!

1

2

2 ?1

2

% 5

2

1

!

8

1

i0 .. i49

= /= ,. "( @7@ ')@7/( @7@ ')@7

n0 .. n49

J2

!

K

2

s0 .. s49 2 2

x0 .. x49

A=:

1 2

1

?

1

2

0

!

5! % ! > ?0 ! 1 2 5 2 ? 1 % 0 2 "!

1 !5 0 5

2

+

"! ! !

1

"! 2 2 !

1

1 9 -

1

2

5

1 ! ?

0

!

!

1 2 2 ,!

2

5 ! 2% 5 ? 1 2 2 *7

1

2

, 2

1

%

?

1 1

2 2A

A=:

2

1

1

1

!

'*

b0 .. b49

A=:

1 !

,! ?

+

?2

%

2

,!

1 ?

/ 1 21 2 2 2A=:

*

.

::= [″b″|″i″|″n″|″s″|″x″]

4 , 40

< %

%

.

var1 = expr1 ! 4 !5 #

0 5 0 6 #

7"(

, % 2 * 15

? var1 2

?0 *

! expr1

15expr1 2 ? */ (/(

*

'

var1 C

% ! 5! 1 ,!

5! 0

Y

0 2

!

1

5! O

5

! ! 1

JY=OK? 9 0

,2

.

::= ″=″ ,!

**

4 , 3)


0

5

2

2 2

!

0 50 % 2 6 +1& *

0 0 5 0 % 1 5 2 2

5

! , 2

.

::= { ″:″ } | { ″:″ }

*'

#

?

!

% NEXT() "

2 2

2

SPLIT()

2

2

15

2

?0

2

0

! 5

2 ,.

! ?

Msg 2

1 ; - 0

::= % SEGCOUNT() RELCOUNT() % % . Msg/UNH 2 2 .

+ 2 2

2

::= ::= ″/″[″:″] ? 2 ? 0 ?

! 5 2

2 1 0

5! ? 92 ?

1 2

% 2

5 ?

2

.

::= | +

A=: !

4 !5 #

" 6 #

2 7"(

? * 15

! *

2

2 */ (/(

*

*@

4

!

4 ! % 50 ?0 ;

% 4 ! ?0 2 5 ,2

**

2 ! * !

1 5 0 5 0 ″BAPPEND Msg/UNH to b1″ 20 ! ! 5

.

::= | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 0

2

4 . )0 *8

!

5

2

0

1

%!

6

::= ″BAPPEND″ { | } ″TO″ [ "KEY" ] 6 ?

1 % 2

%

1

2 1 2 2 0 1

!

1 2 2 > 2 15 BAPPEND

,

1 2 2

>

15 ?

*7 %

6 J2

K

LINK REC01; BAPPEND HEADER/REC01 TO b0; J2

K LINK Msg/UNH; BAPPEND Msg/UNH TO b0;

4 . , ) 1%0" *8

6

::= ″BCLEAR″ 6 !

1 2 2

%

?

1

>

2

,

6

BCLEAR b0

4 . / ) !*%" *8

6

::= ″BINSERT″ { | } ″IN″ ″AT″ [ "KEY" ] 6 ? 1$ 15 BINSERT 4 !5 #

6 #

1 !

2

, ?

7"(

2

* 15

!

1 2 2 % ! 2 % 2

!

2 ! 1 %

1$ 1

0

2 1 2 2 > 1 ! 15

*7 *(

*/ (/(

*

'

J

% ,!

.; %

V

2 ,! W

5! K E J 1 2 2

1

K

# 1

%

6 IF BSIZE(b0) 0 THEN BCLEAR b1; FOR i0 = 1 TO BSIZE(b0) DO BREAD b0 AT i0; BINSERT HEADER/REC01 IN b1 AT i0; END …

4 . .)"%0 *8

6

::= ″BREAD″ ″AT″ 6 #

1 2 2 !

!

0

%

5;

1 2 2 %

6 BCLEAR b0; BAPPEND HEADER/REC01 TO b0; BREAD b0 AT 1;

4 . 4 )"% 10 % *8

6

::= ″BREPLACE″ { | } ″IN″ ″AT″ [ "KEY" ] 6 # ! ! 2

2 % 2

J

% ,!

.; %

%

V

1 2 2 ! 1 0 1 2

,! W

0 !

? 15

1

BREPLACE

?

*7

5! K E J 1 2 2

1

K

#

: 4 1

%

6

J+

K IF NEXT (HEADER/REC01) THEN BREAD b0 AT 1; Msg/UNH/0062 = HEADER/REC01/BINDER1; BREPLACE HEADER/REC01 IN b0 AT 1; END

J+

4 !5 #

K

6 #

7"(

* 15

*'

*/ (/(

*

IF NEXT (Msg/UNH) THEN BREAD b0 AT 1; HEADER/REC01/BINDER1 = Msg/UNH/0062; BREPLACE Msg/UNH/0062 IN b0 AT 1; END

4 . 3 -% 2 *8

6

::= ″CHECK″ [ ″FOR″ ] 6 ? %

M 4 %+ M0 M . 4 %2

0 6 J2

2 M

,!

+ :

?

>

2

FOR

K

CHECK Ichg/UNZ/0020 = Ichg/UNB/0020 FOR Ichg/UNZ/0020;

4 . A 1%0" *8

6

::= ″CLEAR″ 6 #

2

%

2

6 J2

1 2 2

K

CLEAR ENVELOP; WHILE NEXT(HEADER/REC01) DO READ HEADER/REC01; LINK ENVELOP; WRITE ENVELOP; END; J2

K CLEAR ENVELOP; WHILE NEXT(Ichg/UNB) DO READ Ichg/UNB; LINK ENVELOP; WRITE ENVELOP; END

4 . B 1%0" #$! *8

6

::= ″CLEARCOUNT″ 6 ,!

5 52

2 5

%

2

0 1

1 !

1 0

5

15 J 0 0 1 K

2

6

CLEARCOUNT ENVELOP;

4 !5 #

6 #

7"(

* 15

*@

*/ (/(

*

'

4 .5 # *8

6

::= ″COMMIT″ 6 ,! 2

5

5

-

2

!!

%

5! 0

!

1

%

?

C ! 5 , 2 "

50 2

6

COMMIT ENVELOP;

4. + *8

* 10E

6

::= ″DISPLAY″ 6

%

6

DISPLAY "Hello″″ + ″ World"

4. *8

&% 6

::= ″FIXED″ ″=″ 6 + 2

CHECK

. 2 0 ,!

. 2 0

+

2

5! %

;

?

;

0 CHECK

?

1

5!

0

? 2 ? 2

2

?

*/ (/(

*

2

6 FIXED Msg/UNH/0062 = "1"

4. , *8

#" F

#F

#

6

::= ″FOR″ ″=″ ″TO″ ″DO″ ″END″ 6 2

%!

0



2

2

2

,!

,! %

6 J2

K

IF BSIZE(B0)>0 THEN FOR I0=1 TO BSIZE(B0) DO BREAD B0 AT I0; WRITE HEADER/REC01; END END 4 !5 #

6 #

7"(

* 15

**

4. / *8

F

-%! F %1*%

6

::= ″IF″ ″THEN″ { ″ELIF″ ″THEN″ } * [ ″ELSE″ ] ″END″ 6 if J

2 ,! 2 % 50 ? 0 , 5 %! ! ? 2 ! %

6 J2

2

elifK % 50 ? , %! %! 2 0 else % 50 2 2 , 2 %! 0 1 ,

2 ! ?

0

, ? !

K

IF HEADER/ADDRESS_DP ″″ THEN LINK NAD_DP; WRITE Grp2/NAD; IF HEADER/PHONE_NR 0 THEN LINK COM_TE; WRITE Grp3/COM; ELIF HEADER/FAX_NR 0 THEN LINK COM_FAX; WRITE Grp3/COM; END END J2

K IF Msg/DTM/2001 0 THEN Msg/DTM/2001 : HEADER/DATE1; ELSE HEADER/DATE1 = DATE; END

4 . . 1 !2 *8

6

::= ″LINK″ 6 +

1

? ,

%

6

-

2

0

%

2

%!

%

?

15

.

:LINK DTM1 Msg/DTM/2001 : KOP/Del_Date_Late; :LINK DTM2 Msg/DTM/2001 : KOP/Del_Date_Early; 9

5J

0

%!

K.

WHILE NEXT(Msg/DTM) DO READ Msg/DTM; IF Msg/DTM/2005 = "063" THEN LINK DTM1; ELIF Msg/DTM/2005 = "064" THEN LINK DTM2; END END

4 !5 #

6 #

7"(

* 15

*)

*/ (/(

*

'

4 . 4 !% *8

)0*%

6

::= ″NEWBASE″ [″DELETE″ ]

6 +

2 >

1

?

2

0

0

? 51

%

6

+

O 0 2 1

0 1

2

2 !

2 1

2 1 -

0 1 !5

2

2

2 0

> ? !5

#

2 5! A=:? 2 ? " % base name 2 ; : ! ! J 2 K

2 ; : !

! "> ? 2

:LINK HEADER i0 = i0 + 1; NEWBASE HEADER ″order.″″+STR(i0); 0 order.2? order.3

2 "

4 . 3 !% *8

2

?

2

50

order.1?

1

1%

6

::= ″NEWFILE″ [″DELETE″ ] 6 4 J 2 ?

; 2 = : A=:K? " ; : ! !

%

> 2 0 1 ? 1

"> 2 0

?

0 ; 2 0 2

0

-

0 2 1 2 1

; 2

!

A=: ; 2 2 2 ; : !

2

1 0

5!

O

1

-

>

?

0

6

:LINK UNH i0 = i0 + 1; NEWFILE ″EDI.″″+i0 DELETE (CURFILE = ″EDI.EDI″″); 0 EDI.003 -+ :

2 2 40 ?

4. A *8

2 ? 2 ; ; 0 0

0 2

2 ?

50 2 0

1 1

EDI.001? EDI.002? 2

"%"%0

6

PREREAD

(for construction)

PREREAD

(for translation)

6 5? 0 PREREAD 2 !

4 !5 #

6 #

1

5? 1 "

! + ! 2

7"(

* 15

A=:

"

, 2 2 H

A

*7

!

1 J1

? 0 1 = : A=:

2 K? 0

*/ (/(

*

%

6 PREREAD Grp22/LIN; IF Grp22/LIN/5495 ″″ THEN WRITE HEADER_1; ELSE WRITE HEADER_2; END WHILE NEXT(Grp22/LIN) DO READ Grp22/LIN; …

4 . B "%0 *8

6

READ

J2

READ

J2

K K

6 ?

; = : A=:

J1

? K?

! H

0

%

READ 2

"

+

A=:

"

2 2

! !

2

A

6

J+

K WHILE NEXT(HEADER) DO READ HEADER; LINK UNH; … END

J+

K WHILE NEXT(Grp22/LIN) DO READ Grp22/LIN; LINK LIN; … END

4 . 5 "% %0 F $! *8

1

6

::= ″REPEAT″ ″UNTIL″ 6 4

,

%

%!

1

6 REPEAT READ Grp22/LIN; LINK LIN; WRITE DETAIL; UNTIL Grp22/LIN/1082 > 1000;

4 !5 #

6 #

7"(

* 15

*

*/ (/(

*

'

4 . ,+ "%*% *8

0" 0)1%*

6

::= ″RESETVARIABLES″ 6 # 1 0

1 #B >

%

?

i0"i49? n0"n49 0! 2 2

s0"s49 1 0

5? !?

1 0

!5

6 RESETVARIABLES;

4 ., *8

"%* #"% #* 6

::= ″RESTOREPOS″ | { ″RESTORE″ } 6 #

! = : A=:

! K? 0

5 15SAVEPOS + RESTOREPOS 2 !

A=: " ! 2

2

J1 A

2 H

!

Example:

4 !5 #

6 #

7"(

* 15

*

*/ (/(

*

J+

K READ Msg/UNH; SAVEPOS ; READ Msg/BGM; s0 = ″DPNO″″; WHILE NEXT(Msg/NAD) DO READ Msg/NAD; IF Grp2/NAD/3035 = ″DP″″ THEN s0 = ″DPYES″″; END END RESTOREPOS; READ Msg/BGM; IF s0 = ″YESDP″″ THEN WHILE NEXT (Msg/DTM) DO READ Msg/DTM; LINK DTM; END END

J+

K SAVEPOS HEADER; WHILE NEXT(HEADER) DO READ HEADER; LINK UNH; WRITE Msg/UNH; WHILE NEXT(DETAIL) DO READ DETAIL; LINK DTM; WRITE Msg/DTM; END END RESTOREPOS HEADER; WHILE NEXT(HEADER) DO READ HEADER; LINK NAD; WRITE GRP2/NAD; WHILE NEXT(DETAIL) DO READ DETAIL; LINK LIN; … END END

4 . ,, "#11)0 2 *8

6

::= ″ROLLBACK″ 6 ,!

%

5 1 0 5 , -

% 2

5

2 0

!!

!

0

2 ?

1 1

%

C ?0 5 , 2 "

50 0 2

6

ROLLBACK ENVELOP;

4 !5 #

6 #

7"(

* 15

)

*/ (/(

*

'

4 . ,/ "$! *8

6

::= ″RUN″ 6 #

2 %2

%

! 1

2 2

2

B !

0

5

"

2

"

2

!

6 ;

0

.

:MESSAGES ″ORDER901.EMD″″ ″ORDER901.ELD″″ ″ORDERD93.EMD″″ ″ORDERD93.ELD″″ :;

0

.

IF HEADER/UNH_MSGVS=″″EAN005″″ THEN RUN ORDERS_901; ELIF HEADER/UNH_MSGVS=″″EAN007″″ THEN RUN ORDERS_93A; ELSE CHECK FALSE FOR HEADER/UNH_MSGVS; END 0

=;L 0

.

:MESSAGE ORDERS_93A

:MESSAGE ORDERS_901

4 . ,. *0 % #* *8

6

::= ″SAVEPOS″

(for translation)

::= ″SAVEPOS″

(for construction)

6 ! = : A=:

2

! K? 0

%

" SAVEPOS 2 !

2 ! 2

+

A=:

A

J1 2 H

!

6 *@(

4 . ,4 *% *8

"0 % F

6

::= ″SET TRACE″ { ″ON″ | ″OFF″ } 6 0

2 2 1

! !

1

4 !5 #

6 #

7"(

* 15

5 , SET TRACE ON / " 2 !

1 SET TRACE OFF ? 0 1 !

)

! ? 5

2 0

/ !

5

" ?

2

2 15 2

*/ (/(

*

4 . ,3 *8

- 1% F

#

6

::= ″WHILE″ ″DO″ ″END″ 6 # !

5 ,

%

6

1

H

%!

WHILE NEXT(Msg/UNH) DO READ Msg/UNH; LINK UNH; … END

4 . ,A *8

"

%

6

::= ″WRITE″ 6 !!

2 WRITE 0

K?

2

?

+ !

A=:

"

1

2

J1 2 2

!!

= : A=: 2

?

1

02

! %

6

J+

K WHILE NEXT(HEADER) DO READ HEADER; LINK UNH; WRITE Msg/UNH; LINK BGM; WRITE Msg/BGM; END

J+

K WHILE NEXT(Msg/UNH) DO READ Msg/UNH; LINK UNH; READ Msg/BGM; WRITE HEADER; END

4 . ,B & 10 *8

%!

-1

6

::= ″XMLAPPENDCHILD″ ″TO″ 6 !!

!

2 0

? 2

1 5

5 !! ?

4 !5 #

6 #

7"(

* 15

xml expr 1 !! xml var 2

50 #

xml varO

xml expr xml var 2 ? 2 xml expr 1 0 + ? 5 1

5 !!

0

* )(

*/ (/(

*

'

%

6

XMLAPPENDCHILD x1 TO x2; XMLAPPENDCHILD XMLCREATEELEMENT( x2, ″EMPTY″″ ) TO x2; x2

!5 ? ? 1 0 Text C 0 0? 1 -

4 . ,5 & 1*% 0 *8

x1

2

! 2

Text 2 ! 2 15x1 ELEMENT ! 15x2

0 15x2

2 2

" )$ %

6

::= ″XMLSETATTRIBUTE″ ″IN″ 6 !

1

!

2

2

0 1

xml expr

2

0 F?

2

%

6

1 0 1

1 1 A0

F

xml expr xml var 2

xml varO 2

1

5 51 2

2 1

1 1

E?

xml var ? 2 ! 5 !! 50 1 1 2

A

XMLSETATTRIBUTE x1 IN x2; x2 2 ? A=”newValue” C=”valueC”? 1 0 C 0 2 0? 1 5 1 ! 15x2

x1 2

!

1 15x2 ! 2 15x1 2 ELEMENT

4 . /+ & 1 !*%" *8

6

::= ″XMLINSERT″ [ ″BEFORE″ | ″AFTER″ ] 6 !

2

xml expr 2 2

0 1

1

0

%

xml expr ?

5

1 1 1 2 5 !!

1 2 ?

0

xml var

2

2 xml var 5 !! xml var ? xml expr

50

6

XMLINSERT XMLCREATEELEMENT( x2, ″EMPTY″″ ) BEFORE x1; x2 2 ? ? 1 0 2 15x2 ? =

)

AND? OR

9!

0

% !

2

2

444 %

.

IF i0 > i1 THEN i2 = i0; ELSE i2 = i1; END 4

i2

!

2i0

,

,! ! 4 !5 #

0 5 6 #

7"(

* 15

i1 ,!

0

0

0 ))

,! 5 ! ,!

IF … THEN … ELSE?

*/ (/(

*

'

IF Expr1 THEN Expr2 ELSE Expr3 END ,!

* + 2 2* ,

1 9 5 0

2

2 ,!

? 9

0

*

,! ? * i2

* , ? 2i0

,

? 1 i1 5

?

i2 = IF i0 > i1 THEN i0 ELSE i1 END 1 ,!

,! 1

5

,!

1

0

5

, .

::= ″IF″ ″THEN″ ″ELSE″ ″END″

443 ,!

1 5

2

1

?

JK?

1

2

.

::= [ ″.″ ]

*)

+

+

2 !

5?

15

2!

2 ?

!

0 5 2 2

!

5! ? % 5 5 , 2 2

,!

?

?

.

::= [″(″ ″)″] ::= { ″,″ } * !

5!

5! ? 0

!

2

2

!

2 5

0

0 2

1 0

2

!

0

43

0)* #$! 6

ABSCOUNT( | | ) "

8

6

6 #

1

2

2

?

!

2

$1 %

6

2

2

2 !

%

%.

:MESSAGE ORDERS_901 "Purchase order" ( Ichg 0 200000 UNB 1 1 "Interchange Header" ( Msg 0 200000 UNH 1 1 "Message header" BGM 1 1 "Beginning of message" RFF 0 10 "References" NAD 0 5 "Name and address" DTM 0 5 "Date/time reference" … %

4 !5 #

6 #

7"(

%.

* 15

)7

*/ (/(

*

UNB+UNOA:2+871039200:14+871471019:14+950208:1000+ORDERS1' UNH+1+ORDERS:2:901:UN:EAN005' BGM+105+03039580+950208:1210' RFF+TL+BTWACC' NAD+BY+8710392000000:14' NAD+SU+8714700100019:14' NAD+DP+8710392959999:14' NAD+IV+8710624900001:14' DTM+064+950215+0700' …

i0 = ABSCOUNT(Ichg/Msg/NAD); i0 1

-

@

4 3 , 0)* 0 % *8

6

ABSDATE( ) "

8

6

6 #

1

%

2 5 1

0

G

?

7

6

i0 = ABSDATE("19700104"); i0 1

-

'?

G

1

!

@ ?

7 1

5

G

?

2 5 1 0

7

.

i0 = ABSDATE("200304011")- ABSDATE("200304009"); i0 1

-

(N

4 3 / 0)**%' #$! *8

6

ABSSEGCOUNT( | ) "

8

6

6 # %

1

2

2

$1

6

2

2

2 !

%

%.

:MESSAGE ORDERS_901 "Purchase order" … UNS 1 1 "Section control" ( Grp2 0 200000 LIN 1 1 "Line item" PIA 0 10 "Additional product id" ) UNS 1 1 "Section control" … 4 !5 #

6 #

7"(

* 15

)

*/ (/(

*

'

%

%.

… UNS+D' LIN+1++8714700276024:EN++21:78' PIA+1+92:PV' LIN+2++8714700013759:EN++21:60' LIN+3++8714700013735:EN++21:60' LIN+4++8714700613027:EN++21:80' UNS+S' …

i0 = ABSSEGCOUNT(Grp2/LIN); i0 1

-

@ LIN

@?

4 3 .)*%0" 6 BSEARCH( , [, ] ) "

8

6

6 -

V

,! W 5 >

? 0

V ,! W 5 % 5? .+ 15

%

> ? 2

, 2 5

"> >

1 %0 2 ?

2

! 1

0

2

%5

2 5 5?

? 2



, 2

2

2 V

,! W

">

6 BCLEAR b0; BAPPEND Msg/UNH TO b0 KEY "UNH"; BAPPEND Msg/UNT TO b0 KEY "UNT"; BAPPEND Msg/BGM TO b0 KEY "Begin"; BAPPEND Ich/UNB TO b0; DISPLAY STR(BSEARCH(b0,"UNH")); DISPLAY STR(BSEARCH(b0,"Begin")); DISPLAY STR(BSEARCH(b0,"RFF")); DISPLAY STR(BSEARCH(b0,"UNB")); 6

W W' W W

4 3 4 )* G% 6 BSIZE( ) 6 # %

1

2

1

J

?

K

1 2 2

6 .

4 !5 #

6 #

7"(

* 15

)

*/ (/(

*

BCLEAR b0; READ Grp1/NAD; BAPPEND Grp1/NAD TO b0; READ Grp1/RFF; BAPPEND Grp1/RFF TO b0; i0 = BSIZE(b0); i0

-

# # # # #

clear buffer b0 read NAD segment append NAD seg to b0 read RFF segment append RFF seg to b0

(

4 3 3) E % 6 BTYPE( , , | ) "

8

6

6 # expr>

#B 2 1$

%

6

2

5!

5!

2

2

1

!



?5

2

2

. %# 6

EOF( ) "

8

6

6 #

#B

2

2

15

2

!

5

?+ :

0 %

6

:CONSTRUCT WHILE NOT EOF(ENVELOP) DO READ ENVELOP; … END

43

4 %# H% 6

EOF_EDI "

8

6

6 #

#B

%

6

2

; 2

1

!

5

?+ :

0

:TRANSLATE WHILE NOT EOF_EDI DO READ Int/UNB; … END

43

3 %& 0! H 0 % 6

EXPAND_DATE( [, [, [, ]]] ) "

8

6

6 # ,! 2 1 YYMMDD 2 ? CCYYMMDD 2 51 2 2 5 2 ? 1 2 2 0 ,! 1 1 2 ? 2 + 2 DATE? 2 2 2 > ? 2 0? 0 2 5 "> 2 1 2 2 5! ?

4 !5 #

6 #

7"(

* 15

7'

*/ (/(

*

%

6 ! 2

2 G

B K.

?

?

2

0

J


K *S0 1 7 ( ' '? ( ' @

J J

J

( ' ' 'K

!! 0 !5 K2 !50 + LAST_ERROR ! ?

15 ,

1 ?

2

1 52

1

2

6

READ UNH; s0 = LAST_ERROR(0); s1 = LAST_ERROR(1); s0 = LAST_ERROR(0); s0 1

-

!5

?

s1 1

H

15READ UNH;? 2

5

43,

1% 6

LEFT( , ) "

8

6

6 # > 0

?

%

!5 0 1

! 0

2 1

? 0 ? 2

2 2

?

6

s0 = LEFT( ″A quick brown fox jumps over the lazy dog.″″, 7 ); s0 1

-

H

″A quick″

4 3 ,, 1%! 6 LEN( ) "

8

6

6 # %

2



6

i0 = LEN(″″The length of this line″″); ? i0 0

2 4 !5 #

6 #

7"(

* 15

(' 7*

*/ (/(

*

4 3 ,/ 1##2$ 6 LOOKUP( , ) "

8

6

? 6 % 2

2 X2

J

!

0 2 K B

V C

I

2 1

2

5

,! W

?0

H

0

2

0

2

0 2

1 2

! .

"

0

# 0

#B

2

0

2

9

0

+ :

;

1

# 0

#B

2

0

2

9

0

+ :




4 !5 #

?

6 #

2 !5

7"(

* 15

1 2! ? 2

7

2

2 2

2 ?

*/ (/(

*

%

6 2

0

,

M timeM

! ? 2

?

! 2

@

s0 = RIGHT( ″Summertime″″, 4 )

4 3 /. " 0 6 RPAD( , , ) "

8

6

6 0

; %

2

! 5 H

6

:LINK UNH Msg/UNH/0062 = RPAD(STR(i1),″″0″″,14); Msg/UNH/0062 1

0

H

″10124500000000″ 2i1 H

101245

4 3 /4 " #* 6 RPOS( , ) "

8

6

6 # expr 2> %

!

2 1 2

2

?

"

2= 0 ) THEN DISPLAY ″s0 contains a full stop″″; DISPLAY ″The last one is at position ″ + STR(i0) END

4 3 /3 " " 6 RTRIM( [, %

$

1 2 " !

15 2

?

0 %

6

XMLAPPEND XMLCREATEELEMENTTEXT( x2, ″EANCODE″″, ″8700000123456″″ ) TO x2;

433

& 1"% # % 6

XMLREMOVE( ) "

8

6

A=: 6 B

%

2

2

0 1 0

%

xml expr 2 1

15XMLCREATE… ! 1 % 0

? !

? ?$

1 1

H ?

%

5

? 5! !

6

XMLAPPEND XMLREMOVE( x2/{./*[1]} ) TO x2; 1 x2

0 2

!

2

2

15x2

2

0

?

-

2 2

x2 15x2

? 5

2 2 x2

.-

2

2

! 15x2?

2 2

0

?

0 2 2 0 1 !!

5

2 2

15x2

x1 = XMLREMOVE( x2/{dtd()}; 4 !5 #

6 #

7"(

* 15

*/ (/(

*

'

0 5!

; ;! x1 51

2

4 3 3, & 1 01

2

? 2 2 !

5

!!

!

2

; ;!

0 %

6 XMLVALIDATE( [, [, ]] ) "

8

6

A=: 6 xml expr

2

0

0

0 5 2 ? " num expr ! 0 ! 2 15num expr 0 2 XMLVALIDATE 0 6060 6078 2 0 ? !! 0 ! ! 1 2 XMLVALIDATE 2 2 0 2 2 :XMLWARNINGS " 2 2 ?5 ! string expr 0 !! ! ? 0 6060 ! 2 ? 6061 ! ? ! 1 2 string expr D J 2 K? E J K? I J K? M J K W J0 K ? 0 2 5 %

!

6

x1 = XMLVALIDATE( PRODAT, -1, ″WWWWWWWWWWWWWWWWWWW″″ ); 1

0

A=:

$

2 0

) 7

, 2 ?

#9;

5

.

x1 = XMLVALIDATE( PRODAT, -1, ″DDDDDDDDDDI″″ );

*7 2 1 2 2

2 2 4(5 ! ! 2 5 1 2 2 J1 D 1@ K 5 50 2

C 2

,

K ! .

? !?

1 2 2 1 2 5! 2

4A * C


? , ?

0

RecB

SegC

GrpD

FldE

1

2

3

4

5

*.

1 ? 2

2 2 !

2 1

?5 2!

5 * ! " 2

2 L

! J

5

%

2

0

VarA

=

2

2

5

5!

* 1 2 2 2 ?0

2 1

!

1 2 2 1 0

B0 :



H ? 5? 5

? !

?

5 ?

? ? 1 2 2 ?

= = 1 2 2

2

2

0

.

BAPPEND

4 !5 #

6 #

7"(

* 15

*/ (/(

*

• •

BINSERT BREPLACE

B BAPPEND? 1 2 2 > 0 5

2 15

!!

"? " 1 2 0 , ! ?5 Header/Recipient 1 2 2 2 0

0 0

1

!! 0 BAPPEND 1 2 2

2

1 2 2

1 !

?

.

BAPPEND Header/Recipient TO b0 1 2 2 2 Header/Recipient 0 % %.

2 1 2 2 1 2 BAPPEND

B0 :

1 2 2

BAPPEND 0

2

? 1$ BINSERT J

0

VarA

RecB

1

2

21 2 2 b0

.

? 2

1 .

B0 :

BINSERT 0 2 SegB 1 2

01

VarA

RecB

Header/Recipient

1

2

3

1 15 ? BAPPENDK?

! 1 2 2

0 2

>

, 1 1 2 2

2

2 VarA

BINSERT Header/Recipient IN b0 AT 1 1 2 2 0

1 .

B0 :

BREPLACE

Header/Recipient

RecB

1

2

3

!

!

.-

4 A, "

1 2 2

0

1 2 2 0

>

2 .

1

2 2 2

5

2 1 2 2

1 2 2 ;

!

= 2

!

2 2 1


?

0

1 2 2 0 ? ?

1 2 2

1

VarA

= 2

1

= =

1 2 2?5 5

5 1 2 2

BSIZE 2

1

% 0 2

>

-

5

% 0 > 2

?

BSIZE( b0 ) -

' BSIZE 2

B

?5

2

0

!.

FOR i0 = 1 TO BSIZE( b0 ) DO BREAD b0 AT i0; i0 = i0 + 1; END BREAD

2

1 2 2

-

BREAD b0 AT 1

4 !5 #

6 #

7"(

* 15

*/ (/(

*

'

C

2 ! 2

?

1

0

0

! 5 0 s0 H

1 ?

? 25

!

VarA 0

50

2VarA

0

5

b0

″1111″.

s0 = ″1111″″; BREPLACE s0 IN b0 AT 1; s0 = ″2222″″; BREAD b0 AT 1;

4 A/


H

BCLEAR .

0 >

BCLEAR b0; BAPPEND VarA TO b0; -

2

0

1 2 2.

B0 :

VarA 1

4 A .*


A=: 1 0

1

2 2

5 A=:

!

, 2

0

-'4 !! 15

2 2

5 2

!

0

5

%

5

2

2 ?0

-

0

15

!

%! 2

A=: 2! 5

? 2A=:

!

2 "

'()

2

!

15 , 2 % ! 5 2 2 0 2 ?0

/

,

5!

A=:

0

?

1

!

!

A=:

4 B, & 1 :%

5 A=: ? H 5 2 -

? A=: 2 2

5 1 WRITE ?! ?0 ! 2 /

! 2 0

!

2 5

? 2 2 H 1

!

2

2 ? 2 A=: XPATH 1.0 1 ;

1

2 %

J

PA 1

0 2

? ,!

!

2 02

!"15" ! !! 2 A=: "

2 ! $ 1 2 NEWBASE NEWFILE

>

2 2 ? 6 #

QK

! WRITE 2

0 A=: A=:

2

"1 2

!!

H

2 ,1 ? ?0

1

A

4 !5 #

!

,! !

! 51 2 ? READ

1

1

?

! 7"(

% 0 * 15

5 2 2 ! 1

2

A=: ;9= J

P;9=QK? 5 ,!

0

2 %

! ! 5! @

*/ (/(

*

'

*

(

?

5! ? ! 2

? !

?0

!

/

1 2

? 0 5 2 % ! ! J A •

1

1 0

?

!

A=:

1

0 1

2

1

?

?

2 !

0 52

!

2 ! !

15

!

0

!

2

1

2

! !

"

!?

?

5 ,

K

/

#

5! ? 0

.

#

• •

,



1



!

• •

J

K

4 A=:

?0

!

?

!

! !

1

!

?

5

>

2

J

K

5

5! ?

%

? !!

,? ! 50

5 A=:

1 5 2 2 A

2

,? ! 2

1

5

5

A=:

!

0

!

% !?

%! 2

5!

50 !

2 2

% !? 0

?

! 1

!5 ! ?

%!

0 5?

5 ?

0 5 ?0 QK? ?

=

2

2

! !

PA=: 2

9 2

, 2

2 5

5

5! ! 2

2 B

1

A=:

0

! 0

?1

1

0

! %! 2

2

1

1 !

! ?

1

2 ?! ?0

!

1 5

!

2

J %!

!5

2 5 ? 5

?

!

,

2

2

1

!

!

4 B/ % 2

0

! !

,!

! ,!

4 !5 #

6 #

7"(

2

* 15

! ! $ A=:

*

* !

!

*

(

1

?

*/ (/(

*

4

2

0

A=:

J

0

!!

2

1

5K

Gait Boxman 164 Beach Avenue Schiphol-Rijk 1019 PS Colin Barham 162 Beach Avenue Schiphol-Rijk 1019 PS Enterprise Portal 3 9999.95

4 !5 #

6 #

7"(

* 15

)

*/ (/(

*

'

0

!

!

2!

2

!

A=:

.
; ;!

!

2

2 2 ! ,

0

! 1

! ! !

1

!

! 0

!

!

0 5?

5!

+

?

! ? ?0 !

!

"

!? 0 !

1 5

2A=: 2

1 !

1

?

5

* 15

7

*/ (/(

*

4 B .& 0 .

!

A=: !

2

JA

50

A

!

2

K

2 5

1 ! 2

,

2 #

A

! ! ! ? A 5

?0

5! ! ! ! ?

5! 2



1 J

"!

H

1

2

">

2 1

,! ,! 52

? ! 2 > 1

*

,? 1 $ ! 2 , ! , ! BillTo ! ? ,! ?

5 ?

H

6 #

,! , ? 2

1

K

5

2 5 5! ? !

2

+ 51

2 1

5? ! 5 1

* 15

,

!

20 2 , 2 2

!?

% ?

?0 ?

5

1

1 5

1 !

,2

?1

0 ! "Gait Boxman"

2 0

"

!

! 50

5 !

2

1 2 1

!

?

! ,

? 2

! 1

$ !

5A=: +

2 ?0

? 2 A

?

7"(

2 . JK

0

%5

1

,

!

0

2

2 !

5

A

2

H

"

K

,

?0

2 2

1 ,!

?

,!

5 2 2 ! 1 ! 5 2 ? D2 ,

J

, 2

0 5?

2 2 5! 2 0 5 ! 2 5 !! A=:

!

! 2

2 ! 2 2 52 0 -

,! 5! .

!

! 2 2

5! Name ,

2

1

,!

9

1

J

%

0 5 2 A 2

A=: ?

2 A

0

!

-

,

5 A

5

2 2

!

1

K

!

1

2



2

1

K

2

• •

!! ? B#

B#: 2

A

1

0

K

J !

A=: 2 2A 0 2 A=:

2 !

0



4 !5 #

2

A 0 2

5

K

,! •

2

!

2 2

J 2



2

! 2

J J

2

2

2

2

Q.

2

! 5 5 1$ ? 0 •

2 PA

,

2



0

A=: 1

? 5!

2 !1

2A 1 2 "A=: 5 , 1 ? 2 2 A=:

! ,A

A

!

!

?5

2 ;

2 02 Name 5! 0 2 2 ,1 5 0 ?0

11

*/ (/(

*

'

4 B4 "