From b6067222630dc81439ed6d18edc69897e8d74456 Mon Sep 17 00:00:00 2001 From: Terry Burton Date: Mon, 3 Jun 2024 02:23:12 +0100 Subject: [PATCH] Update to latest Syntax Dictionary; update tests --- contrib/development/gs1-syntax-dictionary.txt | 455 +++++++++--------- src/gs1process.ps | Bin 96377 -> 100421 bytes tests/ps_tests/gs1process.ps | Bin 55214 -> 58527 bytes 3 files changed, 239 insertions(+), 216 deletions(-) diff --git a/contrib/development/gs1-syntax-dictionary.txt b/contrib/development/gs1-syntax-dictionary.txt index d0116a898..70b8215ae 100644 --- a/contrib/development/gs1-syntax-dictionary.txt +++ b/contrib/development/gs1-syntax-dictionary.txt @@ -1,7 +1,7 @@ # GS1 Application Identifier Syntax Dictionary # -------------------------------------------- # -# Release: 2023-07-04 +# Release: UNSET # # This is the GS1 Application Identifier format "Syntax Dictionary". # @@ -28,19 +28,24 @@ # projects and is now maintained by GS1 AISBL. # # -# Syntax: AIs [Flags] Spec [KeyVal...] [# Title] +# Syntax: AIs [Flags] Specification [Attributes...] [# Title] # -# AI: Solitary AI or a range of AIs +# AIs: Solitary AI or a range of AIs # # Flags: # -# "*" - Pre-defined length AI not requiring FNC1 separator +# Allocated from: *?!"$%&'()+,-./:;<=>@[\]^_`{|}~" # -# Spec: Consists of multiple whitespace-separated components +# Definitions: +# +# "*" - Pre-defined length AI not requiring FNC1 separator +# "?" - AI that is permitted as a GS1 Digital Link data attribute +# +# Specification: Consists of multiple whitespace-separated components # # Each component: Type[,linter...] # -# Type ("N": Numeric, "X": CSET 82, "Y": CSET 39), e.g. +# Type ("N": Numeric, "X": CSET 82, "Y": CSET 39, "Z": base64url), e.g. # # "N5" - length == 5 # "N..20" - 1 <= length <= 20 @@ -49,23 +54,25 @@ # Each Linter is the name of a reference procedure that performs content # validation of the component. # -# KeyVal: +# Attributes: Key-value pairs and solitary keys, for example: # -# "req=01,02,8006,8026" - Mandatory association with one of the listed AIs -# "ex=02,255,37" - Invalid to pair with any of the listed AIs, and vice versa +# "req=01+21,02,35nn" - Mandatory association with one of the listed AI or pattern groups +# - Note: Example means require either (01) with (21), or (02), or (35nn) +# "ex=8111,394n" - Invalid to pair with any of the listed AIs or patterns +# - Note: An AI is not exclusive of itself even if it matches a pattern # "dlpkey" - GS1 Digital Link primary key, no qualifiers accepted # "dlpkey=22,10,21" - As above, with ordered, optional qualifier AIs # i.e. "https://../01/../22/../10/../21/.." - valid -# "https://../01/../22/../21/.." - valid (options) -# "https://../01/../10/.." - valid (options) -# "https://../01/../10/../22/.." - invalid (order) +# "https://../01/../22/../21/.." - valid (good order) +# "https://../01/../10/.." - valid (good order) +# "https://../01/../10/../22/.." - invalid (bad order) # "dlpkey=22,10,21|235" - As above, but alternative sequences: "22,10,21" or "235", # i.e. "https://../01/../22/../10/../21/.." - valid (1st alternative) # "https://../01/../235/.." - valid (2nd alternative) -# "https://../01/../22/../10/../235/.." - invalid (exclusive) +# "https://../01/../22/../10/../235/.." - invalid (don't mix) # # Note: Duplicated keys indicate repeated application of each instance of -# the key +# the key. # # Note: Invalid and mandatory AI pairings should be evaluated over the # combined data received from all GS1 carriers marking a physical item. @@ -86,7 +93,7 @@ # # Copyright (c) 2020-2021 BWIPP project. https://bwipp.terryburton.co.uk/ # Copyright (c) 2020-2021 Zint Project. https://zint.org.uk/ -# Copyright (c) 2021-2023 GS1 AISBL +# Copyright (c) 2021-2024 GS1 AISBL # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -102,204 +109,220 @@ # limitations under the License. # -00 * N18,csum,key dlpkey # SSCC -01 * N14,csum,key ex=02,255,37 dlpkey=22,10,21|235 # GTIN -02 * N14,csum,key req=37 # CONTENT -10 X..20 req=01,02,8006,8026 # BATCH/LOT -11 * N6,yymmd0 req=01,02,8006,8026 # PROD DATE -12 * N6,yymmd0 req=8020 # DUE DATE -13 * N6,yymmd0 req=01,02,8006,8026 # PACK DATE -15 * N6,yymmd0 req=01,02,8006,8026 # BEST BEFORE or BEST BY -16 * N6,yymmd0 req=01,02,8006,8026 # SELL BY -17 * N6,yymmd0 req=01,02,255,8006,8026 # USE BY or EXPIRY -20 * N2 req=01,02,8006,8026 # VARIANT -21 X..20 req=01,8006 ex=235 # SERIAL -22 X..20 req=01 # CPV -235 X..28 req=01 # TPX -240 X..30 req=01,02,8006,8026 # ADDITIONAL ID -241 X..30 req=01,02,8006,8026 # CUST. PART No. -242 N..6 req=01,02,8006,8026 # MTO VARIANT -243 X..20 req=01 # PCN -250 X..30 req=01,8006 req=21 # SECONDARY SERIAL -251 X..30 req=01,8006 # REF. TO SOURCE -253 N13,csum,key [X..17] dlpkey # GDTI -254 X..20 req=414 # GLN EXTENSION COMPONENT -255 N13,csum,key [N..12] dlpkey ex=01,02,415,8006,8020,8026 # GCN -30 N..8 req=01,02 # VAR. COUNT -3100-3105 * N6 req=01,02 ex=310n # NET WEIGHT (kg) -3110-3115 * N6 req=01,02 ex=311n # LENGTH (m) -3120-3125 * N6 req=01,02 ex=312n # WIDTH (m) -3130-3135 * N6 req=01,02 ex=313n # HEIGHT (m) -3140-3145 * N6 req=01,02 ex=314n # AREA (m²) -3150-3155 * N6 req=01,02 ex=315n # NET VOLUME (l) -3160-3165 * N6 req=01,02 ex=316n # NET VOLUME (m³) -3200-3205 * N6 req=01,02 ex=320n # NET WEIGHT (lb) -3210-3215 * N6 req=01,02 ex=321n # LENGTH (in) -3220-3225 * N6 req=01,02 ex=322n # LENGTH (ft) -3230-3235 * N6 req=01,02 ex=323n # LENGTH (yd) -3240-3245 * N6 req=01,02 ex=324n # WIDTH (in) -3250-3255 * N6 req=01,02 ex=325n # WIDTH (ft) -3260-3265 * N6 req=01,02 ex=326n # WIDTH (yd) -3270-3275 * N6 req=01,02 ex=327n # HEIGHT (in) -3280-3285 * N6 req=01,02 ex=328n # HEIGHT (ft) -3290-3295 * N6 req=01,02 ex=329n # HEIGHT (yd) -3300-3305 * N6 req=00,01 ex=330n # GROSS WEIGHT (kg) -3310-3315 * N6 req=00,01 ex=331n # LENGTH (m), log -3320-3325 * N6 req=00,01 ex=332n # WIDTH (m), log -3330-3335 * N6 req=00,01 ex=333n # HEIGHT (m), log -3340-3345 * N6 req=00,01 ex=334n # AREA (m²), log -3350-3355 * N6 req=00,01 ex=335n # VOLUME (l), log -3360-3365 * N6 req=00,01 ex=336n # VOLUME (m³), log -3370-3375 * N6 req=01 ex=337n # KG PER m² -3400-3405 * N6 req=00,01 ex=340n # GROSS WEIGHT (lb) -3410-3415 * N6 req=00,01 ex=341n # LENGTH (in), log -3420-3425 * N6 req=00,01 ex=342n # LENGTH (ft), log -3430-3435 * N6 req=00,01 ex=343n # LENGTH (yd), log -3440-3445 * N6 req=00,01 ex=344n # WIDTH (in), log -3450-3455 * N6 req=00,01 ex=345n # WIDTH (ft), log -3460-3465 * N6 req=00,01 ex=346n # WIDTH (yd), log -3470-3475 * N6 req=00,01 ex=347n # HEIGHT (in), log -3480-3485 * N6 req=00,01 ex=348n # HEIGHT (ft), log -3490-3495 * N6 req=00,01 ex=349n # HEIGHT (yd), log -3500-3505 * N6 req=01,02 ex=350n # AREA (in²) -3510-3515 * N6 req=01,02 ex=351n # AREA (ft²) -3520-3525 * N6 req=01,02 ex=352n # AREA (yd²) -3530-3535 * N6 req=00,01 ex=353n # AREA (in²), log -3540-3545 * N6 req=00,01 ex=354n # AREA (ft²), log -3550-3555 * N6 req=00,01 ex=355n # AREA (yd²), log -3560-3565 * N6 req=01,02 ex=356n # NET WEIGHT (t oz) -3570-3575 * N6 req=01,02 ex=357n # NET VOLUME (oz) -3600-3605 * N6 req=01,02 ex=360n # NET VOLUME (qt) -3610-3615 * N6 req=01,02 ex=361n # NET VOLUME (gal.) -3620-3625 * N6 req=00,01 ex=362n # VOLUME (qt), log -3630-3635 * N6 req=00,01 ex=363n # VOLUME (gal.), log -3640-3645 * N6 req=01,02 ex=364n # VOLUME (in³) -3650-3655 * N6 req=01,02 ex=365n # VOLUME (ft³) -3660-3665 * N6 req=01,02 ex=366n # VOLUME (yd³) -3670-3675 * N6 req=00,01 ex=367n # VOLUME (in³), log -3680-3685 * N6 req=00,01 ex=368n # VOLUME (ft³), log -3690-3695 * N6 req=00,01 ex=369n # VOLUME (yd³), log -37 N..8 req=00 req=02,8026 # COUNT -3900-3909 N..15 req=255,8020 ex=390n,391n,394n,8111 # AMOUNT -3910-3919 N3,iso4217 N..15 req=8020 ex=391n # AMOUNT -3920-3929 N..15 req=01 req=30,31nn,32nn,35nn,36nn ex=392n,393n # PRICE -3930-3939 N3,iso4217 N..15 req=30,31nn,32nn,35nn,36nn ex=393n # PRICE -3940-3943 N4 req=255 ex=394n,8111 # PRCNT OFF -3950-3955 N6 req=30,31nn,32nn,35nn,36nn ex=392n,393n,395n,8005 # PRICE/UoM -400 X..30 # ORDER NUMBER -401 X..30,key dlpkey # GINC -402 N17,csum,key dlpkey # GSIN -403 X..30 req=00 # ROUTE -410 * N13,csum,key # SHIP TO LOC -411 * N13,csum,key # BILL TO -412 * N13,csum,key # PURCHASE FROM -413 * N13,csum,key # SHIP FOR LOC -414 * N13,csum,key dlpkey=254|7040 # LOC No. -415 * N13,csum,key req=8020 dlpkey=8020 # PAY TO -416 * N13,csum,key # PROD/SERV LOC -417 * N13,csum,key dlpkey=7040 # PARTY -420 X..20 ex=421 # SHIP TO POST -421 N3,iso3166 X..9 ex=4307 # SHIP TO POST -422 N3,iso3166 req=01,02,8006,8026 ex=426 # ORIGIN -423 N..15,iso3166list req=01,02 ex=426 # COUNTRY - INITIAL PROCESS -424 N3,iso3166 req=01,02 ex=426 # COUNTRY - PROCESS -425 N..15,iso3166list req=01,02 ex=426 # COUNTRY - DISASSEMBLY -426 N3,iso3166 req=01,02 # COUNTRY - FULL PROCESS -427 X..3 req=01,02 req=422 # ORIGIN SUBDIVISION -4300 X..35,pcenc req=00 # SHIP TO COMP -4301 X..35,pcenc req=00 # SHIP TO NAME -4302 X..70,pcenc req=00 # SHIP TO ADD1 -4303 X..70,pcenc req=4302 # SHIP TO ADD2 -4304 X..70,pcenc req=00 # SHIP TO SUB -4305 X..70,pcenc req=00 # SHIP TO LOC -4306 X..70,pcenc req=00 # SHIP TO REG -4307 X2,iso3166alpha2 req=00 # SHIP TO COUNTRY -4308 X..30 req=00 # SHIP TO PHONE -4309 N10,latitude N10,longitude req=00 # SHIP TO GEO -4310 X..35,pcenc req=00 # RTN TO COMP -4311 X..35,pcenc req=00 # RTN TO NAME -4312 X..70,pcenc req=00 # RTN TO ADD1 -4313 X..70,pcenc req=4312 # RTN TO ADD2 -4314 X..70,pcenc req=00 # RTN TO SUB -4315 X..70,pcenc req=00 # RTN TO LOC -4316 X..70,pcenc req=00 # RTN TO REG -4317 X2,iso3166alpha2 req=00 # RTN TO COUNTRY -4318 X..20 req=00 # RTN TO POST -4319 X..30 req=00 # RTN TO PHONE -4320 X..35,pcenc req=00 # SRV DESCRIPTION -4321 N1,yesno req=00 # DANGEROUS GOODS -4322 N1,yesno req=00 # AUTH TO LEAVE -4323 N1,yesno req=00 # SIG REQUIRED -4324 N6,yymmd0 N4,hhmm req=00 # NOT BEF DEL DT -4325 N6,yymmd0 N4,hhmm req=00 # NOT AFT DEL DT -4326 N6,yymmdd req=00 # REL DATE -7001 N13 req=01,02,8006,8026 # NSN -7002 X..30 req=01,02 # MEAT CUT -7003 N6,yymmdd N4,hhmm req=01,02 # EXPIRY TIME -7004 N..4 req=01 req=10 # ACTIVE POTENCY -7005 X..12 req=01,02 # CATCH AREA -7006 N6,yymmdd req=01,02 # FIRST FREEZE DATE -7007 N6,yymmdd [N6],yymmdd req=01,02 # HARVEST DATE -7008 X..3 req=01,02 # AQUATIC SPECIES -7009 X..10 req=01,02 # FISHING GEAR TYPE -7010 X..2 req=01,02 # PROD METHOD -7011 N6,yymmdd [N4],hhmm req=01,02 # TEST BY DATE -7020 X..20 req=01,8006 req=416 # REFURB LOT -7021 X..20 req=01,8006 # FUNC STAT -7022 X..20 req=7021 # REV STAT -7023 X..30,key # GIAI - ASSEMBLY -7030 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 0 -7031 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 1 -7032 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 2 -7033 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 3 -7034 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 4 -7035 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 5 -7036 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 6 -7037 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 7 -7038 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 8 -7039 N3,iso3166999 X..27 req=01,02 # PROCESSOR # 9 -7040 N1 X1 X1 X1,importeridx # UIC+EXT -710 X..20 req=01 # NHRN PZN -711 X..20 req=01 # NHRN CIP -712 X..20 req=01 # NHRN CN -713 X..20 req=01 # NHRN DRN -714 X..20 req=01 # NHRN AIM -715 X..20 req=01 # NHRN NDC -7230 X2 X..28 req=01,8004 # CERT # 1 -7231 X2 X..28 req=01,8004 # CERT # 2 -7232 X2 X..28 req=01,8004 # CERT # 3 -7233 X2 X..28 req=01,8004 # CERT # 4 -7234 X2 X..28 req=01,8004 # CERT # 5 -7235 X2 X..28 req=01,8004 # CERT # 6 -7236 X2 X..28 req=01,8004 # CERT # 7 -7237 X2 X..28 req=01,8004 # CERT # 8 -7238 X2 X..28 req=01,8004 # CERT # 9 -7239 X2 X..28 req=01,8004 # CERT # 10 -7240 X..20 req=01,8006 # PROTOCOL -7241 N2,mediatype req=8017,8018 # AIDC MEDIA TYPE -7242 X..25 req=8017,8018 # VCN -8001 N4,nonzero N5,nonzero N3,nonzero N1,winding N1 req=01 # DIMENSIONS -8002 X..20 # CMT No. -8003 N1,zero N13,csum,key [X..16] dlpkey # GRAI -8004 X..30,key dlpkey=7040 # GIAI -8005 N6 req=01,02 # PRICE PER UNIT -8006 N14,csum N4,pieceoftotal ex=01,37 dlpkey=22,10,21 # ITIP -8007 X..34,iban req=415 # IBAN -8008 N8,yymmddhh [N..4],mmoptss req=01,02 # PROD TIME -8009 X..50 req=00,01 # OPTSEN -8010 Y..30,key dlpkey=8011 # CPID -8011 N..12,nozeroprefix req=8010 # CPID SERIAL -8012 X..20 req=01,8006 # VERSION -8013 X..25,csumalpha,key dlpkey # GMN -8017 N18,csum,key ex=8018 dlpkey=8019 # GSRN - PROVIDER -8018 N18,csum,key ex=8017 dlpkey=8019 # GSRN - RECIPIENT -8019 N..10 req=8017,8018 # SRIN -8020 X..25 req=415 # REF No. -8026 N14,csum N4,pieceoftotal req=37 ex=02,8006 # ITIP CONTENT -8030 Z..90 req=00,01,253,255,8003,8004,8006,8010,8017,8018 # DIGSIG -8110 X..70,couponcode -8111 N4 req=255 # POINTS -8112 X..70,couponposoffer -8200 X..70 req=01 # PRODUCT URL -90 X..30 # INTERNAL -91-99 X..90 # INTERNAL +# AI Flags Specification Attributes Title + +00 *? N18,csum,key dlpkey # SSCC +01 *? N14,csum,key ex=02,255,37 dlpkey=22,10,21|235 # GTIN +02 *? N14,csum,key req=37 # CONTENT +10 ? X..20 req=01,02,8006,8026 # BATCH/LOT +11 *? N6,yymmd0 req=01,02,8006,8026 # PROD DATE +12 *? N6,yymmd0 req=8020 # DUE DATE +13 *? N6,yymmd0 req=01,02,8006,8026 # PACK DATE +15 *? N6,yymmd0 req=01,02,8006,8026 # BEST BEFORE or BEST BY +16 *? N6,yymmd0 req=01,02,8006,8026 # SELL BY +17 *? N6,yymmd0 req=01,02,255,8006,8026 # USE BY or EXPIRY +20 *? N2 req=01,02,8006,8026 # VARIANT +21 X..20 req=01,8006 ex=235 # SERIAL +22 X..20 req=01 # CPV +235 X..28 req=01 # TPX +240 ? X..30 req=01,02,8006,8026 # ADDITIONAL ID +241 ? X..30 req=01,02,8006,8026 # CUST. PART No. +242 ? N..6 req=01,02,8006,8026 # MTO VARIANT +243 ? X..20 req=01 # PCN +250 ? X..30 req=01,8006 req=21 # SECONDARY SERIAL +251 ? X..30 req=01,8006 # REF. TO SOURCE +253 ? N13,csum,key [X..17] dlpkey # GDTI +254 X..20 req=414 # GLN EXTENSION COMPONENT +255 ? N13,csum,key [N..12] dlpkey ex=01,02,415,8006,8020,8026 # GCN +30 ? N..8 req=01,02 # VAR. COUNT +3100-3105 *? N6 req=01,02 ex=310n # NET WEIGHT (kg) +3110-3115 *? N6 req=01,02 ex=311n # LENGTH (m) +3120-3125 *? N6 req=01,02 ex=312n # WIDTH (m) +3130-3135 *? N6 req=01,02 ex=313n # HEIGHT (m) +3140-3145 *? N6 req=01,02 ex=314n # AREA (m²) +3150-3155 *? N6 req=01,02 ex=315n # NET VOLUME (l) +3160-3165 *? N6 req=01,02 ex=316n # NET VOLUME (m³) +3200-3205 *? N6 req=01,02 ex=320n # NET WEIGHT (lb) +3210-3215 *? N6 req=01,02 ex=321n # LENGTH (in) +3220-3225 *? N6 req=01,02 ex=322n # LENGTH (ft) +3230-3235 *? N6 req=01,02 ex=323n # LENGTH (yd) +3240-3245 *? N6 req=01,02 ex=324n # WIDTH (in) +3250-3255 *? N6 req=01,02 ex=325n # WIDTH (ft) +3260-3265 *? N6 req=01,02 ex=326n # WIDTH (yd) +3270-3275 *? N6 req=01,02 ex=327n # HEIGHT (in) +3280-3285 *? N6 req=01,02 ex=328n # HEIGHT (ft) +3290-3295 *? N6 req=01,02 ex=329n # HEIGHT (yd) +3300-3305 *? N6 req=00,01 ex=330n # GROSS WEIGHT (kg) +3310-3315 *? N6 req=00,01 ex=331n # LENGTH (m), log +3320-3325 *? N6 req=00,01 ex=332n # WIDTH (m), log +3330-3335 *? N6 req=00,01 ex=333n # HEIGHT (m), log +3340-3345 *? N6 req=00,01 ex=334n # AREA (m²), log +3350-3355 *? N6 req=00,01 ex=335n # VOLUME (l), log +3360-3365 *? N6 req=00,01 ex=336n # VOLUME (m³), log +3370-3375 *? N6 req=01 ex=337n # KG PER m² +3400-3405 *? N6 req=00,01 ex=340n # GROSS WEIGHT (lb) +3410-3415 *? N6 req=00,01 ex=341n # LENGTH (in), log +3420-3425 *? N6 req=00,01 ex=342n # LENGTH (ft), log +3430-3435 *? N6 req=00,01 ex=343n # LENGTH (yd), log +3440-3445 *? N6 req=00,01 ex=344n # WIDTH (in), log +3450-3455 *? N6 req=00,01 ex=345n # WIDTH (ft), log +3460-3465 *? N6 req=00,01 ex=346n # WIDTH (yd), log +3470-3475 *? N6 req=00,01 ex=347n # HEIGHT (in), log +3480-3485 *? N6 req=00,01 ex=348n # HEIGHT (ft), log +3490-3495 *? N6 req=00,01 ex=349n # HEIGHT (yd), log +3500-3505 *? N6 req=01,02 ex=350n # AREA (in²) +3510-3515 *? N6 req=01,02 ex=351n # AREA (ft²) +3520-3525 *? N6 req=01,02 ex=352n # AREA (yd²) +3530-3535 *? N6 req=00,01 ex=353n # AREA (in²), log +3540-3545 *? N6 req=00,01 ex=354n # AREA (ft²), log +3550-3555 *? N6 req=00,01 ex=355n # AREA (yd²), log +3560-3565 *? N6 req=01,02 ex=356n # NET WEIGHT (t oz) +3570-3575 *? N6 req=01,02 ex=357n # NET VOLUME (oz) +3600-3605 *? N6 req=01,02 ex=360n # NET VOLUME (qt) +3610-3615 *? N6 req=01,02 ex=361n # NET VOLUME (gal.) +3620-3625 *? N6 req=00,01 ex=362n # VOLUME (qt), log +3630-3635 *? N6 req=00,01 ex=363n # VOLUME (gal.), log +3640-3645 *? N6 req=01,02 ex=364n # VOLUME (in³) +3650-3655 *? N6 req=01,02 ex=365n # VOLUME (ft³) +3660-3665 *? N6 req=01,02 ex=366n # VOLUME (yd³) +3670-3675 *? N6 req=00,01 ex=367n # VOLUME (in³), log +3680-3685 *? N6 req=00,01 ex=368n # VOLUME (ft³), log +3690-3695 *? N6 req=00,01 ex=369n # VOLUME (yd³), log +37 ? N..8 req=00 req=02,8026 # COUNT +3900-3909 ? N..15 req=255,8020 ex=390n,391n,394n,8111 # AMOUNT +3910-3919 ? N3,iso4217 N..15 req=8020 ex=391n # AMOUNT +3920-3929 ? N..15 req=01 req=30,31nn,32nn,35nn,36nn ex=392n,393n # PRICE +3930-3939 ? N3,iso4217 N..15 req=30,31nn,32nn,35nn,36nn ex=393n # PRICE +3940-3943 ? N4 req=255 ex=394n,8111 # PRCNT OFF +3950-3955 ? N6 req=30,31nn,32nn,35nn,36nn ex=392n,393n,395n,8005 # PRICE/UoM +400 ? X..30 # ORDER NUMBER +401 ? X..30,key dlpkey # GINC +402 ? N17,csum,key dlpkey # GSIN +403 ? X..30 req=00 # ROUTE +410 *? N13,csum,key # SHIP TO LOC +411 *? N13,csum,key # BILL TO +412 *? N13,csum,key # PURCHASE FROM +413 *? N13,csum,key # SHIP FOR LOC +414 *? N13,csum,key dlpkey=254|7040 # LOC No. +415 *? N13,csum,key req=8020 dlpkey=8020 # PAY TO +416 *? N13,csum,key # PROD/SERV LOC +417 *? N13,csum,key dlpkey=7040 # PARTY +420 ? X..20 ex=421 # SHIP TO POST +421 ? N3,iso3166 X..9 ex=4307 # SHIP TO POST +422 ? N3,iso3166 req=01,02,8006,8026 ex=426 # ORIGIN +423 ? N..15,iso3166list req=01,02 ex=426 # COUNTRY - INITIAL PROCESS +424 ? N3,iso3166 req=01,02 ex=426 # COUNTRY - PROCESS +425 ? N..15,iso3166list req=01,02 ex=426 # COUNTRY - DISASSEMBLY +426 ? N3,iso3166 req=01,02 # COUNTRY - FULL PROCESS +427 ? X..3 req=01,02 req=422 # ORIGIN SUBDIVISION +4300 ? X..35,pcenc req=00 # SHIP TO COMP +4301 ? X..35,pcenc req=00 # SHIP TO NAME +4302 ? X..70,pcenc req=00 # SHIP TO ADD1 +4303 ? X..70,pcenc req=4302 # SHIP TO ADD2 +4304 ? X..70,pcenc req=00 # SHIP TO SUB +4305 ? X..70,pcenc req=00 # SHIP TO LOC +4306 ? X..70,pcenc req=00 # SHIP TO REG +4307 ? X2,iso3166alpha2 req=00 # SHIP TO COUNTRY +4308 ? X..30 req=00 # SHIP TO PHONE +4309 ? N10,latitude N10,longitude req=00 # SHIP TO GEO +4310 ? X..35,pcenc req=00 # RTN TO COMP +4311 ? X..35,pcenc req=00 # RTN TO NAME +4312 ? X..70,pcenc req=00 # RTN TO ADD1 +4313 ? X..70,pcenc req=4312 # RTN TO ADD2 +4314 ? X..70,pcenc req=00 # RTN TO SUB +4315 ? X..70,pcenc req=00 # RTN TO LOC +4316 ? X..70,pcenc req=00 # RTN TO REG +4317 ? X2,iso3166alpha2 req=00 # RTN TO COUNTRY +4318 ? X..20 req=00 # RTN TO POST +4319 ? X..30 req=00 # RTN TO PHONE +4320 ? X..35,pcenc req=00 # SRV DESCRIPTION +4321 ? N1,yesno req=00 # DANGEROUS GOODS +4322 ? N1,yesno req=00 # AUTH TO LEAVE +4323 ? N1,yesno req=00 # SIG REQUIRED +4324 ? N6,yymmd0 N4,hhmm req=00 # NOT BEF DEL DT +4325 ? N6,yymmd0 N4,hhmm req=00 # NOT AFT DEL DT +4326 ? N6,yymmdd req=00 # REL DATE +4330 ? N6 [X1],hyphen req=00 ex=4331 # MAX TEMP F. +4331 ? N6 [X1],hyphen req=00 ex=4330 # MAX TEMP C. +4332 ? N6 [X1],hyphen req=00 ex=4333 # MIN TEMP F. +4333 ? N6 [X1],hyphen req=00 ex=4332 # MIN TEMP C. +7001 ? N13 req=01,02,8006,8026 # NSN +7002 ? X..30 req=01,02 # MEAT CUT +7003 ? N6,yymmdd N4,hhmm req=01,02 # EXPIRY TIME +7004 ? N..4 req=01 req=10 # ACTIVE POTENCY +7005 ? X..12 req=01,02 # CATCH AREA +7006 ? N6,yymmdd req=01,02 # FIRST FREEZE DATE +7007 ? N6,yymmdd [N6],yymmdd req=01,02 # HARVEST DATE +7008 ? X..3 req=01,02 # AQUATIC SPECIES +7009 ? X..10 req=01,02 # FISHING GEAR TYPE +7010 ? X..2 req=01,02 # PROD METHOD +7011 ? N6,yymmdd [N4],hhmm req=01,02 # TEST BY DATE +7020 ? X..20 req=01,8006 req=416 # REFURB LOT +7021 ? X..20 req=01,8006 # FUNC STAT +7022 ? X..20 req=7021 # REV STAT +7023 ? X..30,key # GIAI - ASSEMBLY +7030 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 0 +7031 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 1 +7032 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 2 +7033 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 3 +7034 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 4 +7035 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 5 +7036 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 6 +7037 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 7 +7038 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 8 +7039 ? N3,iso3166999 X..27 req=01,02 # PROCESSOR # 9 +7040 N1 X1 X1 X1,importeridx # UIC+EXT +710 ? X..20 req=01 # NHRN PZN +711 ? X..20 req=01 # NHRN CIP +712 ? X..20 req=01 # NHRN CN +713 ? X..20 req=01 # NHRN DRN +714 ? X..20 req=01 # NHRN AIM +715 ? X..20 req=01 # NHRN NDC +7230 ? X2 X..28 req=01,8004 # CERT # 1 +7231 ? X2 X..28 req=01,8004 # CERT # 2 +7232 ? X2 X..28 req=01,8004 # CERT # 3 +7233 ? X2 X..28 req=01,8004 # CERT # 4 +7234 ? X2 X..28 req=01,8004 # CERT # 5 +7235 ? X2 X..28 req=01,8004 # CERT # 6 +7236 ? X2 X..28 req=01,8004 # CERT # 7 +7237 ? X2 X..28 req=01,8004 # CERT # 8 +7238 ? X2 X..28 req=01,8004 # CERT # 9 +7239 ? X2 X..28 req=01,8004 # CERT # 10 +7240 ? X..20 req=01,8006 # PROTOCOL +7241 ? N2,mediatype req=8017,8018 # AIDC MEDIA TYPE +7242 ? X..25 req=8017,8018 # VCN +7250 N8,yyyymmdd req=8018 ex=7251 # DOB +7251 N8,yyyymmdd N4,hhmm req=8018 ex=7250 # DOB TIME +7252 N1,iso5218 req=8018 # BIO SEX +7253 X..40,pcenc req=8017,8018 ex=7256,7259 # FAMILY NAME +7254 X..40,pcenc req=8017,8018 ex=7256,7259 # GIVEN NAME +7255 X..10 req=8017,8018 ex=7256,7259 # SUFFIX +7256 X..90,pcenc req=8017,8018 # FULL NAME +7257 X..70,pcenc req=8018 # PERSON ADDR +7258 X3,posinseqslash req=8018+7259 # BIRTH SEQUENCE +7259 X..40,pcenc req=8018 ex=7256 # BABY +8001 ? N4,nonzero N5,nonzero N3,nonzero N1,winding N1 req=01 # DIMENSIONS +8002 ? X..20 # CMT No. +8003 ? N1,zero N13,csum,key [X..16] dlpkey # GRAI +8004 ? X..30,key dlpkey=7040 # GIAI +8005 ? N6 req=01,02 # PRICE PER UNIT +8006 ? N14,csum N4,pieceoftotal ex=01,37 dlpkey=22,10,21 # ITIP +8007 ? X..34,iban req=415 # IBAN +8008 ? N8,yymmddhh [N..4],mmoptss req=01,02 # PROD TIME +8009 ? X..50 req=00,01 # OPTSEN +8010 ? Y..30,key dlpkey=8011 # CPID +8011 N..12,nozeroprefix req=8010 # CPID SERIAL +8012 ? X..20 req=01,8006 # VERSION +8013 ? X..25,csumalpha,key dlpkey # GMN +8017 ? N18,csum,key ex=8018 dlpkey=8019 # GSRN - PROVIDER +8018 ? N18,csum,key ex=8017 dlpkey=8019 # GSRN - RECIPIENT +8019 N..10 req=8017,8018 # SRIN +8020 ? X..25 req=415 # REF No. +8026 ? N14,csum N4,pieceoftotal req=37 ex=02,8006 # ITIP CONTENT +8030 ? Z..90 req=00,01+21,253,255,8003,8004,8006+21,8010+8011,8017,8018 # DIGSIG +8110 ? X..70,couponcode +8111 ? N4 req=255 # POINTS +8112 ? X..70,couponposoffer +8200 X..70 req=01 # PRODUCT URL +90 ? X..30 # INTERNAL +91-99 ? X..90 # INTERNAL diff --git a/src/gs1process.ps b/src/gs1process.ps index 0687ae81d1f483ac0926eb5e67afa1c3a0907021..5a49cc342548088dffa320999b6cadd36eba1874 100644 GIT binary patch delta 1009 zcmezQf%WJFwhg)hf(k&OpOTYUQc|RlmY7qVI=PTtbh4$uejG9^f;eP0pBD^b!>(zw zu7pd~WCb;o$?vNaCigAkn4CUCoGqiWAR{$za^rSw787G*!^t1{6(&2Fu}(hUF2!g( znNeG0vVvAM9vueAIwo(B7bT$H7+F2g2E{coljM!@SYU*#Ve$i@1qFQWlNX37Pi~lO zJBe3s^Z!Yi0+TPuvhtvY-z@RXWs8m2CSTmBHTl3q^~o31xme7NObsV*%v7Abbf*xu zK$<1SWMm5VbOE0SRHwvb`x)YsKdjf7d|`qr%oGE{rfifKnbcpvo>`o4YGi0J`6HM9 zj1CogE$0olb3bg`MHf(DSX1Y4=FQWm=rlM}?nSU~C~ zCj#Sa!-jy#0XwZoGXmuIi-IYWO%6%{?YEjNw^AOvUCcm7OkL4I*&UU6z+aZX}!1}HFeEDQ`Spgz-7hy_6|P%eN0wA?UD3}~DM(70sO z00Kp+8UDxsYP6huP(Ki;E k?u}N^0Q$fH=mQ`H5}E9)f$ir9)(yG>lM6U`CI<`b2h$dUV0yExP!JnPVDnT7m#WF{#FQs*kWrW{pdveo zS8sFij7)(^=Xo|Wtu$eqEHF`Hv+d3V?#Tj&_%14kd?5u_c anhLR#6SgRWrB0n;W(G2NH-9-FxB~z+UNj;A diff --git a/tests/ps_tests/gs1process.ps b/tests/ps_tests/gs1process.ps index feeeba5a27e5273a03a31f0baad0862cff6b6647..2a4b981e91791cf27970504a3d94a35a7c6626b3 100644 GIT binary patch delta 2592 zcmZ3to_YRB<_!}#buDx%fgm?GC51~v!@|JOLetR57!?_6m>ZcIXc`$9OujflL=L~2 z$qOfl5>j%3fD%K?$^R#aD&Vuo(9+U!GUG&HLRNhg6p<(3tH}yNsszLZMG3i69H^NLdoi*pi-Gw|mJOHDsVUsq7! z4lMNbiFX^SK4XNR>Iq~(WQ|7pNE%7dXN*T*JyN{|uC$OXw9vOixReA7Es57xZ;EW8 zJ}5}_lgcv-3iLAb$`W%jQv&jfJ@bN73*GXIauZ7wQj3TvwUCW8)Ypd_nVOg4mtW#n znwwgbnG7*%a)BhPIi3Ou)u;*-qb4Uxir5gTw*tv$p!8OfnV;uJngNw?%TWxdC(;E5 z`oLlz8n!S4qEd_U1Bz19GAl?ASOch!>Oql34Fe6490-glV%=5`YF<_!}#Cz*3>78EKuwE6FiMce>!Q3@vj