Compaq AAQ2G1FTK Marine Radio User Manual


 
Compaq COBOL for OpenVMS VAX and Compaq COBOL Compatibility and Migration
B.4 Compaq COBOL and Compaq COBOL for OpenVMS VAX Behavior Differences
The bad coding practice exhibited in Example B–2 can impact OpenVMS Alpha,
Windows NT, and Tru64 UNIX systems, and any supported Alpha floating-point
data type.
Example B2 Illegal Return Value Coding
IDENTIFICATION DIVISION.
PROGRAM-ID. BADCODING.
ENVIRONMENT DIVISION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 FIELDS-NEEDED.
05 CYCLE-LOGICAL PIC X(14) VALUE A_LOGICAL_NAME.
01 EDIT-PARM.
05 EDIT-YR PIC X(4).
05 EDIT-MO PIC XX.
01 CMR-RETURN-CODE COMP-1 VALUE 0.
LINKAGE SECTION.
01 PARM-REC.
05 CYCLE-PARM PIC X(6).
05 MY-RETURN-CODE COMP-1 VALUE 0.
PROCEDURE DIVISION USING PARM-REC GIVING CMR-RETURN-CODE.
P0-CONTROL.
CALL LIB$SYS_TRNLOGUSING BY DESCRIPTOR CYCLE-LOGICAL,
OMITTED,
BY DESCRIPTOR CYCLE-PARM
GIVING MY-RETURN-CODE.
IF MY-RETURN-CODE GREATER 0
THEN
MOVE MY-RETURN-CODE TO CMR-RETURN-CODE
GO TO P0-EXIT.
MOVE CYCLE-PARM TO EDIT-PARM.
IF EDIT-YR NOT NUMERIC
THEN
MOVE 4 TO CMR-RETURN-CODE, MY-RETURN-CODE.
IF EDIT-MO NOT NUMERIC
THEN
MOVE 4 TO CMR-RETURN-CODE, MY-RETURN-CODE.
IF CMR-RETURN-CODE GREATER 0
OR
MY-RETURN-CODE GREATER 0
THEN
DISPLAY "***************************"
DISPLAY "** BADCODING.COB **"
DISPLAY "** A_LOGICAL_NAME> ", CYCLE-PARM, " **"
DISPLAY "***************************".
P0-EXIT.
EXIT PROGRAM.
In Example B–2 the programmer incorrectly defined the return value for a
system service call to be F_floating when it should have been binary (COMP).
The programmer was depending on the following VAX behavior: in the VAX
architecture, all return values from routines are returned in register R0. The
VAX architecture has no separate integer and floating-point registers. The Alpha
architecture defines separate register sets for floating-point and binary data.
Routines that return floating-point values return them in register F0; routines
that return binary values return them in register R0.
Compaq COBOL for OpenVMS VAX and Compaq COBOL Compatibility and Migration B19