!
"# $ %
&' ( ")* + , &' ( ")* ---.
!.//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 "