Goto 1:Q=2=>Goto 2 Lbl 1:"CE:X"?M:"CE:Y"?F:"JL"?L:"FWJ"?A:Rec(L,A):M+I→C:F+J→D Cls "X=":Loc" />
一、Lbl 3:"1→ZS,2→FS"?QQ=1=>Goto 1:Q=2=>Goto 2Lbl 1:"CE:X"?M:"CE:Y"?F:"JL"?L:"FWJ"?A:Rec(L,A):M+I→C:F+J→DCls"X=":Locate 3,1,C:"Y=":Locate 3,2,D◢Goto 3Lbl 2::"CE:X"?G:"CE:Y"?H:"(HOU)FY:X"?N:"(HOU)FY:Y"?EPol(N-G,E-H)If J<0:Then J+360→Y:Else J→Y:IfEndCls"FY JL=":Locate 10,1,I:"FY FWJ=":Y◆DMS◢Goto 3进入程序运行如下:1→ZS,2→FS? 输入1为正算,2为反算.以输入1为例:CE:X? 测站点X(5796.717)CE:Y? 测站点Y(5212.569)JL? 仪器测得的距离(321.889)FWJ? 仪器测得的方位角(193-41-07)得到:X=5483.966Y=5136.414再按EXE,输2为例:CE:X? 测站点X(5796.717)CE:Y? 测站点Y(5212.569)(HOU)FY:X? 后视或放样的X(5483.966)(HOU)FY:Y? 后视或放样的Y(5136.414)得到:FY JL=321.889FY FWJ=193-41-6.79二、Deg : Fix 3 : “XZ→0:YZ→1”?A : If A = 1: Then Goto 1 : IfEnd ↙If A = 0 : Then “BS→0:XY→1:AND→2:DK→3:L(I)→4 ”?O : IfEnd ↙If O = 4: Then Goto 1 : IfEnd ↙If O = 3: Then Prog “F.2 ”: If X= 0 : Then Goto 1 : IfEnd : IfEnd ↙If O≠1: Then “X1 ”?X : “Y1”?Y : X→Z[11]: Y→Z[12]: “X2 ”?P : “Y2”?Q : Pol( P-X , Q-Y) : If J﹤0 : Then J + 360→J : IfEnd : Cls : “S12= ”: Locate 6 ,1, I : “B12= ”: J ►DMS◣1→B : IfEnd ↙If O = 1: Then “XY(0) →0: ≠﹥1”? B: IfEnd ↙Lbl 1 : If A = 1 And O = 3 :Then Prog “F.2 ”: IfEnd : Prog “Q.1 ”子程序PPQX (给定综合曲线属性)“ZQX →0: *** →1: *** →2 ******* ”?C ↙If C=0: Then 100→Z[98]: n0 →Z[99]: IfEnd ↙If C=1: Then m1→Z[98]: n1 →Z[99]: IfEnd ↙If C=2: Then m2→Z[98]: n2 →Z[99]: IfEnd ↙*******Prog “PQX ”其中: mi为第i条综合曲线矩阵变量起始单元,(第1条综合曲线矩阵变量起始单元应自100开始,以便其他程序临时使用100以前的矩阵变量,综合曲线中每一基本单元需8个矩阵存储单元);ni为第i条综合曲线中基本单元数,每增加一个条综合曲线则增加一行If C=*******→Z[99]: IfEnd↙语句。
还应注特别意,原有程序中的矩阵变量定维语句DimZ应取消,只要原有程序中的矩阵变量定维不大于100,原有程序的运行不受影响。
子程序Q . 5 (建立数据库)Deg : Fix 5 ↙0→I : “N ”? W : W →Z[99]: “Z[MIN]”? V : V→Z[98]↙Lbl 1 : “NO.I= ”: I ◣Lbl C : V + 8 I→G ↙“→DK ”?A : A→Z[G]↙“→X ”?B : B→Z[G + 1]↙“→Y ”?C : C→Z[G +2]↙“→AT ”?D : D→Z[G +3]↙“→(-1Y+1) ”?K : K→Z[G +4]↙“→L ”?E : E→Z[G +5]↙“→R1 ”?F : F→Z[G +6]↙“→R2”?O : O→Z[G +7]↙Lbl 2 : “JX→1: NO→0 : OK→2”? M : If M = 2 : Then Goto 3 : IfEnd : If M = 1: Then Goto C : IfEnd ↙I + 1→I : Goto 1 ↙Lbl 3 : “END ”子程序Q . 6Lbl 1 : “S ”? W : If W = 0 : Then Goto 2 : IfEnd ↙I-W→W : Cls : “⊿S= ”: Locate 5 , 1 , W : “BP= ”: J ►DMS◣Goto 1 ↙Lbl 2 : Cls : “OK ”子程序Q.1If X = 0 And O = 3 : Then Goto 2 : IfEnd ↙Lbl 1 : Z[98]→I : Z[99]→J : “→DKP ”? S ↙If S = -1: Then Prog “JH . ZJ ”: Goto 1 : IfEnd ↙(加桥台转轴时)If S = -2: Then Prog “ZH . 2 ”: Goto 1 : IfEnd ↙(加涵通转轴时)If S = 0: Then Goto 2 : IfEnd : If S﹤Z[I ]: Then “DKP<MIN ”◣Goto 1 : IfEnd : If S > Z[I + 8 J ]: Then “DKP>MAX ”◣Goto 1 : IfEnd ↙If O≠4 And B ≠0 : Then “→B ”? V : V : Prog “J ”: T→U : “→(-+)D ÷2 ” ? N : Else 0 →N : IfEnd ↙Prog “Q.2 ”: Goto 1 ↙Lbl 2 : “END ”子程序Q . 2If O≠3 : Then “→”: IfEnd ↙0→I : Z[98]+ 8 →M ↙If S ≥Z[M-8 ]And S ≤Z[M ]:Then Goto 1 : IfEnd ↙Lbl 2 : I +1 →I : M + 8 →M ↙If S ≤Z[M ]:Then Goto 1 : Else Goto 2 : IfEnd ↙Lbl 1 : If O = 3 : Then I →B :IfEnd : M→Z[27]: If O≠4 : Then Prog “Q. 3”: Else “L(I) , I = ”: I ◣Cls : “MIN = ”: Locate 6 , 1 , Z[Z[98]+8 I ]: “MAX = ”: Locate 6 ,2 , Z[Z[98]+8 I +8]:I→B : IfEnd ↙子程序Q . 3If O = 3 And U = 0 : Then B→I : IfEnd ↙Z[98]+8 I →G ↙Z[G]→Z ↙Z[G +1]→Z[1]: Z[G +2]→Z[2]: Z[G +3]→Z[3]↙Z[3]:Prog “J ”: T→Z[3]↙Z[G +4]→Z[4]: Z[G +5]→M : 1÷Z[G +6]→Z[5]: 1÷Z[G +7]→Z [6]↙Z[6]-Z[5]→Z[6]: S-Z→D ↙If O = 3 : Then 0→N : IfEnd : Prog “Q . 4 ”↙子程序Q .4 (正算)Lbl 0 : 0→I : 0→E:0→F : 0→G : 0→H ↙Lbl 1 : I + 1→I : Z[3]+ Z[4]( ( I D÷12) ( Z[5]+ I D Z[6]÷24÷M ) ( 180÷л) →W : If I ﹤12: Then If Frac ( I÷2 ) ﹥0 : Then E + cos ( W ) →E : F + sin ( W ) →F : Else G + cos ( W ) →G : H + sin ( W ) →H : IfEnd : IfEnd ↙If I ﹤12 : Then Goto 1:IfEnd ↙Z[1]+(D÷36)( cos ( Z[3]) + cos ( W ) + 2G + 4E ) + N cos ( U + W ) →P ↙Z[2]+(D÷36)( sin ( Z[3]) + sin ( W ) + 2H + 4F ) + N sin ( U + W ) →Q ↙If O = 3 : Then Goto 2 : IfEnd ↙If O≠0 : Then Cls : “XP = ”: Locate 5 , 1 , P : “YP = ”: Locate 5 , 2 , Q : “AT = ”: W►DMS◣IfEnd ↙Z[27]→I : If Z[I]-S = 0 And Z[I + 1]= 0 And N = 0 : Then P →Z[I + 1]: Q→Z[I + 2]: W : Prog “H ”: T→Z[I +3]: IfEnd ↙If O≠1: Then Pol( P-Z[11], Q-Z[12]) : If J < 0 : Then J+360→J : IfEnd : Cls : “SP= ”: Locate 5 , 1 , I : “BP= ”: J ►DMS◣Prog “Q. 6 ”: IfEnd ↙Lbl 2子程序F . 2 (反算)“ZH.D(LI) →0 : NO→1”? U ↙Lbl 2 : If U = 0 : Then “I ”? B : IfEnd ↙Z[98]+ 8 Z[99]→M ↙If X = 0 : Then Z[13]→X : IfEnd : “X ”? X : If X = 0 : Then Goto 3 : IfEnd ↙“Y ”? Y : 1 →Z[8]↙“=〉”↙If U = 1 : Then -√( ( X-Z[M + 1]) ²+ (Y-Z[M +2]) ²) →Z[7]: Z[7]+Z[M]→S : Prog“Q . 2”: IfEnd ↙Z[98]+ 8 B→M : Z[M +3]: Prog“J ”: T-90→T ↙( Y-Z[M +2]) cos (T) -( X-Z[M + 1]) Sin (T) →Z[7]↙If U =1 And Abs ( Z[7]) ≤0.01: Then -0.01 →Z[7]: IfEnd ↙Z[7]→D : Z[M]+ D →S :If S > Z[M +8]: Then Z[M +8]→S ; IfEnd ↙If U = 0 : Then Prog“Q . 3”: Else Prog“Q . 2”: IfEnd ↙“=〉”↙Lbl 1 : ( Y-Q ) cos (W-90)-(X-P) sin (W-90) →Z[8]↙Z + Z[7]+ Z[8]→S↙If Abs ( Z[8]) ≥0.0001: Then Z[7]+ Z[8]→D : Prog“Q .4”: D→Z[7]: Goto 1: IfEnd ↙If U =1: Then If S + 0.01< Z : Then “DKP≠”: S ◣If B< Z[99]-1 : Then B-1→B : Z[Z[98]+ 8B ]→I : Z→J : Else Z→I : Z[Z [98]+ 8 Z[99]]→J : IfEnd : “L(I)= ”: B ◣Cls : “MIN= ”: Locate 6 , 1 , I : “MAX= ”: Locate 6 , 2 , J : “END, =〉ZH.D(LI)”◣X →Z[13]: 0→X : 3→O: Goto 3 : IfEnd: IfEnd ↙If U =0: Then If S< Z-0.01 : Then “DK<MIN,L→(I-1) ”◣Goto 2 : IfEnd : If S> Z[Z[98]+ 8(B+1) ]+ 0.01: Then “DK>MAX , L→(I+1) ”◣Goto 2 : IfEnd : IfEnd ↙Cls : “DKP=”: Locate 6 ,1, S : X-P→P : If P =0: Then ×10-9→P : IfEnd : Pol( P , Y-Q) : If sin(W-J)>0: Then -I→I : IfEnd : “D÷2= ”: Locate 6 , 2, I : Goto 2↙Lbl 3子程序JAns ÷. 36 -16 ( Int ( Ans ) ) ÷9-Int (100 (Ans-Int (Ans ) ) )÷90→T子程序H. 6 4 Int ( Ans )+. 36 Ans + . 004 Int ( ( 60 ( Ans-( Int (Ans ) ) →T为了实现桥台转轴坐标计算,现(2009.04.19)加一个子程序如下:子程序JH . ZJ (桥台转轴)“=〉B ”? V : V : Prog“J : W + T→T ↙Lbl 1 : “=〉(-Y +) D ”? N : N = 0 =〉Goto 2 : “=〉(-→+) S ”? S↙Pol(N , S ) : Rec( I ,T-J ) ↙Cls : “X = ”: Locate 6, 1 , I + P : “Y = ”: Locate 6 , 2 , J + Q ◣Goto 1 ↙Lbl 2 : “OK ”◣在子程序Q.1 中语句Lbl 1 : Z[98]→I : Z[99]→J : “→DKP ”? S ↙后加If S = -1: Then Prog “JH . ZJ ”: Goto 1 : IfEnd ↙(加桥台转轴时)就可以了,(2009.04.19以加,见绿色标注语句。