Is --- Cobol picture valid
I'm running some tests on Cobol pictures and wondering if ---
is a valid picture. Am I right in saying that this picture accepts values in the range of -99 through to +99. If it is valid then it is possible for the picture to accept 3 spaces as a value?
For exa开发者_开发百科mple:
12 would return 12
1 would return 1Cheers
Yes ---
is a valid PICTURE
clause. The variable corresponding to this PICTURE
will accept assignments of numeric values in the range -99 through to +99. It cannot be assigned non-numerics (space for example). However, if you were to DISPLAY
this variable after assigning a numeric value to it, leading zeros will be replaced by spaces. Consequently, if you MOVE ZERO
to this item it will DISPLAY
only spaces. Attempting to MOVE SPACES
to this item will result in a compile error (incompatible data types). This last bit may seem a little counter intutive, but remember that this type of PICTURE
clause implies a USAGE
of display - basically items defined in this manner are used to 'pretty print' numbers. About the only operations you can preform with USAGE DISPLAY
items is MOVE
to or from and DISPLAY
them.
EDIT - Response to Comment
A PICTURE
of ---X(2)
is invalid. The chart below illustrates combinations and the order that symbols may appear in a PICTURE
string. Notice that parenthesis are not in the chart. Logically you can replace them with the corresponding number of occurences of the preceding character before reading the string. For example X(3)
is read as XXX
. If you really want to parse out a PICTURE
string properly, you can use this chart to construct a BNF grammar specifically for them.
If this is a numeric picture, it won't accept spaces.
精彩评论