54 lines
1.7 KiB
COBOL
54 lines
1.7 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. demo-map-range.
|
|
|
|
DATA DIVISION.
|
|
WORKING-STORAGE SECTION.
|
|
01 i USAGE FLOAT-LONG.
|
|
|
|
01 mapped-num USAGE FLOAT-LONG.
|
|
|
|
01 a-begin USAGE FLOAT-LONG VALUE 0.
|
|
01 a-end USAGE FLOAT-LONG VALUE 10.
|
|
|
|
01 b-begin USAGE FLOAT-LONG VALUE -1.
|
|
01 b-end USAGE FLOAT-LONG VALUE 0.
|
|
|
|
01 i-display PIC --9.9.
|
|
01 mapped-display PIC --9.9.
|
|
|
|
PROCEDURE DIVISION.
|
|
PERFORM VARYING i FROM 0 BY 1 UNTIL i > 10
|
|
CALL "map-range" USING CONTENT a-begin, a-end, b-begin,
|
|
b-end, i, REFERENCE mapped-num
|
|
COMPUTE i-display ROUNDED = i
|
|
COMPUTE mapped-display ROUNDED = mapped-num
|
|
DISPLAY FUNCTION TRIM(i-display) " maps to "
|
|
FUNCTION TRIM(mapped-display)
|
|
END-PERFORM
|
|
.
|
|
END PROGRAM demo-map-range.
|
|
|
|
|
|
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. map-range.
|
|
|
|
DATA DIVISION.
|
|
LINKAGE SECTION.
|
|
01 a-begin USAGE FLOAT-LONG.
|
|
01 a-end USAGE FLOAT-LONG.
|
|
|
|
01 b-begin USAGE FLOAT-LONG.
|
|
01 b-end USAGE FLOAT-LONG.
|
|
|
|
01 val-to-map USAGE FLOAT-LONG.
|
|
|
|
01 ret USAGE FLOAT-LONG.
|
|
|
|
PROCEDURE DIVISION USING a-begin, a-end, b-begin, b-end,
|
|
val-to-map, ret.
|
|
COMPUTE ret =
|
|
b-begin + ((val-to-map - a-begin) * (b-end - b-begin)
|
|
/ (a-end - a-begin))
|
|
.
|
|
END PROGRAM map-range.
|