CHAPTER 6
MOVING DATA, PRINTING
INFORMATION, AND DISPLAYING OUTPUT INTERACTIVELY
CHAPTER OBJECTIVES
After
completion of this chapter, the student should be able to:
1. Explain the purpose and format of the
MOVE statement with numeric and alphanumeric fields.
2. Define the terms sending field and
receiving field.
3. Explain the outcome of a MOVE operation
with fields that are not the same length.
4. Explain how a portion of a field may be
referenced in a MOVE operation.
5.
Define the term editing and explain how
it is performed.
6.
Explain the function and use the
following edit symbols: . (period), Z,
$, , (comma), *, -, +, CR, DB, B, 0, and /.
7. Describe how and why print records are
defined in WORKING-STORAGE.
8. Explain how the MOVE and WRITE operations
are used to print from WORKING-STORAGE.
9. Explain how the WRITE ... FROM
instruction is used to write from WORKING-STORAGE.
10. Explain what the JUSTIFIED RIGHT clause
is used for.
11. Explain the purpose of the BEFORE or
AFTER ADVANCING clause.
12. Explain how to control page overflow and
print page numbers on a report.
13.
Describe the procedure for accessing and
processing the current date using compilers that are not Y2K-compliant.
14.
Describe the procedure for accessing and
processing the current date using compilers that provide Y2K-compliant dates.
15. Explain the purpose and use of the COBOL
constant QUOTE.
16. Explain how to define and process an
interactive screen using the enhanced forms of the ACCEPT and DISPLAY
statements.
17. Explain how to define and process an
interactive screen using the SCREEN SECTION along with the DISPLAY and ACCEPT
verbs.
LECTURE OUTLINE
I. Introduction
A. The MOVE statement causes the contents
of a sending field to be copied to a receiving field.
B. The MOVE statement appears in the
PROCEDURE DIVISION.
C. At the end of the MOVE operation both
the receiving field and the sending field have the same contents if their PIC
clauses are the same.
II. The
Instruction Formats of the MOVE Statement
A. FORMAT 1:
MOVE
identifier-1 TO identifier-2
B. FORMAT 2:
MOVE
literal-1 TO identifier-2
C. Rules for forming numeric literals are:
1. 1 to 18 digits.
2. Decimal point is optional.
3. Sign is optional.
D. Rules for forming nonnumeric literals
are:
1. 1 to 160 characters. Some computer
systems allow even longer nonnumeric literals; the VAX, for example, permits
255 characters.
2. May use any character except the quote
mark or apostrophe.
3. Enclosed in quote marks or apostrophes.
E. Literals may be defined in VALUE
clauses in the DATA DIVISION or used directly in the PROCEDURE DIVISION.
F. The receiving field of a MOVE
instruction must always be an identifier, never a literal.
G. The MOVE statement can also move a
figurative constant to an identifier.
III. Numeric
MOVE
A. Definition
1. A numeric MOVE is one in which a
numeric field or literal is moved to a numeric receiving field.
2. Both the sending and receiving fields
must be numeric.
B. When Sending and Receiving Fields Have
the Same PIC Clauses
1. The contents of the sending field is
placed in the receiving field.
2. The value of the sending field remains
unchanged.
C. When Sending and Receiving Fields Have
Different PIC Clauses
1. When the sending and receiving fields
have different PICTURE clauses, the MOVE operation will not produce the same
contents in the receiving field as in the sending field.
2. Moving Integer Portions of Numeric
Fields:
a. When moving an integer sending field or
an integer portion of a numeric sending field to a numeric receiving field,
movement is from right to left.
b. All non-filled high-order (leftmost)
integer positions of the receiving field are replaced with zeros.
c. If the receiving field has fewer
integer positions than the sending field, the most significant digits will be
truncated.
3. Moving Decimal Portions of Numeric
Fields:
a. When moving a decimal portion of a
numeric sending field to the decimal portion of a numeric receiving field,
movement is from left to right, beginning at the implied decimal point.
b. Low-order (rightmost) non-filled
decimal positions of the receiving field are replaced with zeros.
c. If the receiving field has fewer
decimal positions than the sending field, the least significant decimal digits
will be truncated.
d. Decimal alignment is always maintained
in a numeric MOVE.
D. Moving Numeric Literals to Numeric
Fields
1. Numeric literals are moved to numeric
data fields in exactly the same manner as numeric fields are moved.
2. The same rules for moving integer and
decimal portions of one numeric field to another apply.
E. Moving Signed Numbers: An Introduction
1. An S must be included in the PIC clause
of a numeric field whenever the sign of the number is to be retained.
2. Signed numbers are discussed in more
detail in the next chapter.
IV. Nonnumeric or Alphanumeric MOVE
A. Basic Rules
1. A nonnumeric MOVE is a move in which
the receiving field is nonnumeric.
2. A nonnumeric MOVE might involve:
a. Moving an alphanumeric or alphabetic
field, defined by a PICTURE of X’s or A’s, to another alphanumeric or
alphabetic field.
b. Moving a nonnumeric literal to an
alphanumeric or alphabetic field.
c. Moving a numeric field or numeric
literal to an alphanumeric field or to any group item.
3. Rules for nonnumeric moves:
a. Data is transmitted from the sending
field to the receiving field from left to right.
b. Low-order (rightmost) positions of the
receiving field that are not replaced with sending field characters are filled
with spaces.
c. When the receiving field is smaller than
the sending field the rightmost characters of the sending field are truncated.
4. It is the receiving field that
determines the type of MOVE operation.
Thus, if the sending field is numeric and the receiving field is
nonnumeric, the MOVE will be a nonnumeric MOVE.
5. Literals or figurative constants can be
moved to a nonnumeric receiving field.
6. Do not MOVE alphanumeric fields to
numeric fields. The results could cause
a program interrupt if the receiving field is used later in an arithmetic
operation and it does not contain numeric data.
B. A Group Move is Considered a Nonnumeric
Move
1. All group fields are considered to be
alphanumeric fields.
2. A group MOVE is considered to be a
nonnumeric MOVE regardless of the PICTURE clauses of the elementary items
within the group item.
V. Other Options of the MOVE Statement
A. Qualification of Names
1. Names or identifiers that define fields
within records need not be unique; the same name may be used to define fields
in different records.
2. File-names and record-names must always
be unique.
3. If the same data-name is used to define
fields in different records or group items, the data-name must always be
qualified with either the record-name or the group item name.
4. The format used to qualify a field is:
identifier-1 {OF/IN}
{record-name-1/group-item-name-1}
B. Performing Multiple Moves with a Single
Statement
1. A single sending field may be sent to
multiple receiving fields with a single MOVE instruction.
2. This is an excellent method to
initialize a series of fields to zero at the beginning of a procedure.
C. Reference Modification: Accessing Segments of a Field Using COBOL 85
1. It is possible to reference a portion
of an elementary field with COBOL 85.
2. An example of reference modification
is:
MOVE NAME-IN (5:6) TO NAME-OUT
where,
a. The first digit in parentheses
indicates the starting position of the MOVE.
b. The
second digit in parentheses indicates the length of the MOVE.
c. The effect of this statement is to move
the 5th through 10th characters of NAME-IN
to NAME-OUT.
VI. Producing Printed Output and Screen
Displays
A. Features of Printed Output and Screen
Displays
1. Computer-produced displays and reports
are designed for people and must, therefore, be clear, neat, and easy to
understand.
2. Data should be edited. Editing symbols are used to make data fields
clearer, neater, and more readable.
3. The lines on printed and displayed
output should be properly spaced for ease of reading by using line spacing,
margins, and page breaks.
4. Printed and displayed output must be
aligned so that it can be understood.
5. Printed output should contain complete
headings (report headings, page headings, and column headings) so that the
report is meaningful. Total lines and footings
may also appear at the end of a page or report.
6. The Printer Spacing Chart may be used
to design printed output. A Screen
Layout Form is used in a similar way to plan the formatting for displayed
output.
B. The Editing Function
1. Basic Editing Functions discussed are:
a. Printing of decimal points (.).
b. Suppression of leading zeros (Z).
c. Printing of dollar signs and commas ($
,).
d. Printing of asterisks for check
protection (*).
e. Printing of plus or minus signs (+ -).
f. Printing of debit or credit symbols
for accounting applications (CR, DB).
g. Printing of spaces, zeros, or slashes
as separators within fields (B, 0, /).
2. The first six editing functions (a-f)
described above may only be performed on numeric fields. The last set of editing functions (g) may be
performed on any data field.
3. Editing is accomplished by moving an
elementary item to a report-item. A
report-item is an elementary item that contains editing symbols in its PICTURE
clause.
4. It is the PICTURE clause of the
receiving field (report-item) that determines the editing to be performed.
5. The GIVING option of the arithmetic
verbs permits the receiving field to be a report-item.
6. Editing can be accomplished by:
a. moving a field to a report-item.
b. performing an arithmetic operation
where the result is a report-item.
7. Printing or Displaying Decimal Points:
a. To print or display a decimal point,
insert the decimal point where desired in the PICTURE clause of the
report-item.
b. Unlike the implied decimal point (V)
used in a numeric field, the decimal point in a report-item occupies one byte
of storage.
8. Suppressing Leading Zeros:
a. Leading or non-significant zeros are
zeros appearing in the leftmost positions of a field and having no significant
value.
b. To suppress leading zeros with blanks,
the edit symbol Z is used.
c. When suppressing leading zeros, the
sending field must be defined as numeric.
d. It is recommended that you not suppress
all digits in a field when it is possible that the value of the field is
zero. It is good practice to print a
single zero when a zero balance exists.
e. The combined use of Z's and 9's in a
report-item can be used to control which digits are suppressed and which are
not.
f. All Z's must precede any 9's in a
report-item.
g. Generally we do not suppress to the
right of a decimal point.
h. A PICTURE clause such as ZZ.ZZ will
suppress zeros to the right of the decimal point only if the entire field is
zero. In this case, the report-item will
be filled with five spaces.
9. Printing or Displaying Dollar Signs and
Commas:
a. Dollar signs and commas are placed into
the PICTURE clause of the report-item where desired.
b. Dollar signs and commas each use one
position of storage.
c. If used with the zero suppression
character, any leading commas will be suppressed.
10. Printing or Displaying Asterisks for
Check Protection:
a. Asterisks are zero-suppression
characters that replace each non-significant zero and comma with * instead of a
space.
b. The asterisk is commonly used as a
check protection symbol.
c. To print or display an asterisk instead
of a blank when zero suppression is desired, use the asterisk in place of the Z
editing symbol.
11. Printing or Displaying Plus and Minus
Signs:
a. Unless
instructed otherwise, the computer will print or display numeric quantities
without a sign.
b. The
editing symbol minus (-) is used to print or display a minus sign when the
amount is negative and a blank when the amount is not negative.
c. The
editing symbol plus (+) is used when a sign is required for all values
(positive, negative and zero). It will
display as a – for negative amounts and a + for zero or positive values.
d. The minus (-) or plus (+) sign is
placed either to the left or the right of the report-item.
e. When the + and – edit symbols are used,
the sending field must have an S in its picture clause to allow for signed
values.
12. The editing symbols DB (for debit) or CR
(for credit) may be placed to the right of a numeric field instead of a minus
sign for accounting applications. As
with a minus sign, the DB or CR are printed only if the amount is negative;
otherwise two blanks are printed. The
sending field must have an S in its picture clause to allow for signed values.
13. For clarity, spaces may be inserted as separators
in report-items by using the symbol B. The edit symbol B in a PICTURE clause of
a report-item will cause a space to be inserted in the corresponding position.
14. Likewise, zeros and slashes may be
inserted into fields by using the edit symbols 0 (zero) or /. Using these edit symbols in the PICTURE
clause of a report-item will cause a 0 or / to be inserted in the corresponding
position of the receiving field.
15. Using COBOL 85 you may move a report-item
field which contains edit symbols to a numeric field. This is known as de-editing.
16. When accepting input interactively, it is
best to allow users to enter the data in standard decimal form. De-editing can then be used to convert the
input data into a field with an implied decimal point so that arithmetic can be
performed.
C. Editing Using Floating Strings
1. When editing using floating strings, a
leading edit character such as a plus sign, minus sign, or dollar sign may be
made to appear in the position directly preceding the first significant digit.
2. A floating string will cause
suppression of leading zeros and commas and, at the same time, force the
floating character to appear in the position adjacent to the first significant
digit.
3. To accomplish a floating string
operation:
a. Create the report-item PICTURE clause
as before.
b. Replace all Z's with the desired
floating character.
c. There will be one more floating string
character than integer positions to be accepted by the report-item. This is so the edit symbol can print when the
field is filled.
4. Two different floating string
characters are not allowed in one report-item.
Only one character can float.
D. BLANK WHEN ZERO Option
1. BLANK WHEN ZERO is used to print or
display spaces when a sending field consists entirely of zeros.
2. BLANK WHEN ZERO is used in conjunction
with the appropriate PICTURE clause.
3. BLANK WHEN ZERO should not be used with
the asterisk since it would defeat the purpose of using the check-protection
edit symbol.
E. Defining Print Records in
WORKING-STORAGE
1. Each record format for printed output
should be established as a separate area in WORKING-STORAGE.
2. The VALUE clause is used to establish
the constants in a print record defined in WORKING-STORAGE.
3. Each print record in WORKING-STORAGE
can be printed by moving it to the print area and writing the print area. This requires a MOVE operation followed by a
WRITE operation.
4. If a field within a print structure is
not directly accessed in the PROCEDURE DIVISION, it is customary to leave the
field-name blank The field-name FILLER
is optional.
F. The WRITE ... FROM Statement
1. A WRITE ... FROM instruction may be
used in place of a MOVE and WRITE to print lines.
2. The following are equivalent:
a. WRITE OUTPUT-RECORD FROM
WS-RECORD
b. MOVE WS-RECORD TO OUTPUT-RECORD
WRITE OUTPUT-RECORD
G. JUSTIFIED RIGHT Option
1. Data is normally left-justified when it
is moved into an alphanumeric field.
2. If the JUSTIFIED RIGHT option is
included as part of the PIC clause of an alphanumeric field, then a MOVE will
right-justify the contents into the field.
H. The ADVANCING Option for Spacing Printed
Forms
1. The
AFTER ADVANCING or BEFORE ADVANCING option should be used with each WRITE
instruction to indicate the spacing of the form.
2. Any number of blank lines may be
obtained between printed lines by using an AFTER ADVANCING or BEFORE ADVANCING
option with every WRITE instruction.
3. The actual spacing achieved with the
AFTER ADVANCING clause is summarized in this chart:
AFTER
ADVANCING Clause
|
Type
of Spacing Achieved
|
Number of Blank Lines Inserted |
AFTER ADVANCING 1 LINE |
Single spacing |
0 |
AFTER ADVANCING 2 LINES |
Double spacing |
1 |
AFTER ADVANCING 3 LINES |
Triple spacing |
2 |
4. Format:
WRITE
record-name-1 [FROM identifier-1]
[{AFTER/BEFORE} ADVANCING
{integer/identifier-2} [LINE/LINES]]
5. The BEFORE ADVANCING and AFTER
ADVANCING clauses should not be used in the same program because it may result
in overprinting.
6. To achieve overprinting or underlining,
use the clause AFTER ADVANCING 0 LINES.
7. The reserved word PAGE used after the
word ADVANCING will cause the paper to skip to a new page.
8. To advance to a new page when a page is
full:
a. Determine the number of lines to be
printed on a page.
b. Establish a line-counter field
initialized to zero in WORKING-STORAGE.
c. After each WRITE statement, increment
the line-counter field.
d. Before each WRITE statement, test the
line counter field to see if it equals or exceeds the desired number of lines
to be printed per page. If so, print a
heading at the top of a new page and reinitialize the line-counter to zero.
I. Printing Page Numbers
1. A numeric field that is used for
counting pages is defined in WORKING-STORAGE and initialized to 1. It is incremented each time a page is
printed.
2. In the headings routine, the page
counter is moved to the corresponding report record before the headings are
written.
3. The page counter is then incremented by
1 in the headings routine.
J. Printing or Displaying the Date of the
Run
1. Using Compilers Which are Not
Y2K-Compliant
a. Older
compilers were designed to work with 6-digit dates (yymmdd).
b. The computer stores the current date in
a field that can be accessed with the COBOL reserved word DATE.
c. The date may be accessed from the
operating system using the ACCEPT instruction with the format:
Identifier is defined
in WORKING-STORAGE as a six-digit unsigned numeric field in the format yymmdd.
d. Printing
the date in the form month/day/year requires moving each elementary month, day,
and year field to report-item fields which have been separated into month, day,
and year.
2. Using Compilers That Provide
Y2K-Compliant Dates
a. The
Y2K Problem
b. Enhancements added to the new COBOL
standard in 1989 provide Y2K-compliant dates.
Most 1985 compilers include these features.
c. The intrinsic function CURRENT-DATE
supplies the date in the format yyyymmdd.
d. To obtain the current date, code the
statement
MOVE FUNCTION CURRENT-DATE TO WS-DATE
where WS-DATE is defined in WORKING-STORAGE as an
eight-byte field of the form yyyymmdd.
e. COBOL 2000+ will provide for ACCEPT
identifier FROM DATE to access a Y2K-compliant date.
3. Creating Y2K-Compliant Dates Using
Older Compilers
a. An
interim approach being used by some companies whose compilers are not
Y2K-compliant is to have the program (rather than the operating system) insert
the century into date fields.
b. A common scheme is to treat years in
the range 00 – 35 as though they were 2000 – 2035 and all other years (36 – 99)
as though they were 1936 – 1999.
c. This is only a temporary “fix.” The best course of action is to use a
compiler that is Y2K-compliant.
K. Printing or Displaying Quotation Marks
Since nonnumeric
literals are enclosed in quotes, quotation marks may not be included within the
literal. To print or display a quotation
mark, use the COBOL figurative constant QUOTE in the VALUE clause.
L.
Coding Guidelines for Designing Reports:
1. Include a heading that identifies the
report.
2. Include the date and page number in
either a report or page heading.
3. Include column headings to identify the
fields to be printed.
4. Place the most significant fields where
they are most visible.
5. Edit numeric fields for readability.
6. Include totals at the end of the report
or at the end of a page.
7. Use *'s to identify the level of a
total.
8. Include page footings at the end of
each page and report footings at the end of the report, if desired.
A. Introduction
1. Input/output applications on PC’s often
make use of interactive processing with input being entered on a keyboard and
output being displayed on a screen.
2. PC versions of COBOL have added
enhancements that extend COBOL’s ability to include interactive
processing. These enhancements are not,
however, the same for all PC versions of the language.
3. There are two varying approaches used
for adding interactivity to COBOL programs:
a. Use ACCEPT and DISPLAY statements with numerous
options that allow the programmer to define the appearance of data on the
screen, or
b. Use a SCREEN SECTION in the DATA
DIVISION to define the screen, along with simple ACCEPT and DISPLAY statements
in the PROCEDURE DIVISION.
B. ACCEPT Statement for Screen I-O
1. Many compilers enable programmers to
use the ACCEPT statement to control the placement of data on the screen and to
add other features to the appearance of that data.
2. The following format of the ACCEPT
statement includes many options available with most PC compilers:
ACCEPT
identifier
[AT]
[LINE NUMBER {identifier-1/integer-1}]
[{COLUMN/COL}
NUMBER {identifier-2/integer-2}]
[WITH
[AUTO]
[BACKGROUND-COLOR
IS integer-3]
[{BELL/BEEP}]
[BLINK]
[FOREGROUND-COLOR
IS integer-4]
[HIGHLIGHT]
[SECURE]
[REVERSE-VIDEO]
[{LEFT-JUSTIFY/RIGHT-JUSTIFY}]
[{SPACE-FILL/ZERO-FILL}]
[TRAILING SIGN]
[UNDERLINE]
[UPDATE]]
3. Options available for the ACCEPT
statement are listed in the table below.
LINE and COLUMN |
Specifies the screen location of the data to
be accepted. |
AUTO |
Causes the cursor to automatically skip to the
next position for entering input when the current entry is complete. If this option is omitted, then the user
must press the Enter key after each data entry. |
BACKGROUND- and FOREGROUND-COLOR |
Changes the background/foreground colors of
the screen. Available colors are
listed in Figure 6.6 of the text. In
MicroFocus, 78-level items may be defined in WORKING-STORAGE to allow the use
of words in place of the color codes. |
BELL and BEEP |
Causes the computer to make the corresponding
sound when the entry is made. |
BLINK |
Causes the data being entered to blink. |
HIGHLIGHT |
Causes the entry to appear in high-intensity
(boldface) mode. |
SECURE |
Prevents the entry from appearing on the
screen. |
REVERSE-VIDEO |
Causes the entry to be displayed with
foreground and background colors reversed. |
RIGHT-JUSTIFY and LEFT-JUSTIFY |
Places the data being entered in the
rightmost/leftmost positions of the field. |
SPACE-FILL and ZERO-FILL |
Places blanks/zeros in the high-order
positions of a field. |
TRAILING SIGN |
Places the sign for any signed number after
the number. |
UNDERLINE |
Places underscores in the field. |
UPDATE |
Displays the initial value of the field before
the user has entered any new data. |
C. DISPLAY Statement for Screen I-O
1. The DISPLAY statement is often used
with the ACCEPT statement to make an application interactive.
2. The
following is a format of the DISPLAY statement used with many PC compilers:
DISPLAY
{identifier-1/literal-1}
[AT] [LINE NUMBER
{identifier-2/integer-1}]
[{COLUMN/COL}
NUMBER {identifier-3/integer-2}]
[WITH
[BACKGROUND-COLOR IS
integer-3]
[{BELL/BEEP}]
[BLINK]
[FOREGROUND-COLOR IS
integer-4]
[HIGHLIGHT]
[REVERSE-VIDEO]
[UNDERLINE]
[BLANK {SCREEN/LINE}]]
3. Most of the options found in the
DISPLAY statement also appear in the ACCEPT statement. Options unique to the DISPLAY statement are
listed below.
BLANK SCREEN |
Initially clears the entire screen. |
BLANK LINE |
Clears the specified line. |
1. The SCREEN SECTION allows the
programmer to set up a full description of a screen in the DATA DIVISION. The SCREEN SECTION follows the
WORKING-STORAGE SECTION.
2. The SCREEN SECTION contains many of the
same clauses that would otherwise be coded in an enhanced ACCEPT or DISPLAY
statement.
3. The following format illustrates the
clauses available with many PC COBOL compilers:
SCREEN
SECTION.
Level-number
{screen-name/FILLER}
[BLANK
{SCREEN/LINE}]]
[{BELL/BEEP}]
[BLINK]
[HIGHLIGHT]
[REVERSE-VIDEO]
[UNDERLINE]
[BACKGROUND-COLOR
IS {integer-1/data-name-1}]
[FOREGROUND-COLOR
IS {integer-2/data-name-2}]
[LINE
NUMBER {identifier-1/integer-3}]
[COLUMN
NUMBER {identifier-2/integer-4}]
[VALUE
IS literal-1]
{PICTURE/PIC}
IS
{FROM
identifier-4 TO identifier-5 |
USING
identifier-6}
[AUTO]
[SECURE]
[REQUIRED
or EMPTY-CHECK]
4. To use these advanced screen layout
features, the programmer should:
a. Define the screen format in the SCREEN
SECTION.
b. Use the DISPLAY screen-name statement
to display the defined screen.
c. Use the ACCEPT screen-name statement to
receive any data keyed in by the user.
5. The general form of a screen group item
is:
level-number
screen-name
[various options]
where,
a. Level-numbers range from 01-49.
b. The screen-name conforms to the rules
for COBOL user-defined words.
c. The format for elementary screen items
is given in the text. Options available
in Micro Focus COBOL for elementary screen items are listed in the following
table.
d. When these options are specified with a
group item, they apply to all elements within the group item.
BLANK SCREEN |
Clears the screen and positions the cursor at
the home position. |
LINE and COLUMN |
Specifies the screen location of elements to
be displayed or accepted. |
BLANK LINE |
Clears the specified line. |
BELL or BEEP |
Causes the corresponding sound to be geneated
when an ACCEPT is executed. |
UNDERLINE |
Underlines displayed items. |
REVERSE-VIDEO |
Displays items with foreground and background
colors reversed. |
HIGHLIGHT |
Displays the screen item in high-intensity
mode. |
BLINK |
Displayed items blink. |
VALUE |
Used to define literals to be displayed. |
PIC ... FROM |
Provides the PIC clause for data to be
displayed, along with the DATA DIVISION field that contains the data to be
displayed. |
PIC ... TO |
Provides the PIC clause for an input field and
indicates where in the DATA DIVISION the accepted entry should be stored. |
BLANK WHEN ZERO |
Displays a blank for a field that has a value
of 0. |
JUSTIFIED RIGHT |
Right justifies the item. |
AUTO |
When an input field has been filled, the
cursor automatically skips to the next input field. |
SECURE |
Keyed data is not displayed. *’s or #’s appear in place of the actual
data. |
REQUIRED/EMPTY-CHECK |
Data must be entered into the input field. |
VIII. Refer to and discuss the examples in the
text.
IX. COBOL 2000+ Changes
A.. Arithmetic may be performed on
report-items.
B. The symbol & will be available to
concatenate nonnumeric literals.
SOLUTIONS
TO REVIEW QUESTIONS
I. True-False Questions
1. T
2. T
3. F Alphabetic
and alphanumeric moves are left-justified. The receiving
field will contain XYZ.
4. T
5. F Decimal
portions of numeric fields are left-justified. The result will be
092Ù170.
6. F The
figurative constant ZEROS may be moved to numeric or
alphanumeric fields.
7. F Only
a field identified by a data-name may be a receiving field.
8. F A
blank in a numeric field can cause a program to abort.
9. T
10. F It
is an alphanumeric move. The receiving
field determines the type of move.
II. General Questions
|
Sending Field |
Receiving Field * |
||
|
Picture |
Contents |
Picture |
Contents |
1. |
99V99 |
12Ù34 |
9(3)V9(3) |
012Ù340 |
2. |
9V99 |
7Ù89 |
9V9 |
7Ù8 |
3. |
999V9 |
678Ù9 |
99V99 |
78Ù90 |
4. |
99 |
56 |
XXX |
56b |
5. |
XX |
AB |
XXX |
ABb |
6. |
X(4) |
CODE |
XXX |
COD |
7. |
XXX |
124 |
999 |
124 |
* The letter b is used to denote a space
throughout this manual.
8. With MOVE 0 TO ITEM-1: ITEM-1A = 0b ITEM-1B = bb
With MOVE ZERO TO ITEM-1: ITEM-1A = 00 ITEM-1B = 00
9. 013Ù5790
10. 3Ù5
|
Sending Field |
Report-Item * |
||
|
Picture |
Contents |
Picture |
Contents |
11. |
999 |
123Ù45 |
$ZZZ.99 |
$123.45 |
12. |
S99V99 |
00Ù98- |
$ZZ.99+ |
$ .98- |
13. |
S99V99 |
00Ù89+ |
$ZZ.99 |
$ .89 |
14. |
S999 |
005+ |
$ZZZ.99CR |
$ 5.00 |
15. |
S999 |
005+ |
$ZZZ.99DB |
$ 5.00 |
16. |
S99V99 |
00Ù05- |
$ZZZ.99CR |
$ 5.00CR |
17. |
9(5)V99 |
1357Ù00 |
$**,***.99 |
$*1,357.00 |
18. |
XXXX |
CRDB |
XXBBXX |
CR DB |
19. |
999V99 |
135Ù79 |
$$$$.99 |
$135.79 |
20. |
999V99 |
000Ù09 |
$$$$.99 |
$.09 |
21. |
S9(5) |
00567- |
++++++ |
bb-567 |
22. |
S99 |
00+ |
+++ |
bb+ |
23. |
S99 |
00+ |
--- |
bbb |
24. |
9999V99 |
0009Ù88 |
$$$$$.99 |
bbb$9.88 |
25. |
9(4)V99 |
0009Ù88 |
$$$ZZ.99 |
bb$ 9.88 |
* The letter b is used to denote a space
throughout this manual.
III. Internet/Critical Thinking Questions
1
and 2. Since the Y2K Problem
did not cause as much trouble as some people thought it would, there are very
few post January 1, 2000 links in the search results. Some possible starting points are given
below, but many contain mostly pre-Year 2000 links. Also, many of the links have expired since
the topic is "history". In
general, use various search engines with keywords of "Y2K", "Y2K
Problem", and similar keywords.
Search
Engine: yahoo.com>Computers
& Internet>History>Year 2000 Problem>
Contents: Links
to Y2K web sites
Search
Engine: yahoo.com>Computers & Internet>
Keywords: Y2K
Computer Problem
URL: http://www.coyote.com/database/y2k.htm
Contents: Article,
with links
Search Engine: yahoo.com
Keywords: Y2K
Computer Problem
URL: http://www.wired.com/news/y2k
Contents: Y2K
articles, a few written after January 1, 2000
INTERPRETING INSTRUCTION FORMATS
1. Cannot MOVE two items to the same
receiving field.
2. The word AND should be omitted:
MOVE 1
TO AMT1, AMT2
3. It is not possible to MOVE to a numeric
literal.
SOLUTIONS TO DEBUGGING EXERCISES
1. Yes.
We cannot assume that the filler areas in the OUT-REC will be blank.
2. It would be more efficient to describe
the output record in WORKING-STORAGE so that VALUES could be assigned to the
fields.
3. a. A
syntax error will occur because the receiving field is too small. $(4)
accepts only three integer digits. (Not all compilers will actually
flag this as a syntax
error;
on most systems, a compiler option is used to specify whether the
compiler
should look for this type of error).
b. No syntax error, but the decimal digits
will be truncated.
c. No syntax error, but the receiving
field only needs three Z’s to the left of the decimal point.
d. No syntax error, but if the sending
field contains all zeros, spaces will print.
e. Depending on the compiler a
warning-level syntax error may occur to indicate that the output is signed
while the input is unsigned.
4. No syntax error, but initializing a
report-item is a waste of time.
Something will be moved to AMT6 anyway, so why bother to initialize the
field?