aboutsummaryrefslogtreecommitdiffhomepage
path: root/core/src/Text/Edifact/Common
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Text/Edifact/Common')
-rw-r--r--core/src/Text/Edifact/Common/Composites.hs135
-rw-r--r--core/src/Text/Edifact/Common/Segments.hs10
-rw-r--r--core/src/Text/Edifact/Common/Segments/UNA.hs34
-rw-r--r--core/src/Text/Edifact/Common/Segments/UNB.hs63
-rw-r--r--core/src/Text/Edifact/Common/Segments/UNH.hs44
-rw-r--r--core/src/Text/Edifact/Common/Segments/UNS.hs27
-rw-r--r--core/src/Text/Edifact/Common/Segments/UNT.hs30
-rw-r--r--core/src/Text/Edifact/Common/Segments/UNZ.hs24
-rw-r--r--core/src/Text/Edifact/Common/Simples.hs271
9 files changed, 638 insertions, 0 deletions
diff --git a/core/src/Text/Edifact/Common/Composites.hs b/core/src/Text/Edifact/Common/Composites.hs
new file mode 100644
index 0000000..39f61e7
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Composites.hs
@@ -0,0 +1,135 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Composites
4 ( compositeS001
5 , compositeS002
6 , compositeS003
7 , compositeS004
8 , compositeS005
9 , compositeS009
10 , compositeS010
11 ) where
12
13import Text.Edifact.Common.Simples (simple0001, simple0002,
14 simple0004, simple0007,
15 simple0008, simple0010,
16 simple0014, simple0017,
17 simple0019, simple0022,
18 simple0025, simple0042,
19 simple0046, simple0051,
20 simple0052, simple0054,
21 simple0057, simple0065,
22 simple0070, simple0073,
23 simple0080, simple0133)
24
25import Text.Edifact.Parsing
26import Text.Edifact.Types (Value)
27
28-- | Derived from this specification:
29--
30-- > 010 0001 Syntax identifier M a4
31-- > 020 0002 Syntax version number M an1
32-- > 030 0080 Service code list directory version number C an..6
33-- > 040 0133 Character encoding, coded C an..3
34--
35-- Dependencies: 'simple0001', 'simple0002', 'simple0080', 'simple0133'.
36compositeS001 :: Parser Value
37compositeS001 =
38 composite "S001"
39 [ "010" .@ mandatory simple0001
40 , "020" .@ mandatory simple0002
41 , "030" .@ optional simple0080
42 , "040" .@ optional simple0133
43 ]
44
45-- | Derived from this specification:
46--
47-- > 010 0004 Interchange sender identification M an..35
48-- > 020 0007 Identification code qualifier C an..4
49-- > 030 0008 Interchange sender internal identification C an..35
50-- > 040 0042 Interchange sender internal sub-identification C an..35
51--
52-- Dependencies: 'simple0004', 'simple0007', 'simple0008', 'simple0042'.
53compositeS002 :: Parser Value
54compositeS002 =
55 composite "S002"
56 [ "010" .@ mandatory simple0004
57 , "020" .@ optional simple0007
58 , "030" .@ optional simple0008
59 , "040" .@ optional simple0042
60 ]
61
62-- | Derived from this specification:
63--
64-- > 010 0010 Interchange recipient identification M an..35
65-- > 020 0007 Identification code qualifier C an..4
66-- > 030 0014 Interchange recipient internal identification C an..35
67-- > 040 0046 Interchange recipient internal sub-identification C an..35
68--
69-- Dependencies: 'simple0007', 'simple0010', 'simple0014', 'simple0046'.
70compositeS003 :: Parser Value
71compositeS003 =
72 composite "S003"
73 [ "010" .@ mandatory simple0010
74 , "020" .@ optional simple0007
75 , "030" .@ optional simple0014
76 , "040" .@ optional simple0046
77 ]
78
79-- | Derived from this specification:
80--
81-- > 010 0017 Date M n6
82-- > 020 0019 Time M n4
83--
84-- Dependencies: 'simple0017', 'simple0019'.
85compositeS004 :: Parser Value
86compositeS004 =
87 composite "S004"
88 [ "010" .@ mandatory simple0017
89 , "020" .@ mandatory simple0019
90 ]
91
92-- | Derived from this specification:
93--
94-- > 010 0022 Recipient reference/password M an..14
95-- > 020 0025 Recipient reference/password qualifier C an2
96--
97-- Dependencies: 'simple0022', 'simple0025'.
98compositeS005 :: Parser Value
99compositeS005 =
100 composite "S005"
101 [ "010" .@ mandatory simple0022
102 , "020" .@ optional simple0025
103 ]
104
105-- | Derived from this specification:
106--
107-- > 010 0065 Message type M an..6
108-- > 020 0052 Message version number M an..3
109-- > 030 0054 Message release number M an..3
110-- > 040 0051 Controlling agency M an..2
111-- > 050 0057 Association assigned code C an..6
112--
113-- Dependencies: 'simple0051', 'simple0052', 'simple0054', 'simple0057', 'simple0065'.
114compositeS009 :: Parser Value
115compositeS009 =
116 composite "S009"
117 [ "010" .@ mandatory simple0065
118 , "020" .@ mandatory simple0052
119 , "030" .@ mandatory simple0054
120 , "040" .@ mandatory simple0051
121 , "050" .@ optional simple0057
122 ]
123
124-- | Derived from this specification:
125--
126-- > 010 0070 Sequence of transfers M n..2
127-- > 020 0073 First and last transfer C a1
128--
129-- Dependencies: 'simple0070', 'simple0073'.
130compositeS010 :: Parser Value
131compositeS010 =
132 composite "S010"
133 [ "010" .@ mandatory simple0070
134 , "020" .@ optional simple0073
135 ]
diff --git a/core/src/Text/Edifact/Common/Segments.hs b/core/src/Text/Edifact/Common/Segments.hs
new file mode 100644
index 0000000..e73719f
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments.hs
@@ -0,0 +1,10 @@
1module Text.Edifact.Common.Segments
2 ( module S
3 ) where
4
5import Text.Edifact.Common.Segments.UNA as S
6import Text.Edifact.Common.Segments.UNB as S
7import Text.Edifact.Common.Segments.UNH as S
8import Text.Edifact.Common.Segments.UNS as S
9import Text.Edifact.Common.Segments.UNT as S
10import Text.Edifact.Common.Segments.UNZ as S
diff --git a/core/src/Text/Edifact/Common/Segments/UNA.hs b/core/src/Text/Edifact/Common/Segments/UNA.hs
new file mode 100644
index 0000000..1b20a9f
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments/UNA.hs
@@ -0,0 +1,34 @@
1module Text.Edifact.Common.Segments.UNA
2 ( segmentUNA
3 ) where
4
5import Text.Edifact.Parsing
6import Text.Edifact.Parsing.Commons (updateSyntax)
7import Text.Edifact.Types (Syntax (..), defaultSyntax)
8
9import Control.Monad (void)
10import Text.Parsec (anyChar, char, endOfLine,
11 optionMaybe, string, try)
12import qualified Text.Parsec as P (optional)
13
14segmentUNA :: Parser ()
15segmentUNA =
16 let segmentParser = string "UNA" *> parseSyntax <* P.optional endOfLine
17 nothing = pure ()
18 in optionMaybe (try segmentParser) >>= maybe nothing updateSyntax
19
20parseSyntax :: Parser Syntax
21parseSyntax = do
22 compositeSeparator' <- anyChar
23 elementSeparator' <- anyChar
24 decimalSign' <- anyChar
25 escape' <- anyChar
26 void $ char ' ' -- reserved, not used
27 segmentSeparator' <- anyChar
28 pure defaultSyntax
29 { compositeSeparator = compositeSeparator'
30 , elementSeparator = elementSeparator'
31 , decimalSign = decimalSign'
32 , escape = escape'
33 , segmentSeparator = segmentSeparator'
34 }
diff --git a/core/src/Text/Edifact/Common/Segments/UNB.hs b/core/src/Text/Edifact/Common/Segments/UNB.hs
new file mode 100644
index 0000000..55f1eea
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments/UNB.hs
@@ -0,0 +1,63 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Segments.UNB
4 ( segmentUNB
5 ) where
6
7import Text.Edifact.Common.Composites (compositeS001, compositeS002,
8 compositeS003, compositeS004,
9 compositeS005)
10import Text.Edifact.Common.Simples (simple0020, simple0026,
11 simple0029, simple0031,
12 simple0032, simple0035)
13
14import Text.Edifact.Parsing
15import Text.Edifact.Types (Value)
16
17-- | Derived from this specification:
18--
19-- > Pos Segment M/C Repeat Repr. Notes
20-- > 010 S001 SYNTAX IDENTIFIER M 1
21-- > 0001 Syntax identifier M a4
22-- > 0002 Syntax version number M an1
23-- > 0080 Service code list directory version number C an..6
24-- > 0133 Character encoding, coded C an..3
25-- > 020 S002 INTERCHANGE SENDER M 1
26-- > 0004 Interchange sender identification M an..35
27-- > 0007 Identification code qualifier C an..4
28-- > 0008 Interchange sender internal identification C an..35
29-- > 0042 Interchange sender internal sub-identification C an..35
30-- > 030 S003 INTERCHANGE RECIPIENT M 1
31-- > 0010 Interchange recipient identification M an..35
32-- > 0007 Identification code qualifier C an..4
33-- > 0014 Interchange recipient internal identification C an..35
34-- > 0046 Interchange recipient internal sub-identification C an..35
35-- > 040 S004 DATE AND TIME OF PREPARATION M 1
36-- > 0017 Date M n8
37-- > 0019 Time M n4
38-- > 050 0020 Interchange control reference M 1 an..14
39-- > 060 S005 RECIPIENT'S REFERENCE/PASSWORD DETAILS C 1
40-- > 0022 Recipient reference/password M an..14
41-- > 0025 Recipient reference/password qualifier C an2
42-- > 070 0026 Application reference C 1 an..14
43-- > 080 0029 Processing priority code C 1 a1
44-- > 090 0031 Acknowledgement request C 1 n1
45-- > 100 0032 Interchange agreement identifier C 1 an..35
46-- > 110 0035 Test indicator C 1 n1
47--
48-- Dependencies: 'compositeS001', 'compositeS002', 'compositeS003', 'compositeS004', 'compositeS005', 'simple0020', 'simple0026', 'simple0029', 'simple0031', 'simple0032', 'simple0035'.
49segmentUNB :: Parser Value
50segmentUNB =
51 segment "UNB"
52 [ "010" .@ mandatory compositeS001
53 , "020" .@ mandatory compositeS002
54 , "030" .@ mandatory compositeS003
55 , "040" .@ mandatory compositeS004
56 , "050" .@ mandatory simple0020
57 , "060" .@ optional compositeS005
58 , "070" .@ optional simple0026
59 , "080" .@ optional simple0029
60 , "090" .@ optional simple0031
61 , "100" .@ optional simple0032
62 , "110" .@ optional simple0035
63 ]
diff --git a/core/src/Text/Edifact/Common/Segments/UNH.hs b/core/src/Text/Edifact/Common/Segments/UNH.hs
new file mode 100644
index 0000000..61cb6b3
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments/UNH.hs
@@ -0,0 +1,44 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Segments.UNH
4 ( segmentUNH
5 ) where
6
7import Text.Edifact.Common.Composites (compositeS009, compositeS010)
8import Text.Edifact.Common.Simples (simple0062, simple0068)
9
10import Text.Edifact.Parsing
11import Text.Edifact.Types (Value)
12
13-- | Derived from this specification:
14--
15-- > Change indicators
16-- >
17-- > UNH MESSAGE HEADER
18-- >
19-- > Function: To head, identify and specify a message.
20-- >
21-- > 010 0062 MESSAGE REFERENCE NUMBER M an..14
22-- >
23-- > 020 S009 MESSAGE IDENTIFIER M
24-- > 0065 Message type M an..6
25-- > 0052 Message version number M an..3
26-- > 0054 Message release number M an..3
27-- > 0051 Controlling agency M an..2
28-- > 0057 Association assigned code C an..6
29-- >
30-- > 030 0068 COMMON ACCESS REFERENCE C an..35
31-- >
32-- > 040 S010 STATUS OF THE TRANSFER C
33-- > 0070 Sequence of transfers M n..2
34-- > 0073 First and last transfer C a1
35--
36-- Dependencies: 'compositeS009', 'compositeS010', 'simple0062', 'simple0068'.
37segmentUNH :: Parser Value
38segmentUNH =
39 segment "UNH"
40 [ "010" .@ mandatory simple0062
41 , "020" .@ mandatory compositeS009
42 , "030" .@ optional simple0068
43 , "040" .@ optional compositeS010
44 ]
diff --git a/core/src/Text/Edifact/Common/Segments/UNS.hs b/core/src/Text/Edifact/Common/Segments/UNS.hs
new file mode 100644
index 0000000..3d9b395
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments/UNS.hs
@@ -0,0 +1,27 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Segments.UNS
4 ( segmentUNS
5 ) where
6
7import Text.Edifact.Common.Simples (simple0081)
8
9import Text.Edifact.Parsing
10import Text.Edifact.Types (Value)
11
12-- | Derived from this specification:
13--
14-- > Change indicators
15-- >
16-- > UNS SECTION CONTROL
17-- >
18-- > Function: To separate Header, Detail and Summary sections of a message
19-- >
20-- > 010 0081 SECTION IDENTIFICATION M a1
21--
22-- Dependencies: 'simple0081'.
23segmentUNS :: Parser Value
24segmentUNS =
25 segment "UNS"
26 [ "010" .@ mandatory simple0081
27 ]
diff --git a/core/src/Text/Edifact/Common/Segments/UNT.hs b/core/src/Text/Edifact/Common/Segments/UNT.hs
new file mode 100644
index 0000000..e91f9cf
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments/UNT.hs
@@ -0,0 +1,30 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Segments.UNT
4 ( segmentUNT
5 ) where
6
7import Text.Edifact.Common.Simples (simple0062, simple0074)
8
9import Text.Edifact.Parsing
10import Text.Edifact.Types (Value)
11
12-- | Derived from this specification:
13--
14-- > Change indicators
15-- >
16-- > UNT MESSAGE TRAILER
17-- >
18-- > Function: To end and check the completeness of a message.
19-- >
20-- > 010 0074 NUMBER OF SEGMENTS IN THE MESSAGE M n..6
21-- >
22-- > 020 0062 MESSAGE REFERENCE NUMBER M an..14
23--
24-- Dependencies: 'simple0062', 'simple0074'.
25segmentUNT :: Parser Value
26segmentUNT =
27 segment "UNT"
28 [ "010" .@ mandatory simple0074
29 , "020" .@ mandatory simple0062
30 ]
diff --git a/core/src/Text/Edifact/Common/Segments/UNZ.hs b/core/src/Text/Edifact/Common/Segments/UNZ.hs
new file mode 100644
index 0000000..0566860
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Segments/UNZ.hs
@@ -0,0 +1,24 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Segments.UNZ
4 ( segmentUNZ
5 ) where
6
7import Text.Edifact.Common.Simples (simple0020, simple0036)
8
9import Text.Edifact.Parsing
10import Text.Edifact.Types (Value)
11
12-- | Derived from this specification:
13--
14-- > Pos Segment M/C Repeat Repr. Notes
15-- > 010 0036 Interchange control count M 1 n..6
16-- > 020 0020 Interchange control reference M 1 an..14
17--
18-- Dependencies: 'simple0020', 'simple0036'.
19segmentUNZ :: Parser Value
20segmentUNZ =
21 segment "UNZ"
22 [ "010" .@ mandatory simple0036
23 , "030" .@ mandatory simple0020
24 ]
diff --git a/core/src/Text/Edifact/Common/Simples.hs b/core/src/Text/Edifact/Common/Simples.hs
new file mode 100644
index 0000000..537b128
--- /dev/null
+++ b/core/src/Text/Edifact/Common/Simples.hs
@@ -0,0 +1,271 @@
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Common.Simples
4 ( simple0001
5 , simple0002
6 , simple0004
7 , simple0007
8 , simple0008
9 , simple0010
10 , simple0014
11 , simple0017
12 , simple0019
13 , simple0020
14 , simple0022
15 , simple0025
16 , simple0026
17 , simple0029
18 , simple0031
19 , simple0032
20 , simple0035
21 , simple0036
22 , simple0042
23 , simple0046
24 , simple0051
25 , simple0052
26 , simple0054
27 , simple0057
28 , simple0062
29 , simple0065
30 , simple0068
31 , simple0070
32 , simple0073
33 , simple0074
34 , simple0080
35 , simple0081
36 , simple0133
37 ) where
38
39import Text.Edifact.Parsing
40import Text.Edifact.Types (Value)
41
42-- | Derived from this specification:
43--
44-- > 0001 Syntax identifier
45-- > Repr: a4
46simple0001 :: Parser Value
47simple0001 = simple "0001" (alpha `exactly` 4)
48
49-- | Derived from this specification:
50--
51-- > 0002 Syntax version number
52-- > Repr: an1
53simple0002 :: Parser Value
54simple0002 = simple "0002" (alphaNumeric `exactly` 1)
55
56-- | Derived from this specification:
57--
58-- > 0004 Interchange sender identification
59-- > Repr: an..35
60simple0004 :: Parser Value
61simple0004 = simple "0004" (alphaNumeric `upTo` 35)
62
63-- | Derived from this specification:
64--
65-- > 0007 Identification code qualifier
66-- > Repr: an..4
67simple0007 :: Parser Value
68simple0007 = simple "0007" (alphaNumeric `upTo` 4)
69
70-- | Derived from this specification:
71--
72-- > 0008 Interchange sender internal identification
73-- > Repr: an..35
74simple0008 :: Parser Value
75simple0008 = simple "0008" (alphaNumeric `upTo` 35)
76
77-- | Derived from this specification:
78--
79-- > 0010 Interchange recipient identification
80-- > Repr: an..35
81simple0010 :: Parser Value
82simple0010 = simple "0010" (alphaNumeric `upTo` 35)
83
84-- | Derived from this specification:
85--
86-- > 0014 Interchange recipient internal identification
87-- > Repr: an..35
88simple0014 :: Parser Value
89simple0014 = simple "0014" (alphaNumeric `upTo` 35)
90
91-- | Derived from this specification:
92--
93-- > 0017 Date
94-- > Repr: n6
95simple0017 :: Parser Value
96simple0017 = simple "0017" (numeric `exactly` 6)
97
98-- | Derived from this specification:
99--
100-- > 0019 Time
101-- > Repr: n4
102simple0019 :: Parser Value
103simple0019 = simple "0019" (numeric `exactly` 4)
104
105-- | Derived from this specification:
106--
107-- > 0020 Interchange control reference
108-- > Repr: an..14
109simple0020 :: Parser Value
110simple0020 = simple "0020" (alphaNumeric `upTo` 14)
111
112-- | Derived from this specification:
113--
114-- > 0022 Recipient reference/password
115-- > Repr: an..14
116simple0022 :: Parser Value
117simple0022 = simple "0022" (alphaNumeric `upTo` 14)
118
119-- | Derived from this specification:
120--
121-- > 0025 Recipient reference/password qualifier
122-- > Repr: an2
123simple0025 :: Parser Value
124simple0025 = simple "0025" (alphaNumeric `exactly` 2)
125
126-- | Derived from this specification:
127--
128-- > 0026 Application reference
129-- > Repr: an..14
130simple0026 :: Parser Value
131simple0026 = simple "0026" (alphaNumeric `upTo` 14)
132
133-- | Derived from this specification:
134--
135-- > 0029 Processing priority code
136-- > Repr: a1
137simple0029 :: Parser Value
138simple0029 = simple "0029" (alphaNumeric `exactly` 1)
139
140-- | Derived from this specification:
141--
142-- > 0031 Acknowledgement request
143-- > Repr: n1
144simple0031 :: Parser Value
145simple0031 = simple "0031" (numeric `exactly` 1)
146
147-- | Derived from this specification:
148--
149-- > 0032 Interchange agreement identifier
150-- > Repr: an..35
151simple0032 :: Parser Value
152simple0032 = simple "0032" (alphaNumeric `upTo` 35)
153
154-- | Derived from this specification:
155--
156-- > 0035 Test indicator
157-- > Repr: n1
158simple0035 :: Parser Value
159simple0035 = simple "0035" (numeric `exactly` 1)
160
161-- | Derived from this specification:
162--
163-- > 0036 Interchange control count
164-- > Repr: n..6
165simple0036 :: Parser Value
166simple0036 = simple "0036" (numeric `upTo` 6)
167
168-- | Derived from this specification:
169--
170-- > 0042 Interchange sender internal sub-identification
171-- > Repr: an..35
172simple0042 :: Parser Value
173simple0042 = simple "0042" (alphaNumeric `upTo` 35)
174
175-- | Derived from this specification:
176--
177-- > 0046 Interchange recipient internal sub-identification
178-- > Repr: an..35
179simple0046 :: Parser Value
180simple0046 = simple "0046" (alphaNumeric `upTo` 35)
181
182-- | Derived from this specification:
183--
184-- > 0051 Controlling agency
185-- > Repr: an..2
186simple0051 :: Parser Value
187simple0051 = simple "0051" (alphaNumeric `upTo` 2)
188
189-- | Derived from this specification:
190--
191-- > 0052 Message version number
192-- > Repr: an..3
193simple0052 :: Parser Value
194simple0052 = simple "0052" (alphaNumeric `upTo` 3)
195
196-- | Derived from this specification:
197--
198-- > 0054 Message release number
199-- > Repr: an..3
200simple0054 :: Parser Value
201simple0054 = simple "0054" (alphaNumeric `upTo` 3)
202
203-- | Derived from this specification:
204--
205-- > 0057 Association assigned code
206-- > Repr: an..6
207simple0057 :: Parser Value
208simple0057 = simple "0057" (alphaNumeric `upTo` 6)
209
210-- | Derived from this specification:
211--
212-- > 0062 MESSAGE REFERENCE NUMBER
213-- > Repr: an..14
214simple0062 :: Parser Value
215simple0062 = simple "0062" (alphaNumeric `upTo` 14)
216
217-- | Derived from this specification:
218--
219-- > 0065 Message type
220-- > Repr: an..6
221simple0065 :: Parser Value
222simple0065 = simple "0065" (alphaNumeric `upTo` 6)
223
224-- | Derived from this specification:
225--
226-- > 0068 COMMON ACCESS REFERENCE
227-- > Repr: an..35
228simple0068 :: Parser Value
229simple0068 = simple "0068" (alphaNumeric `upTo` 35)
230
231-- | Derived from this specification:
232--
233-- > 0070 Sequence of transfers
234-- > Repr: n..2
235simple0070 :: Parser Value
236simple0070 = simple "0070" (numeric `upTo` 2)
237
238-- | Derived from this specification:
239--
240-- > 0073 First and last transfer
241-- > Repr: a1
242simple0073 :: Parser Value
243simple0073 = simple "0073" (alpha `exactly` 1)
244
245-- | Derived from this specification:
246--
247-- > 0074 NUMBER OF SEGMENTS IN THE MESSAGE
248-- > Repr: n..6
249simple0074 :: Parser Value
250simple0074 = simple "0074" (numeric `upTo` 6)
251
252-- | Derived from this specification:
253--
254-- > 0080 Service code list directory version number
255-- > Repr: an..6
256simple0080 :: Parser Value
257simple0080 = simple "0080" (alphaNumeric `upTo` 6)
258
259-- | Derived from this specification:
260--
261-- > 0081 SECTION IDENTIFICATION
262-- > Repr: a1
263simple0081 :: Parser Value
264simple0081 = simple "0081" (alpha `exactly` 1)
265
266-- | Derived from this specification:
267--
268-- > 0133 Character encoding, coded
269-- > Repr: an..3
270simple0133 :: Parser Value
271simple0133 = simple "0133" (alphaNumeric `upTo` 3)