47 lines
2.2 KiB
Text
47 lines
2.2 KiB
Text
* Angle difference between two bearings - 06/06/2018
|
|
ANGLEDBB CSECT
|
|
USING ANGLEDBB,R13 base register
|
|
B 72(R15) skip savearea
|
|
DC 17F'0' savearea
|
|
SAVE (14,12) save previous context
|
|
ST R13,4(R15) link backward
|
|
ST R15,8(R13) link forward
|
|
LR R13,R15 set addressability
|
|
LA R10,T-4 @t
|
|
LA R6,1 i=1
|
|
DO WHILE=(C,R6,LE,N) do i=1 to n
|
|
LA R10,4(R10) next @t
|
|
L R7,0(R10) a=t(i,1)
|
|
LA R10,4(R10) next @t
|
|
L R8,0(R10) b=t(i,2)
|
|
LR R4,R8 b
|
|
SR R4,R7 b-a
|
|
SRDA R4,32 ~
|
|
D R4,=F'3600000' /360
|
|
A R4,=F'5400000' +540
|
|
SRDA R4,32 ~
|
|
D R4,=F'3600000' /360
|
|
S R4,=F'1800000' x=((((b-a)//360)+540)//360)-180
|
|
XDECO R7,XDEC edit a
|
|
MVC PG(8),XDEC output a
|
|
MVC PG+9(4),XDEC+8 output a decimals
|
|
XDECO R8,XDEC edit b
|
|
MVC PG+14(8),XDEC output b
|
|
MVC PG+23(4),XDEC+8 output b decimals
|
|
XDECO R4,XDEC edit x
|
|
MVC PG+28(8),XDEC output x
|
|
MVC PG+37(4),XDEC+8 output x decimals
|
|
XPRNT PG,L'PG print
|
|
LA R6,1(R6) i++
|
|
ENDDO , enddo i
|
|
L R13,4(0,R13) restore previous savearea pointer
|
|
RETURN (14,12),RC=0 restore registers from calling sav
|
|
N DC F'8' number of pairs
|
|
T DC F'200000',F'450000',F'-450000',F'450000'
|
|
DC F'-850000',F'900000',F'-950000',F'900000'
|
|
DC F'-450000',F'1250000',F'450000',F'1450000'
|
|
DC F'294803',F'-886361',F'-783251',F'-1590360'
|
|
PG DC CL80'12345678.1234 12345678.1234 12345678.1234'
|
|
XDEC DS CL12 temp
|
|
YREGS
|
|
END ANGLEDBB
|