Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,149 @@
|
|||
******************************************************************
|
||||
* COBOL solution to Angle difference challange
|
||||
* The program was run on OpenCobolIDE
|
||||
* I chose to read the input data from a .txt file that I
|
||||
* created on my PC rather than to hard code it into the
|
||||
* program or enter it as the program was executing.
|
||||
******************************************************************
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. ANGLE-DIFFERENCE.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
|
||||
SELECT IN-FILE ASSIGN TO 'C:\Both\Rosetta\Angle_diff.txt'
|
||||
ORGANIZATION IS LINE SEQUENTIAL.
|
||||
|
||||
DATA DIVISION.
|
||||
|
||||
FILE SECTION.
|
||||
FD IN-FILE.
|
||||
01 IN-RECORD.
|
||||
05 ALPHA-BEARING-1 PIC X(20).
|
||||
05 FILLER PIC X.
|
||||
05 ALPHA-BEARING-2 PIC X(20).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 SWITCHES.
|
||||
05 EOF-SWITCH PIC X VALUE 'N'.
|
||||
|
||||
01 COUNTERS.
|
||||
05 REC-CTR PIC 9(3) VALUE 0.
|
||||
|
||||
01 WS-ALPHA-BEARING.
|
||||
05 WS-AB-SIGN PIC X.
|
||||
88 WS-AB-NEGATIVE VALUE "-".
|
||||
05 WS-AB-INTEGER-PART PIC X(6).
|
||||
05 WS-AB-DEC-POINT PIC X.
|
||||
05 WS-AB-DECIMAL-PART PIC X(12).
|
||||
|
||||
01 WS-BEARING-1 PIC S9(6)V9(12).
|
||||
01 WS-BEARING-2 PIC S9(6)V9(12).
|
||||
|
||||
01 WS-BEARING PIC S9(6)V9(12).
|
||||
01 FILLER REDEFINES WS-BEARING.
|
||||
05 WSB-INTEGER-PART PIC X(6).
|
||||
05 WSB-DECIMAL-PART PIC X9(12).
|
||||
|
||||
77 WS-RESULT PIC S9(6)V9(12).
|
||||
77 WS-RESULT-POS PIC 9(6)V9(12).
|
||||
77 WS-INTEGER-PART PIC 9(6).
|
||||
77 WS-DECIMAL-PART PIC V9(12).
|
||||
77 WS-RESULT-OUT PIC ------9.9999.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
000-MAIN.
|
||||
PERFORM 100-INITIALIZE.
|
||||
PERFORM 200-PROCESS-RECORD
|
||||
UNTIL EOF-SWITCH = 'Y'.
|
||||
PERFORM 300-TERMINATE.
|
||||
STOP RUN.
|
||||
|
||||
100-INITIALIZE.
|
||||
OPEN INPUT IN-FILE.
|
||||
PERFORM 150-READ-RECORD.
|
||||
|
||||
150-READ-RECORD.
|
||||
READ IN-FILE
|
||||
AT END
|
||||
MOVE 'Y' TO EOF-SWITCH
|
||||
NOT AT END
|
||||
COMPUTE REC-CTR = REC-CTR + 1
|
||||
END-READ.
|
||||
|
||||
200-PROCESS-RECORD.
|
||||
MOVE ALPHA-BEARING-1 TO WS-ALPHA-BEARING.
|
||||
PERFORM 250-CONVERT-DATA.
|
||||
MOVE WS-BEARING TO WS-BEARING-1.
|
||||
|
||||
MOVE ALPHA-BEARING-2 TO WS-ALPHA-BEARING.
|
||||
PERFORM 250-CONVERT-DATA.
|
||||
MOVE WS-BEARING TO WS-BEARING-2.
|
||||
|
||||
COMPUTE WS-RESULT = WS-BEARING-2 - WS-BEARING-1.
|
||||
MOVE WS-RESULT TO WS-RESULT-POS.
|
||||
MOVE WS-RESULT-POS TO WS-INTEGER-PART.
|
||||
COMPUTE WS-DECIMAL-PART = WS-RESULT-POS - WS-INTEGER-PART.
|
||||
COMPUTE WS-INTEGER-PART = FUNCTION MOD(WS-INTEGER-PART 360).
|
||||
IF WS-RESULT > 0
|
||||
COMPUTE WS-RESULT = WS-INTEGER-PART + WS-DECIMAL-PART
|
||||
ELSE
|
||||
COMPUTE WS-RESULT =
|
||||
(WS-INTEGER-PART + WS-DECIMAL-PART) * -1
|
||||
END-IF.
|
||||
|
||||
IF WS-RESULT < -180
|
||||
COMPUTE WS-RESULT = WS-RESULT + 360.
|
||||
IF WS-RESULT > 180
|
||||
COMPUTE WS-RESULT = WS-RESULT - 360.
|
||||
COMPUTE WS-RESULT-OUT ROUNDED = WS-RESULT.
|
||||
|
||||
DISPLAY REC-CTR ' ' WS-RESULT-OUT.
|
||||
|
||||
PERFORM 150-READ-RECORD.
|
||||
|
||||
250-CONVERT-DATA.
|
||||
MOVE WS-AB-INTEGER-PART TO WSB-INTEGER-PART.
|
||||
MOVE WS-AB-DECIMAL-PART TO WSB-DECIMAL-PART.
|
||||
IF WS-AB-NEGATIVE
|
||||
SUBTRACT WS-BEARING FROM ZERO
|
||||
GIVING WS-BEARING
|
||||
END-IF.
|
||||
|
||||
300-TERMINATE.
|
||||
DISPLAY 'RECORDS PROCESSED: ' REC-CTR.
|
||||
CLOSE IN-FILE.
|
||||
|
||||
******************************************************************
|
||||
* INPUT FILE ('Angle_diff.txt' stored on my PC at:
|
||||
* 'C:\Both\Rosetta\Angle_diff.txt'
|
||||
******************************************************************
|
||||
* +000020.000000000000 +000045.000000000000
|
||||
* -000045.000000000000 +000045.000000000000
|
||||
* -000085.000000000000 +000090.000000000000
|
||||
* -000095.000000000000 +000090.000000000000
|
||||
* -000045.000000000000 +000125.000000000000
|
||||
* -000045.000000000000 +000145.000000000000
|
||||
* +000029.480300000000 -000088.638100000000
|
||||
* -000078.325100000000 -000159.036000000000
|
||||
* -070099.742338109380 +029840.674378767230
|
||||
* -165313.666629735700 +033693.989451745600
|
||||
* +001174.838051059846 -154146.664901247570
|
||||
* +060175.773067955460 +042213.071923543730
|
||||
******************************************************************
|
||||
* OUTPUT:
|
||||
******************************************************************
|
||||
* 001 25.0000
|
||||
* 002 90.0000
|
||||
* 003 175.0000
|
||||
* 004 -175.0000
|
||||
* 005 170.0000
|
||||
* 006 -170.0000
|
||||
* 007 -118.1184
|
||||
* 008 -80.7109
|
||||
* 009 -139.5833
|
||||
* 010 -72.3439
|
||||
* 011 -161.5030
|
||||
* 012 37.2989
|
||||
******************************************************************
|
||||
Loading…
Add table
Add a link
Reference in a new issue