Mike
I've seen COBOL value ranges in practice
but not when the field is used as a redefines discriminator. I am therefore
ok with keeping the elementAlias property as a single value. We can always
extend if we have to in the future.
Regards
Steve Hanson
Architect, Data Format Description Language (DFDL)
Co-Chair, OGF
DFDL Working Group
IBM SWG, Hursley, UK
smh@uk.ibm.com
tel:+44-1962-815848
From:
Mike Beckerle <mbeckerle.dfdl@gmail.com>
To:
dfdl-wg@ogf.org
Date:
03/04/2012 15:42
Subject:
[DFDL-WG] Issue
145 - cobol 88 example with multiple definitions per
88
Sent by:
dfdl-wg-bounces@ogf.org
Cobol below illustrates how the 88 statement can define
more than one
constant to represent a selection. E.g., the definition for Consonant
below.
A single "Accept Char....When Consonant" test tests the char
value
against the entire specification including individual enums, and the
ranges specified as well.
This is the mechanism I've seen used to specify that several different
enumerated codes correspond to the same record format. I've only seen
the multiple enumerated constants in practice, not the range
specifications:
IDENTIFICATION DIVISION.
PROGRAM-ID. Conditions.
AUTHOR. Michael Coughlan.
* An example program demonstrating the use of
* condition names (level 88's).
* The EVALUATE and PERFORM verbs are also used.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Char PIC X.
88 Vowel VALUE "a",
"e", "i", "o", "u".
88 Consonant VALUE "b", "c",
"d", "f", "g", "h"
"j" THRU "n", "p"
THRU "t", "v" THRU "z".
88 Digit VALUE "0"
THRU "9".
88 ValidCharacter VALUE "a" THRU "z",
"0" THRU "9".
PROCEDURE DIVISION.
Begin.
DISPLAY "Enter lower case character or digit. No data
ends.".
ACCEPT Char.
PERFORM UNTIL NOT ValidCharacter
EVALUATE TRUE
WHEN Vowel DISPLAY "The letter
" Char " is a vowel."
WHEN Consonant DISPLAY "The letter
" Char " is a consonant."
WHEN Digit DISPLAY Char " is a
digit."
WHEN OTHER DISPLAY "problems found"
END-EVALUATE
END-PERFORM
STOP RUN.
I suggest that tests as complicated as the ones above that include
range specifications should turn into normal discriminators in DFDL.
But what if it was just enumerated values, e.g., I take the ranges off....
01 Char PIC XX.
88 BaseRecord VALUE "a1", "11",
"52".
88 Ext-Record VALUE "bb",
"b0"
This is the example I've actually seen in data.
So in this case we just need the ability for the elementAlias to be a
list of potential values.
Or we can just be satisfied with requiring each of a1, 11, and 52 to
be a separate element with a different name, so the above becomes a
choice of 6 things, or we can just require a regular old discriminator
in any case more general than single-value dispatch.
I wanted everyone to see the example, but I actually advocate the
narrowest possible definition here. I think the dfdl:elementAlias
should be exactly one value only, and users should use a discriminator
with a test for anything more general.
...mikeb
--
dfdl-wg mailing list
dfdl-wg@ogf.org
https://www.ogf.org/mailman/listinfo/dfdl-wg
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU