<< CLLCD
"   Traverse 
 v1.0 (c) 1997 
 David  Shafer
  Press ENTER"
MSGBOX
"Enter Number Of Legs
In The Traverse."
"" INPUT OBJ 'N'
STO { N 11 } 0 CON
{ 1 1 }
"Enter Starting Pt. #"
"" INPUT OBJ PUT
'TDAT' STO 1 N
  FOR w
"Enter Angle in DMS"
"" INPUT OBJ
'ANGL' STO
"Enter Bearing Direction"
{ { Azimuth
    << DROP
    >> } { NorthEast
    << DROP
    >> } { NorthWest
    << 360 ANGL HMS-
'ANGL' STO DROP
    >> } { SouthEast
    << 180 ANGL HMS-
'ANGL' STO DROP
    >> } { SouthWest
    << 180 ANGL HMS+
'ANGL' STO DROP
    >> } } 2 CHOOSE
SWAP EVAL
"Enter Length of Leg"
"" INPUT OBJ 'LEG'
STO TDAT { w 2 }
ANGL PUT { w 3 }
LEG PUT ANGL HMS
COS LEG * { w 4 }
SWAP PUT ANGL HMS
SIN LEG * { w 5 }
SWAP PUT
    IF w N <
    THEN
      <<
"Enter Next Pt. #"
"" INPUT OBJ { 'w+
1' 1 } SWAP PUT
      >> EVAL
    END 'TDAT' STO
  NEXT 'LEG' PURGE
'ANGL' PURGE 1 N
  FOR v TDAT { v 4
} GET
  NEXT 2 N
  FOR u +
  NEXT DUP 'ERLAT'
STO STR
"Error in Lats =
"
SWAP + CLLCD 1 DISP
7 FREEZE 0 WAIT
DROP 1 N
  FOR t TDAT { t 5
} GET
  NEXT 2 N
  FOR s +
  NEXT DUP 'ERDEP'
STO STR
"Error in Deps. =
"
SWAP + CLLCD 1 DISP
7 FREEZE 0 WAIT
DROP ERDEP SQ ERLAT
SQ +  DUP 'TERR'
STO STR
"Total Error =
"
SWAP + CLLCD 1 DISP
7 FREEZE 0 WAIT
DROP ERDEP ERLAT /
ATAN HMS STR
"Direction of Error =
"
SWAP + CLLCD 1 DISP
7 FREEZE 0 WAIT
DROP 1 N
  FOR r TDAT { r 3
} GET
  NEXT 2 N
  FOR q +
  NEXT 'TDIST' STO
CLEAR TDIST TERR /
STR
"Accuracy Ratio = 1 in
"
SWAP + CLLCD 1 DISP
7 FREEZE 0 WAIT
DROP CLEAR N 'n'
STO
  DO
"Pick a Procedure"
{ { Adjust
    << ERLAT TDIST /
'LATADJ' STO ERDEP
TDIST / 'DEPADJ'
STO 1 N
      FOR x TDAT {
x 3 } GET LATADJ *
TDAT { x 4 } GET
SWAP - TDAT SWAP {
x 6 } SWAP PUT
'TDAT' STO TDAT { x
3 } GET DEPADJ *
TDAT { x 5 } GET
SWAP - TDAT SWAP {
x 7 } SWAP PUT
'TDAT' STO
      NEXT
    >> } { Area
    << TDAT { 1 7 }
GET TDAT SWAP { 1 8
} SWAP PUT 'TDAT'
STO 2 N
      FOR y TDAT
DUP DUP { 'y-1' 8 }
GET SWAP { 'y-1' 7
} GET + TDAT { y 7
} GET + TDAT SWAP {
y 8 } SWAP PUT
'TDAT' STO CLEAR
      NEXT 1 N
      FOR f TDAT {
f 8 } GET TDAT { f
6 } GET * TDAT SWAP
{ f 9 } SWAP PUT
'TDAT' STO CLEAR
      NEXT 1 N
      FOR a TDAT {
a 9 } GET
      NEXT 2 N
      FOR b +
      NEXT 2 /
43560 /
      << DUP
        IF 0 <
        THEN NEG
        END
      >> EVAL STR
"Area (in Acres) =
"
SWAP + CLLCD 1 DISP
7 FREEZE 0 WAIT
    >> } { Viewer
    << CLEAR N 'A'
STO
      DO
"Pick an Item to View"
{ { Coordinates
        << TDAT { 1
1 } GET STR
"Enter a Northing &
Easting for Pt. #"
SWAP + { ":N:
:E:"
{ 1 0 } } INPUT
OBJ TDAT SWAP { 1
11 } SWAP PUT SWAP
{ 1 10 } SWAP PUT
'TDAT' STO 2 N
          FOR f
TDAT { 'f-1' 6 }
GET TDAT { 'f-1' 10
} GET + TDAT { 'f-1
' 7 } GET TDAT { 'f
-1' 11 } GET + TDAT
SWAP { f 11 } SWAP
PUT SWAP { f 10 }
SWAP PUT 'TDAT' STO
          NEXT
CLEAR 1 N
          FOR d
"Point #" TDAT { d
1 } GET STR +
"
North " TDAT { d
10 } GET STR + +
"
East " TDAT { d
11 } GET STR + +
CLLCD 1 DISP 7
FREEZE 0 WAIT
          NEXT
        >> } {
Lats&Deps
        << 1 N
          FOR d
"Point #" TDAT { d
1 } GET STR +
"
LAT " TDAT { d 4
} GET STR + +
"
DEP " TDAT { d 5
} GET STR + +
CLLCD 1 DISP 7
FREEZE 0 WAIT
          NEXT
        >> } {
Balanced
        << 1 N
          FOR d
"Point #" TDAT { d
1 } GET STR +
"
LAT " TDAT { d 6
} GET STR + +
"
DEP " TDAT { d 7
} GET STR + +
CLLCD 1 DISP 7
FREEZE 0 WAIT
          NEXT
        >> } { Exit
        << 0 'A' STO
        >> } } 1
CHOOSE SWAP EVAL
      UNTIL 'N>A'
      END
    >> } { Exit
    << 0 'n' STO
    >> } } 1 CHOOSE
SWAP EVAL
  UNTIL 'N>n'
  END CLEAR 'N'
PURGE 'n' PURGE
'ERLAT' PURGE
'ERDEP' PURGE
'TDIST' PURGE
'TERR' PURGE
'DEPADJ' PURGE
'LATADJ' PURGE 'A'
PURGE
>>
