		 
	COLOR 1, 2, 1
	CLS
      
	BB$ = MID$(DATE$, 1, 3)
	CC$ = MID$(DATE$, 4, 3)
	DD$ = MID$(DATE$, 7, 4)
	EE$ = CC$ + BB$ + DD$

	PRINT
	PRINT
	PRINT
	PRINT "          *************************************************************"
	PRINT "          *                                                           *"
	PRINT "          *                PROGRAMAS DE TOPOGRAFIA                    *"
	PRINT "          *                                                           *"
	PRINT "          *    1.  ORIENTACAO DE GIRO                  ( Prima 1 )    *"
	PRINT "          *    2.  POLIGONAL S/RED.PLANO CARTOGRAFICO  ( Prima 2 )    *"
	PRINT "          *    3.  POLIGONAL C/RED.PLANO CARTOGRAFICO  ( Prima 3 )    *"
	PRINT "          *    4.  IRRADIACAO S/RED.PLANO CARTOGRAFICO ( Prima 4 )    *"
	PRINT "          *    5.  IRRADIACAO C/RED.PLANO CARTOGRAFICO ( Prima 5 )    *"
	PRINT "          *    6.  CLASSICO                            ( Prima 6 )    *"
	PRINT "          *                                                           *"
	PRINT "          *************************************************************"
	FOR I = 1 TO 5
	PRINT
	NEXT I
	SCREEN 0
	COLOR 4
	PRINT "                                  *************************************"
	PRINT "                                  *       SAIR        ( Prima 0)      *"
	PRINT "                                  *************************************"
	COLOR 0
	PRINT " CONSULTE      PROG.TXT PARA SABER OS FORMATOS DOS FICHEIROS DE ENTRADA"

1       AA$ = INPUT$(1)
	IF AA$ = "1" GOTO 10
	IF AA$ = "2" GOTO 20
	IF AA$ = "3" GOTO 30
	IF AA$ = "4" GOTO 40
	IF AA$ = "5" GOTO 50
	IF AA$ = "6" GOTO 60
	IF AA$ = "0" GOTO 1000
	GOTO 1

10      REM ORIENTACAO DE GIRO
      
	CLS
	COLOR 1, 3, 1
	CLS

	PRINT
	PRINT "                           ORIENTACAO DE GIRO              "
	PRINT
	REM *********ESTRUTURA DO FICHEIRO DE DADOS*************************
	REM Nome do Trabalho,N§. Orientacoes de Giro
	REM Nome da Estacao,Me,Pe,N§.Vertices Visados
	REM Nome do Vertice Visado,Mv,Pv,Lv
	REM ...............................
	REM ...............................

	REM NOME DO TOPOGRAFO
	REM NOME DO CALCULADOR

	REM ****************************************************************
       
	DIM c$(20)
	DIM B(20)
	DIM R#(20)
	DIM O#(20)
	DIM Y#(20)
	INPUT "     FICHEIRO DE ENTRADA"; x$
	INPUT "     FICHEIRO DE SAIDA  "; Y$

	OPEN x$ FOR INPUT AS #1
	OPEN Y$ FOR OUTPUT AS #2
       
	INPUT #1, A$, n
	PRINT #2, "                         Topografia "
	PRINT #2,
	PRINT #2, "            Levantamento de:", A$
	PRINT #2,
	PRINT #2,
       
	FOR I = 1 TO n
	R0# = 0
	INPUT #1, B$, ME#, PE#, M
       
	FOR J = 1 TO M
	INPUT #1, c$(J), MV#, PV#, O#(J)
	R#(J) = ATN((MV# - ME#) / (PV# - PE#))
	R#(J) = R#(J) * 200 / 3.141592654#
	IF MV# - ME# > 0 AND PV# - PE# > 0 THEN R#(J) = R#(J)
	IF PV# - PE# < 0 THEN R#(J) = R#(J) + 200
	IF MV# - ME# < 0 AND PV# - PE# > 0 THEN R#(J) = R#(J) + 400
	R#(J) = INT(R#(J) * 100000) / 100000
	Y#(J) = R#(J) - O#(J)
	IF Y#(J) < 0 THEN Y#(J) = Y#(J) + 400
	R0# = R0# + Y#(J)
	NEXT J
       
	R0# = R0# / M
	R0# = INT(R0# * 100000) / 100000
       
	PRINT #2, "         Orientacao de Giro em: "; B$

	FOR J = 1 TO M
	PRINT #2,
	PRINT #2, TAB(5); c$(J);
	PRINT #2, TAB(25); "Lv="; TAB(29);
	PRINT #2, USING "###.####"; O#(J); TAB(41);
	PRINT #2, "R0="; TAB(45);
	PRINT #2, USING "###.#####"; Y#(J)
	NEXT J
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(41); "R0 medio="; TAB(51);
	PRINT #2, USING "###.#####"; R0#
	PRINT #2,
	PRINT #2,
	NEXT I

	INPUT #1, V$
	INPUT #1, W$
	REM *********************IDENTIFICACAO DOS INTERVENIENTES E DATA ****
      
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "Observado por:"; V$
	PRINT #2,
	PRINT #2, TAB(10); "Calculado por:"; W$
	PRINT #2,
	PRINT #2, TAB(45); "FCUL:"; EE$

	CLOSE
       
	GOTO 1000

20      REM POLIGONAL SEM REDUCAO AO PLANO CARTOGRAFICO
	REM *********ESTRUTURA DO FICHEIRO DE DADOS*************************

	REM N.0 VERTICES INCLUINDO EXTREMOS,NOME DO TRABALHO
	REM Mi,Pi,Ci,R0i
	REM Mf,Pf,Cf,R0f
	REM NOME,AZf,Zf,Dif,Aif,Avf
	REM NOME,AZt,Zt,Dit,Ait,Avt
	REM      AZf,Zf,Dif,Aif,Avf
	REM ..........................
	REM ..........................
	REM NOME,AZt,Zt,Dit,Ait,Avt
	REM NOME DO TOPOGRAFO
	REM NOME DO CALCULADOR

	REM ****************************************************************

	CLS
	COLOR 1, 3, 1
	CLS

	DIM A$(300), LT#(300), LF#(300), ZT#(300), ZF#(300)
	DIM DIF#(300), DIT#(300), DF#(300), DT#(300)
	DIM AT#(300), AF#(300), VT#(300), VF#(300)
	DIM rf#(300), DM#(300), NF#(300), NT#(300), NM#(300)
	DIM M#(300), P#(300), c#(300)
	DIM DELTAM#(300), DELTAP#(300)
      
	PI# = 3.1415926535#
	R# = 6374372
	PRINT
	PRINT "                POLIGONAL SEM REDUCAO AO PLANO CARTOGRAFICO"
	PRINT
	INPUT "     FICHEIRO DE ENTRADA"; A$
	INPUT "     FICHEIRO DE SAIDA  "; B$

	OPEN A$ FOR INPUT AS #1
	OPEN B$ FOR OUTPUT AS #2
	REM ***********************LEITURA DOS DADOS*********************

	INPUT #1, n, T$
	INPUT #1, M0#, P0#, C0#, R0#
	INPUT #1, M1#, P1#, C1#, R1#
	INPUT #1, A$(1), LF#(1), ZF#(1), DIF#(1), AF#(1), VF#(1)
	FOR K = 2 TO n - 1
	INPUT #1, A$(K), LT#(K), ZT#(K), DIT#(K), AT#(K), VT#(K)
	INPUT #1, LF#(K), ZF#(K), DIF#(K), AF#(K), VF#(K)
	NEXT K
	INPUT #1, A$(n), LT#(n), ZT#(n), DIT#(n), AT#(n), VT#(n)
	INPUT #1, x$
	INPUT #1, Y$


	REM **********************CALCULO DOS RUMOS**********************
	rf#(1) = R0# + LF#(1)
	IF rf#(1) > 400 THEN rf#(1) = rf#(1) - 400
	FOR K = 2 TO n - 1
	rf#(K) = rf#(K - 1) + 200 + LF#(K) - LT#(K)
	IF rf#(K) > 400 THEN rf#(K) = rf#(K) - 400
	IF rf#(K) > 400 THEN rf#(K) = rf#(K) - 400
	IF rf#(K) < 0 THEN rf#(K) = rf#(K) + 400
	NEXT K
	rf#(n) = rf#(n - 1) + 200 - LT#(n) - R1#
	IF rf#(n) > 400 THEN rf#(n) = rf#(n) - 400
	IF rf#(n) < 0 AND ABS(rf#(n)) > 380 THEN rf#(n) = rf#(n) + 400

	F# = rf#(n) / (n - 1)
       
	REM *********************COMPENSACAO DOS RUMOS********************
	FOR K = 1 TO n - 1
	rf#(K) = rf#(K) - K * F#
	NEXT K

	REM ***********************REDUCAO DAS DISTANCIAS AO HORIZONTE******

	ZF#(1) = ZF#(1) * PI# / 200
	DF#(1) = DIF#(1) * SIN(ZF#(1))
	FOR K = 2 TO n - 1
	ZT#(K) = ZT#(K) * PI# / 200
	ZF#(K) = ZF#(K) * PI# / 200
	DT#(K) = DIT#(K) * SIN(ZT#(K))
	DF#(K) = DIF#(K) * SIN(ZF#(K))
	NEXT K
	ZT#(n) = ZT#(n) * PI# / 200
	DT#(n) = DIT#(n) * SIN(ZT#(n))
       
	REM **********************CALCULO DA MEDIA DAS DISTANCIAS **********

	DTOTAL# = 0
	FOR K = 1 TO n - 1
	DV = 2
	IF DF#(K) = 0 OR DT#(K + 1) = 0 THEN DV = 1
	DM#(K) = (DF#(K) + DT#(K + 1)) / DV
	DTOTAL# = DTOTAL# + DM#(K)
	NEXT K
      
	REM **********************CALCULO DE DESNIVEIS**********************

	DNTOTAL# = 0
	FOR K = 1 TO n - 1
	NF#(K) = DM#(K) / TAN(ZF#(K)) + AF#(K) - VF#(K) + 6.82 * 10 ^ -8 * DM#(K) ^ 2
	NT#(K) = DM#(K) / TAN(ZT#(K + 1)) + AT#(K + 1) - VT#(K + 1) + 6.82 * 10 ^ -8 * DM#(K) ^ 2
	NM#(K) = (NF#(K) - NT#(K)) / 2
	DNTOTAL# = DNTOTAL# + NM#(K)
	NEXT K

	REM *********************CALCULO DO FECHO ALTIMETRICO ***************

	DESNIVEL# = C0# - C1#
	EFALT# = DESNIVEL# + DNTOTAL#
	KALT# = -EFALT# / DTOTAL#

	REM ********************CORRECAO DO FECHO ALTIMETRICO ****************

	c#(1) = C0#
	FOR K = 2 TO n
	c#(K) = c#(K - 1) + NM#(K - 1) + KALT# * DM#(K - 1)
	NEXT K

	TALT = SQR(n - 1) * .03 + .1

	REM *******************CALCULO DEFINITIVO DA PLANIMETRIA**************

	SDM# = 0
	ASDM# = 0
	SDP# = 0
	ASDP# = 0
	M#(1) = M0#
	P#(1) = P0#
	FOR K = 2 TO n
	rf#(K - 1) = rf#(K - 1) * PI# / 200
	NEXT K
	FOR K = 1 TO n - 1
	DELTAM#(K) = DM#(K) * SIN(rf#(K))
	SDM# = SDM# + DELTAM#(K)
	ASDM# = ASDM# + ABS(DELTAM#(K))
	DELTAP#(K) = DM#(K) * COS(rf#(K))
	SDP# = SDP# + DELTAP#(K)
	ASDP# = ASDP# + ABS(DELTAP#(K))
	NEXT K
	REM *************************COMPENSACAO PLANIMETRICA****************

	MER# = M0# - M1#
	PER# = P0# - P1#
	EFM# = MER# + SDM#
	EFP# = PER# + SDP#

	EFTOT# = SQR(EFM# ^ 2 + EFP# ^ 2)
	PERC# = DTOTAL# / EFTOT#

	KM# = -EFM# / ASDM#
	KP# = -EFP# / ASDP#

	FOR K = 1 TO n - 1
	DELTAM#(K) = DELTAM#(K) + KM# * ABS(DELTAM#(K))
	DELTAP#(K) = DELTAP#(K) + KP# * ABS(DELTAP#(K))
	NEXT K
	FOR K = 2 TO n
	M#(K) = M#(K - 1) + DELTAM#(K - 1)
	P#(K) = P#(K - 1) + DELTAP#(K - 1)
	NEXT K
      
	REM ******************* VOLTA A GRADOS****************************+

	ZF#(1) = ZF#(1) / PI# * 200
	FOR K = 2 TO n - 1
	ZT#(K) = ZT#(K) / PI# * 200
	ZF#(K) = ZF#(K) / PI# * 200
	NEXT K
	ZT#(n) = ZT#(n) / PI# * 200
      
	FOR K = 1 TO n - 1
	rf#(K) = rf#(K) / PI# * 200
	NEXT K
       
	REM *********************CALCULO DA TOLERANCIA ANGULAR **************

	TANGUL# = (1.5 * SQR(n)) / (DTOTAL# / (n - 1))

	REM **********************IMPRESSAO VERTICES EXTREMOS**************
      
	PRINT #2, "                         Topografia "
	PRINT #2,
	PRINT #2, "            Levantamento de:", T$
	PRINT #2,
	PRINT #2,


	PRINT #2, "        VERTICE INICIAL", TAB(40); "VERTICE FINAL"
	PRINT #2, TAB(12); A$(1); TAB(43); A$(n)
	PRINT #2, "        M="; USING "#######.###"; M0#; TAB(40);
	PRINT #2, "M="; USING "#######.###"; M1#
	PRINT #2, "        P="; USING "#######.###"; P0#; TAB(40);
	PRINT #2, "P="; USING "#######.###"; P1#
	PRINT #2, "        N="; USING "#######.###"; C0#; TAB(40);
	PRINT #2, "N="; USING "#######.###"; C1#
	PRINT #2, "        R0="; USING "#####.####"; R0#; TAB(40);
	PRINT #2, "R0="; USING "#####.####"; R1#
	PRINT #2,
	PRINT #2,

	REM ************************IMPRESSAO DADOS DO CAMPO****************
	PRINT #2, "____________________________________________________________________________"
      
      
	PRINT #2, "  Estacao   V.Vis.     L.Az        L.Zen        Di         Ai       Av"
	PRINT #2, "____________________________________________________________________________"
	PRINT #2,
	PRINT #2, TAB(3); A$(1)
	PRINT #2, TAB(11); A$(2); TAB(22);
	PRINT #2, USING "###.####"; LF#(1); TAB(35);
	PRINT #2, USING "###.####"; ZF#(1); TAB(46);
	PRINT #2, USING "####.###"; DIF#(1); TAB(59);
	PRINT #2, USING "#.###"; AF#(1); TAB(68);
	PRINT #2, USING "#.###"; VF#(1)

	FOR K = 2 TO n - 1
	PRINT #2, "____________________________________________________________________________"
	PRINT #2, TAB(11); A$(K - 1); TAB(22);
	PRINT #2, USING "###.####"; LT#(K); TAB(35);
	PRINT #2, USING "###.####"; ZT#(K); TAB(46);
	PRINT #2, USING "####.###"; DIT#(K); TAB(59);
	PRINT #2, USING "#.###"; AT#(K); TAB(68);
	PRINT #2, USING "#.###"; VT#(K)
	PRINT #2, TAB(3); A$(K)
	PRINT #2, TAB(11); A$(K + 1); TAB(22);
	PRINT #2, USING "###.####"; LF#(K); TAB(35);
	PRINT #2, USING "###.####"; ZF#(K); TAB(46);
	PRINT #2, USING "####.###"; DIF#(K); TAB(59);
	PRINT #2, USING "#.###"; AF#(K); TAB(68);
	PRINT #2, USING "#.###"; VF#(K)

	NEXT K
      
	PRINT #2, "____________________________________________________________________________"
	PRINT #2, TAB(11); A$(n - 1); TAB(22);
	PRINT #2, USING "###.####"; LT#(n); TAB(35);
	PRINT #2, USING "###.####"; ZT#(n); TAB(46);
	PRINT #2, USING "####.###"; DIT#(n); TAB(59);
	PRINT #2, USING "#.###"; AT#(n); TAB(68);
	PRINT #2, USING "#.###"; VT#(n)
	PRINT #2, TAB(3); A$(n)

	REM ************IMPRESSAO DISTANCIAS REDUZIDAS AO HORIZONTE**********

	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "DISTANCIAS REDUZIDAS AO HORIZONTE"
	PRINT #2, TAB(10); "_________________________________"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(10); "De:"; TAB(15);
	PRINT #2, A$(K); TAB(35);
	PRINT #2, "Para:"; TAB(42);
	PRINT #2, A$(K + 1); TAB(60);
	PRINT #2, "="; TAB(62);
	PRINT #2, USING "####.###"; DM#(K)
	NEXT K
	PRINT #2,
	PRINT #2, TAB(22); "DESENVOLVIMENTO="; TAB(40);
	PRINT #2, USING "######.###"; DTOTAL#
	PRINT #2,
	PRINT #2,
      
	REM ****************IMPRESSAO DOS RUMOS COMPENSADOS **************
      
	PRINT #2, TAB(10); "RUMOS COMPENSADOS"
	PRINT #2, TAB(10); "_________________"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(10); "De:"; TAB(15);
	PRINT #2, A$(K); TAB(35);
	PRINT #2, "Para:"; TAB(42);
	PRINT #2, A$(K + 1); TAB(60);
	PRINT #2, "="; TAB(62);
	PRINT #2, USING "###.#####"; rf#(K)
	NEXT K
	PRINT #2,
	PRINT #2, TAB(32); "ERRO DE FECHO ANGULAR="; TAB(55);
	PRINT #2, USING "#.####"; rf#(n)
	PRINT #2, TAB(32); "TOLERANCIA ANGULAR   ="; TAB(55);
	PRINT #2, USING "#.####"; TANGUL#
	PRINT #2,
	PRINT #2,

	REM ****************IMPRESSAO DOS DESNIVEIS ************************
     
	PRINT #2, TAB(10); "CALCULO DOS DESNIVEIS"
	PRINT #2, TAB(10); "_____________________"
	PRINT #2,
	PRINT #2, TAB(35); "P/FRENTE"; TAB(47); "P/TRAZ"; TAB(57); "P/FRENTE(media)"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(5); A$(K); TAB(17);
	PRINT #2, "-"; TAB(20);
	PRINT #2, A$(K + 1); TAB(35);
	PRINT #2, USING "####.###"; NF#(K); TAB(47);
	PRINT #2, USING "####.###"; NT#(K); TAB(57);
	PRINT #2, USING "####.###"; NM#(K)
	NEXT K
	PRINT #2,
	PRINT #2, TAB(32); "ERRO DE FECHO ALTIMETRICO="; TAB(59);
	PRINT #2, USING "##.####"; EFALT#
	PRINT #2, TAB(32); "TOLERANCIA ALTIMETRICA   ="; TAB(59);
	PRINT #2, USING "##.####"; TALT
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(32); "ERRO DE FECHO EM  M      ="; TAB(59);
	PRINT #2, USING "##.####"; EFM#
	PRINT #2, TAB(32); "ERRO DE FECHO EM  P      ="; TAB(59);
	PRINT #2, USING "##.####"; EFP#
	PRINT #2, TAB(32); "ERRO DE FECHO            =1/"; TAB(61);
	PRINT #2, USING "#########"; PERC#
	PRINT #2,
	PRINT #2,

	REM *********************IMPRESSAO DAS COORDENADAS *****************

	PRINT #2, TAB(6); "VERTICE"; TAB(25); "M"; TAB(40); "P"; TAB(55); "Cv"
	PRINT #2, TAB(6); "_______"; TAB(25); "_"; TAB(40); "_"; TAB(55); "__"
	PRINT #2,
	FOR K = 1 TO n
	PRINT #2, TAB(5); A$(K); TAB(20);
	PRINT #2, USING "#######.###"; M#(K); TAB(35);
	PRINT #2, USING "#######.###"; P#(K); TAB(50);
	PRINT #2, USING "#######.###"; c#(K)
	NEXT K

	REM *********************IDENTIFICACAO DOS INTERVENIENTES E DATA ****
      
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "Observado por:"; x$
	PRINT #2,
	PRINT #2, TAB(10); "Calculado por:"; Y$
	PRINT #2,
	PRINT #2, TAB(45); "FCUL:"; EE$

	CLOSE
	GOTO 1000

30      REM POLIGONAL COM REDUCAO AO PLANO CARTOGRAFICO
	REM *********ESTRUTURA DO FICHEIRO DE DADOS*************************

	REM N.0 VERTICES INCLUINDO EXTREMOS,NOME DO TRABALHO
	REM Mi,Pi,Ci,R0i
	REM Mf,Pf,Cf,R0f
	REM NOME,AZf,Zf,Dif,Aif,Avf
	REM NOME,AZt,Zt,Dit,Ait,Avt
	REM      AZf,Zf,Dif,Aif,Avf
	REM ..........................
	REM ..........................
	REM NOME,AZt,Zt,Dit,Ait,Avt
	REM NOME DO TOPOGRAFO
	REM NOME DO CALCULADOR

	REM ****************************************************************

	CLS
	COLOR 1, 3, 1
	CLS

	DIM DME#(300), DMP#(300)
       
	PI# = 3.1415926535#
	R# = 6374372
	PRINT
	PRINT "                POLIGONAL COM REDUCAO AO PLANO CARTOGRAFICO"
	PRINT
	INPUT "     FICHEIRO DE ENTRADA"; A$
	INPUT "     FICHEIRO DE SAIDA  "; B$

	OPEN A$ FOR INPUT AS #1
	OPEN B$ FOR OUTPUT AS #2
	
	REM ***********************LEITURA DOS DADOS*********************

	INPUT #1, n, T$
	INPUT #1, M0#, P0#, C0#, R0#
	INPUT #1, M1#, P1#, C1#, R1#
	INPUT #1, A$(1), LF#(1), ZF#(1), DIF#(1), AF#(1), VF#(1)
	FOR K = 2 TO n - 1
	INPUT #1, A$(K), LT#(K), ZT#(K), DIT#(K), AT#(K), VT#(K)
	INPUT #1, LF#(K), ZF#(K), DIF#(K), AF#(K), VF#(K)
	NEXT K
	INPUT #1, A$(n), LT#(n), ZT#(n), DIT#(n), AT#(n), VT#(n)
	INPUT #1, x$
	INPUT #1, Y$

	REM **********************CALCULO DOS RUMOS**********************
	rf#(1) = R0# + LF#(1)
	IF rf#(1) > 400 THEN rf#(1) = rf#(1) - 400
	IF rf#(1) > 400 THEN rf#(1) = rf#(1) - 400
	FOR K = 2 TO n - 1
	rf#(K) = rf#(K - 1) + 200 + LF#(K) - LT#(K)
	IF rf#(K) > 400 THEN rf#(K) = rf#(K) - 400
	IF rf#(K) > 400 THEN rf#(K) = rf#(K) - 400
	IF rf#(K) < 0 THEN rf#(K) = rf#(K) + 400
	NEXT K
	rf#(n) = rf#(n - 1) + 200 - LT#(n) - R1#
	IF rf#(n) > 400 THEN rf#(n) = rf#(n) - 400
	IF rf#(n) > 400 THEN rf#(n) = rf#(n) - 400
	IF rf#(n) > 200 THEN rf#(n) = 400 - rf#(n)
	IF rf#(n) < 0 AND ABS(rf#(n)) > 390 THEN rf#(n) = rf#(n) + 400
	F# = rf#(n) / (n - 1)
	
	REM *********************COMPENSACAO DOS RUMOS********************
	FOR K = 1 TO n - 1
	rf#(K) = rf#(K) - K * F#
	NEXT K

	REM ***********************REDUCAO DAS DISTANCIAS AO HORIZONTE******

	ZF#(1) = ZF#(1) * PI# / 200
	DF#(1) = DIF#(1) * SIN(ZF#(1))
	FOR K = 2 TO n - 1
	ZT#(K) = ZT#(K) * PI# / 200
	ZF#(K) = ZF#(K) * PI# / 200
	DT#(K) = DIT#(K) * SIN(ZT#(K))
	DF#(K) = DIF#(K) * SIN(ZF#(K))
	NEXT K
	ZT#(n) = ZT#(n) * PI# / 200
	DT#(n) = DIT#(n) * SIN(ZT#(n))
	
	REM **********************CALCULO DA MEDIA DAS DISTANCIAS **********

	DTOTAL# = 0
	FOR K = 1 TO n - 1
	DV = 2
	IF DF#(K) = 0 OR DT#(K + 1) = 0 THEN DV = 1
	DM#(K) = (DF#(K) + DT#(K + 1)) / DV
	DTOTAL# = DTOTAL# + DM#(K)
	NEXT K
       
	REM **********************CALCULO DE DESNIVEIS**********************

	DNTOTAL# = 0
	FOR K = 1 TO n - 1
	NF#(K) = DM#(K) / TAN(ZF#(K)) + AF#(K) - VF#(K) + 6.82 * 10 ^ -8 * DM#(K) ^ 2
	NT#(K) = DM#(K) / TAN(ZT#(K + 1)) + AT#(K + 1) - VT#(K + 1) + 6.82 * 10 ^ -8 * DM#(K) ^ 2
	NM#(K) = (NF#(K) - NT#(K)) / 2
	DNTOTAL# = DNTOTAL# + NM#(K)
	NEXT K

	REM *********************CALCULO DO FECHO ALTIMETRICO ***************

	DESNIVEL# = C0# - C1#
	EFALT# = DESNIVEL# + DNTOTAL#
	KALT# = -EFALT# / DTOTAL#

	REM ********************CORRECAO DO FECHO ALTIMETRICO ****************

	c#(1) = C0#
	FOR K = 2 TO n
	c#(K) = c#(K - 1) + NM#(K - 1) + KALT# * DM#(K - 1)
	NEXT K

	TALT = SQR(n - 1) * .03 + .1

	REM *******************REDUCAO AO ELIPSOIDE **************************

	FOR K = 1 TO n - 1
	DME#(K) = DM#(K) * R# / (R# + (c#(K) + c#(K + 1)) / 2)
	NEXT K

	REM *******************CALCULO PROVISORIO DA PLANIMETRIA**************

	M#(1) = M0#
	P#(1) = P0#
	FOR K = 2 TO n
	rf#(K - 1) = rf#(K - 1) * PI# / 200
	M#(K) = M#(K - 1) + DME#(K - 1) * SIN(rf#(K - 1))
	P#(K) = P#(K - 1) + DME#(K - 1) * COS(rf#(K - 1))
	NEXT K

	FOR K = 1 TO n
	NEXT K
	REM ******************REDUCAO AO PLANO CARTOGRAFICO ******************
       
	DMP# = 0
	FOR K = 1 TO n - 1
	DMP#(K) = DME#(K) + (M#(K) ^ 2 + M#(K) * M#(K + 1) + M#(K + 1) ^ 2) * 4.1018 * 10 ^ -15 * DME#(K)
	DMP# = DMP# + DMP#(K)
	NEXT K

	REM *******************CALCULO DEFINITIVO DA PLANIMETRIA**************

	SDM# = 0
	ASDM# = 0
	SDP# = 0
	ASDP# = 0
	FOR K = 1 TO n - 1
	DELTAM#(K) = DMP#(K) * SIN(rf#(K))
	SDM# = SDM# + DELTAM#(K)
	ASDM# = ASDM# + ABS(DELTAM#(K))
	DELTAP#(K) = DMP#(K) * COS(rf#(K))
	SDP# = SDP# + DELTAP#(K)
	ASDP# = ASDP# + ABS(DELTAP#(K))
	NEXT K
	REM *************************COMPENSACAO PLANIMETRICA****************

	MER# = M0# - M1#
	PER# = P0# - P1#
	EFM# = MER# + SDM#
	EFP# = PER# + SDP#

	EFTOT# = SQR(EFM# ^ 2 + EFP# ^ 2)
	PERC# = DMP# / EFTOT#

	KM# = -EFM# / ASDM#
	KP# = -EFP# / ASDP#

	FOR K = 1 TO n - 1
	DELTAM#(K) = DELTAM#(K) + KM# * ABS(DELTAM#(K))
	DELTAP#(K) = DELTAP#(K) + KP# * ABS(DELTAP#(K))
	NEXT K
	FOR K = 2 TO n
	M#(K) = M#(K - 1) + DELTAM#(K - 1)
	P#(K) = P#(K - 1) + DELTAP#(K - 1)
	NEXT K
       
	REM ******************* VOLTA A GRADOS****************************+

	ZF#(1) = ZF#(1) / PI# * 200
	FOR K = 2 TO n - 1
	ZT#(K) = ZT#(K) / PI# * 200
	ZF#(K) = ZF#(K) / PI# * 200
	NEXT K
	ZT#(n) = ZT#(n) / PI# * 200
       
	FOR K = 1 TO n - 1
	rf#(K) = rf#(K) / PI# * 200
	NEXT K
	
	REM *********************CALCULO DA TOLERANCIA ANGULAR **************

	TANGUL# = (1.5 * SQR(n)) / (DMP# / (n - 1))

	REM **********************IMPRESSAO VERTICES EXTREMOS**************
       
	PRINT #2, "                         Topografia "
	PRINT #2,
	PRINT #2, "            Levantamento de:", T$
	PRINT #2,
	PRINT #2,


	PRINT #2, "        VERTICE INICIAL", TAB(40); "VERTICE FINAL"
	PRINT #2, TAB(12); A$(1); TAB(43); A$(n)
	PRINT #2, "        M="; USING "#######.###"; M0#; TAB(40);
	PRINT #2, "M="; USING "#######.###"; M1#
	PRINT #2, "        P="; USING "#######.###"; P0#; TAB(40);
	PRINT #2, "P="; USING "#######.###"; P1#
	PRINT #2, "        N="; USING "#######.###"; C0#; TAB(40);
	PRINT #2, "N="; USING "#######.###"; C1#
	PRINT #2, "        R0="; USING "#####.####"; R0#; TAB(40);
	PRINT #2, "R0="; USING "#####.####"; R1#
	PRINT #2,
	PRINT #2,

	REM ************************IMPRESSAO DADOS DO CAMPO****************
	PRINT #2, "____________________________________________________________________________"
       
       
	PRINT #2, "  Estacao   V.Vis.     L.Az        L.Zen        Di         Ai       Av"
	PRINT #2, "____________________________________________________________________________"
	PRINT #2,
	PRINT #2, TAB(3); A$(1)
	PRINT #2, TAB(11); A$(2); TAB(22);
	PRINT #2, USING "###.####"; LF#(1); TAB(35);
	PRINT #2, USING "###.####"; ZF#(1); TAB(46);
	PRINT #2, USING "####.###"; DIF#(1); TAB(59);
	PRINT #2, USING "#.###"; AF#(1); TAB(68);
	PRINT #2, USING "#.###"; VF#(1)

	FOR K = 2 TO n - 1
	PRINT #2, "____________________________________________________________________________"
	PRINT #2, TAB(11); A$(K - 1); TAB(22);
	PRINT #2, USING "###.####"; LT#(K); TAB(35);
	PRINT #2, USING "###.####"; ZT#(K); TAB(46);
	PRINT #2, USING "####.###"; DIT#(K); TAB(59);
	PRINT #2, USING "#.###"; AT#(K); TAB(68);
	PRINT #2, USING "#.###"; VT#(K)
	PRINT #2, TAB(3); A$(K)
	PRINT #2, TAB(11); A$(K + 1); TAB(22);
	PRINT #2, USING "###.####"; LF#(K); TAB(35);
	PRINT #2, USING "###.####"; ZF#(K); TAB(46);
	PRINT #2, USING "####.###"; DIF#(K); TAB(59);
	PRINT #2, USING "#.###"; AF#(K); TAB(68);
	PRINT #2, USING "#.###"; VF#(K)

	NEXT K
       
	PRINT #2, "____________________________________________________________________________"
	PRINT #2, TAB(11); A$(n - 1); TAB(22);
	PRINT #2, USING "###.####"; LT#(n); TAB(35);
	PRINT #2, USING "###.####"; ZT#(n); TAB(46);
	PRINT #2, USING "####.###"; DIT#(n); TAB(59);
	PRINT #2, USING "#.###"; AT#(n); TAB(68);
	PRINT #2, USING "#.###"; VT#(n)
	PRINT #2, TAB(3); A$(n)

	REM ************IMPRESSAO DISTANCIAS REDUZIDAS ELIPSOIDE*************

	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "DISTANCIAS REDUZIDAS AO ELIPSOIDE"
	PRINT #2, TAB(10); "_________________________________"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(10); "De:"; TAB(15);
	PRINT #2, A$(K); TAB(35);
	PRINT #2, "Para:"; TAB(42);
	PRINT #2, A$(K + 1); TAB(60);
	PRINT #2, "="; TAB(62);
	PRINT #2, USING "####.###"; DME#(K)
	NEXT K

	REM ************ IMPRESSAO DISTANCIAS PLANO CARTOGRAFICO ***********

	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "DISTANCIAS REDUZIDAS PLANO CARTOGRAFICO"
	PRINT #2, TAB(10); "_______________________________________"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(10); "De:"; TAB(15);
	PRINT #2, A$(K); TAB(35);
	PRINT #2, "Para:"; TAB(42);
	PRINT #2, A$(K + 1); TAB(60);
	PRINT #2, "="; TAB(62);
	PRINT #2, USING "####.###"; DMP#(K)
	NEXT K
	PRINT #2,
	PRINT #2, TAB(22); "DESENVOLVIMENTO="; TAB(40);
	PRINT #2, USING "######.###"; DMP#
	PRINT #2,
	PRINT #2,
       
	REM ****************IMPRESSAO DOS RUMOS COMPENSADOS **************
       
	PRINT #2, TAB(10); "RUMOS COMPENSADOS"
	PRINT #2, TAB(10); "_________________"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(10); "De:"; TAB(15);
	PRINT #2, A$(K); TAB(35);
	PRINT #2, "Para:"; TAB(42);
	PRINT #2, A$(K + 1); TAB(60);
	PRINT #2, "="; TAB(62);
	PRINT #2, USING "###.#####"; rf#(K)
	NEXT K
	PRINT #2,
	PRINT #2, TAB(32); "ERRO DE FECHO ANGULAR="; TAB(55);
	PRINT #2, USING "#.####"; rf#(n)
	PRINT #2, TAB(32); "TOLERANCIA ANGULAR   ="; TAB(55);
	PRINT #2, USING "#.####"; TANGUL#
	PRINT #2,
	PRINT #2,

	REM ****************IMPRESSAO DOS DESNIVEIS ************************
      
	PRINT #2, TAB(10); "CALCULO DOS DESNIVEIS"
	PRINT #2, TAB(10); "_____________________"
	PRINT #2,
	PRINT #2, TAB(35); "P/FRENTE"; TAB(47); "P/TRAZ"; TAB(57); "P/FRENTE(media)"
	PRINT #2,
	FOR K = 1 TO n - 1
	PRINT #2, TAB(5); A$(K); TAB(17);
	PRINT #2, "-"; TAB(20);
	PRINT #2, A$(K + 1); TAB(35);
	PRINT #2, USING "####.###"; NF#(K); TAB(47);
	PRINT #2, USING "####.###"; NT#(K); TAB(57);
	PRINT #2, USING "####.###"; NM#(K)
	NEXT K
	PRINT #2,
	PRINT #2, TAB(32); "ERRO DE FECHO ALTIMETRICO="; TAB(59);
	PRINT #2, USING "##.####"; EFALT#
	PRINT #2, TAB(32); "TOLERANCIA ALTIMETRICA   ="; TAB(59);
	PRINT #2, USING "##.####"; TALT
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(32); "ERRO DE FECHO EM  M      ="; TAB(59);
	PRINT #2, USING "##.####"; EFM#
	PRINT #2, TAB(32); "ERRO DE FECHO EM  P      ="; TAB(59);
	PRINT #2, USING "##.####"; EFP#
	PRINT #2, TAB(32); "ERRO DE FECHO            =1/"; TAB(61);
	PRINT #2, USING "#########"; PERC#
	PRINT #2,
	PRINT #2,

	REM *********************IMPRESSAO DAS COORDENADAS *****************

	PRINT #2, TAB(6); "VERTICE"; TAB(25); "M"; TAB(40); "P"; TAB(55); "Cv"
	PRINT #2, TAB(6); "_______"; TAB(25); "_"; TAB(40); "_"; TAB(55); "__"
	PRINT #2,
	FOR K = 1 TO n
	PRINT #2, TAB(5); A$(K); TAB(20);
	PRINT #2, USING "#######.###"; M#(K); TAB(35);
	PRINT #2, USING "#######.###"; P#(K); TAB(50);
	PRINT #2, USING "#######.###"; c#(K)
	NEXT K

	REM *********************IDENTIFICACAO DOS INTERVENIENTES E DATA ****
       
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "Observado por:"; x$
	PRINT #2,
	PRINT #2, TAB(10); "Calculado por:"; Y$
	PRINT #2,
	PRINT #2, TAB(45); "FCUL:"; EE$

	CLOSE
	GOTO 1000
      

40      REM IRRADIACAO SEM REDUCAO AO PLANO CARTOGRAFICO
      
	CLS
	COLOR 1, 3, 1
	CLS

	PRINT
	PRINT "        IRRADIACAO SEM REDUCAO AO PLANO CARTOGRAFICO       "
	PRINT
	REM *********ESTRUTURA DO FICHEIRO DE DADOS*************************
	REM Nome do Trabalho,N§. Estacoes com irradiadas
	REM Nome da Estacao,Me,Pe,Ce,R0,Hi,N§ de irradiadas
	REM Nome do Ponto,Az,Z,Di,Hv
	REM ...............................
	REM ...............................

	REM NOME DO TOPOGRAFO
	REM NOME DO CALCULADOR

	REM ****************************************************************
	INPUT "     FICHEIRO DE ENTRADA"; x$
	INPUT "     FICHEIRO DE SAIDA  "; Y$

	OPEN x$ FOR INPUT AS #1
	OPEN Y$ FOR OUTPUT AS #2
	DIM D$(300), AZ#(300), Z#(300), DI#(300), AV#(300)
	DIM RP#(300), MP#(300), PP#(300), CP#(300)
	PI# = 3.1415926535#
	INPUT #1, A$, n
	PRINT #2, "                         Topografia "
	PRINT #2,
	PRINT #2, "            Levantamento de:", A$
	PRINT #2,
	PRINT #2,
      
	FOR I = 1 TO n
	INPUT #1, B$, ME#, PE#, CE#, R0#, HI#, M
      
	FOR J = 1 TO M
	INPUT #1, D$(J), AZ#(J), Z#(J), DI#(J), AV#(J)
	AZ#(J) = AZ#(J) * PI# / 200
	R0# = R0# * PI# / 200
	Z#(J) = Z#(J) * PI# / 200
	RP#(J) = AZ#(J) + R0#
	MP#(J) = ME# + DI#(J) * SIN(Z#(J)) * SIN(RP#(J))
	PP#(J) = PE# + DI#(J) * SIN(Z#(J)) * COS(RP#(J))
	CP#(J) = CE# + HI# - AV#(J) + DI#(J) * COS(Z#(J)) + 6.82 * 10 ^ -8 * (DI#(J) * SIN(Z#(J))) ^ 2
	AZ#(J) = AZ#(J) / PI# * 200
	R0# = R0# / PI# * 200
	Z#(J) = Z#(J) / PI# * 200
	NEXT J
      
	PRINT #2,
	PRINT #2,
	PRINT #2, "                 Irradiacao em: "; B$
	PRINT #2,
	PRINT #2, TAB(30); "M="; TAB(33);
	PRINT #2, USING "#######.###"; ME#; TAB(55);
	PRINT #2, "R0="; TAB(59);
	PRINT #2, USING "###.####"; R0#
	PRINT #2, TAB(30); "P="; TAB(33);
	PRINT #2, USING "#######.###"; PE#; TAB(55);
	PRINT #2, "Ai="; TAB(59);
	PRINT #2, USING "###.###"; HI#
	PRINT #2, TAB(30); "N="; TAB(33);
	PRINT #2, USING "#######.###"; CE#


	FOR J = 1 TO M
	PRINT #2,
	PRINT #2, TAB(5); "**"; TAB(8); D$(J)
	PRINT #2, TAB(15); "Az="; TAB(19);
	PRINT #2, USING "###.####"; AZ#(J); TAB(29);
	PRINT #2, "Z="; TAB(32);
	PRINT #2, USING "###.####"; Z#(J); TAB(42);
	PRINT #2, "Di="; TAB(46);
	PRINT #2, USING "####.###"; DI#(J); TAB(56);
	PRINT #2, "Av="; TAB(60);
	PRINT #2, USING "#.###"; AV#(J)
	PRINT #2,
	PRINT #2, TAB(30); "M="; TAB(33);
	PRINT #2, USING "#######.###"; MP#(J)
	PRINT #2, TAB(30); "P="; TAB(33);
	PRINT #2, USING "#######.###"; PP#(J)
	PRINT #2, TAB(30); "N="; TAB(33);
	PRINT #2, USING "#######.###"; CP#(J)
	NEXT J
	NEXT I

	INPUT #1, V$
	INPUT #1, W$
	REM *********************IDENTIFICACAO DOS INTERVENIENTES E DATA ****
     
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "Observado por:"; V$
	PRINT #2,
	PRINT #2, TAB(10); "Calculado por:"; W$
	PRINT #2,
	PRINT #2, TAB(45); "FCUL:"; EE$

	CLOSE
      
	GOTO 1000

50      REM IRRADIACAO COM REDUCAO AO PLANO CARTOGRAFICO
    
	CLS
	COLOR 1, 3, 1
	CLS

	PRINT
	PRINT "        IRRADIACAO COM REDUCAO AO PLANO CARTOGRAFICO       "
	PRINT
	REM *********ESTRUTURA DO FICHEIRO DE DADOS*************************
	REM Nome do Trabalho,N§. Estacoes com irradiadas
	REM Nome da Estacao,Me,Pe,Ce,R0,Hi,N§ de irradiadas
	REM Nome do Ponto,Az,Z,Di,Hv
	REM ...............................
	REM ...............................

	REM NOME DO TOPOGRAFO
	REM NOME DO CALCULADOR

	REM ****************************************************************
	INPUT "     FICHEIRO DE ENTRADA"; x$
	INPUT "     FICHEIRO DE SAIDA  "; Y$
	INPUT "     FICHEIRO DE SAIDA (p/xyztxt)  "; Z$

	OPEN x$ FOR INPUT AS #1
	OPEN Y$ FOR OUTPUT AS #2
	OPEN Z$ FOR OUTPUT AS #3

	cel! = 1

	DIM DH#(300), DE#(300), DP#(300)
	PI# = 3.1415926535#
	R# = 6374372
	INPUT #1, A$, n
	PRINT #2, "                         Topografia "
	PRINT #2,
	PRINT #2, "            Levantamento de:", A$
	PRINT #2,
	PRINT #2,
     
	FOR I = 1 TO n
	INPUT #1, B$, ME#, PE#, CE#, R0#, HI#, M
     
	FOR J = 1 TO M
	INPUT #1, D$(J), AZ#(J), Z#(J), DI#(J), AV#(J)
	AZ#(J) = AZ#(J) * PI# / 200
	R0# = R0# * PI# / 200
	Z#(J) = Z#(J) * PI# / 200
	RP#(J) = AZ#(J) + R0#
	IF RP#(J) > 2 * PI# THEN RP#(J) = RP#(J) - 2 * PI#
	DH#(J) = DI#(J) * SIN(Z#(J))
	MP#(J) = ME# + DI#(J) * SIN(Z#(J)) * SIN(RP#(J))
	PP#(J) = PE# + DI#(J) * SIN(Z#(J)) * COS(RP#(J))
	CP#(J) = CE# + HI# - AV#(J) + DI#(J) * COS(Z#(J)) + 6.82 * 10 ^ -8 * (DI#(J) * SIN(Z#(J))) ^ 2
       
	REM ***************REDUCAO AO ELIPSOIDE ****************************

	DE#(J) = DH#(J) * R# / (R# + (CE# + CP#(J)) / 2)

	REM ***************REDUCAO AO PLANO CARTOGRAFICO *******************
       
	DP#(J) = DE#(J) + (ME# ^ 2 + ME# * MP#(J) + MP#(J) ^ 2) * 4.1018 * 10 ^ -15 * DE#(J)
       
	REM ***************CALCULO DEFINITIVO DAS COORDENADAS **************

	MP#(J) = ME# + DP#(J) * SIN(RP#(J))
	PP#(J) = PE# + DP#(J) * COS(RP#(J))
	CP#(J) = CE# + HI# - AV#(J) + DP#(J) / TAN(Z#(J)) + 6.82 * 10 ^ -8 * (DI#(J) * SIN(Z#(J))) ^ 2

	REM ***************VOLTA A GRADOS **********************************

	AZ#(J) = AZ#(J) / PI# * 200
	R0# = R0# / PI# * 200
	Z#(J) = Z#(J) / PI# * 200
	NEXT J
     
	PRINT #2,
	PRINT #2,
	PRINT #2, "                 Irradiacao em: "; B$
	PRINT #2,
	PRINT #2, TAB(30); "M="; TAB(33);
	PRINT #2, USING "#######.###"; ME#; TAB(55);
	PRINT #2, "R0="; TAB(59);
	PRINT #2, USING "###.####"; R0#
	PRINT #2, TAB(30); "P="; TAB(33);
	PRINT #2, USING "#######.###"; PE#; TAB(55);
	PRINT #2, "Ai="; TAB(59);
	PRINT #2, USING "###.###"; HI#
	PRINT #2, TAB(30); "N="; TAB(33);
	PRINT #2, USING "#######.###"; CE#


	FOR J = 1 TO M
	PRINT #2,
	PRINT #2, TAB(5); "**"; TAB(8); D$(J)
	PRINT #2, TAB(15); "Az="; TAB(19);
	PRINT #2, USING "###.####"; AZ#(J); TAB(29);
	PRINT #2, "Z="; TAB(32);
	PRINT #2, USING "###.####"; Z#(J); TAB(42);
	PRINT #2, "Di="; TAB(46);
	PRINT #2, USING "####.###"; DI#(J); TAB(56);
	PRINT #2, "Av="; TAB(60);
	PRINT #2, USING "#.###"; AV#(J)
	PRINT #2,
	PRINT #2, TAB(30); "M="; TAB(33);
	PRINT #2, USING "#######.###"; MP#(J)
	PRINT #2, TAB(30); "P="; TAB(33);
	PRINT #2, USING "#######.###"; PP#(J)
	PRINT #2, TAB(30); "N="; TAB(33);
	PRINT #2, USING "#######.###"; CP#(J)
	
	PRINT #3, D$(J); USING "#########.###"; MP#(J); PP#(J); CP#(J)
       
	NEXT J
	NEXT I

	INPUT #1, V$
	INPUT #1, W$
	REM *********************IDENTIFICACAO DOS INTERVENIENTES E DATA ****
    
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "Observado por:"; V$
	PRINT #2,
	PRINT #2, TAB(10); "Calculado por:"; W$
	PRINT #2,
	PRINT #2, TAB(45); "FCUL:"; EE$

	CLOSE
     
	GOTO 1000

60      REM CLASSICO
       
	CLS
	COLOR 1, 3, 1
	CLS

	PRINT
	PRINT "                                CLASSICO                   "
	PRINT
      
	    REM tipo de limbo: Z=angulos verticais a partir do zenite
		REM                V=angulos verticias a partir do horizonte
		REM                N=angulos verticias a partir do nadir
		REM posicao do limbo: D=posicao directa
		REM                   I=posicao inversa
		REM tipo de medicao: D=distanciometro
		REM                  T=taqueometro

	REM *********ESTRUTURA DO FICHEIRO DE DADOS*************************
	REM Tipo de limbo,Posicao do limbo,Tipo de medicao
	REM Nome do Trabalho,N§. Estacoes com irradiadas
	REM Nome da Estacao,Me,Pe,Ce,R0,Hi,N§ de irradiadas
	REM Nome do Ponto,Az,Z,Di,Hv  *OU* Nome do Ponto,Az,Z,Fio Maior,Fio Menor
	REM ...............................
	REM ...............................

	REM NOME DO TOPOGRAFO
	REM NOME DO CALCULADOR

	REM ****************************************************************
	INPUT "     FICHEIRO DE ENTRADA"; x$
	INPUT "     FICHEIRO DE SAIDA  "; Y$

	OPEN x$ FOR INPUT AS #1
	OPEN Y$ FOR OUTPUT AS #2
	PI# = 3.1415926535#
	DIM FG#(700), FP#(700), D#(700)
	INPUT #1, L$, P$, M$
	INPUT #1, A$, n
	PRINT #2, "                         Topografia "
	PRINT #2,
	PRINT #2, "            Levantamento de:", A$
	PRINT #2,
	PRINT #2,
    
	FOR I = 1 TO n
	INPUT #1, B$, ME#, PE#, CE#, R0#, HI#, M
   


	PRINT #2,
	PRINT #2, "                 Irradiacao em: "; B$
	PRINT #2,
	PRINT #2, TAB(30); "M="; TAB(33);
	PRINT #2, USING "#######.###"; ME#; TAB(55);
	PRINT #2, "R0="; TAB(59);
	PRINT #2, USING "###.####"; R0#
	PRINT #2, TAB(30); "P="; TAB(33);
	PRINT #2, USING "#######.###"; PE#; TAB(55);
	PRINT #2, "Ai="; TAB(59);
	PRINT #2, USING "###.###"; HI#
	PRINT #2, TAB(30); "N="; TAB(33);
	PRINT #2, USING "#######.###"; CE#
      
	PRINT #2,
	PRINT #2, TAB(7); "PONTO"; TAB(22);
	PRINT #2, "M"; TAB(36);
	PRINT #2, "P"; TAB(46);
	PRINT #2, "N"

	R0# = R0# * PI# / 200

	IF M$ = "D" OR M$ = "d" GOTO 61
	FOR J = 1 TO M
	INPUT #1, D$(J), AZ#(J), Z#(J), FG#(J), FP#(J)

	IF L$ = "V" OR L$ = "v" THEN Z#(J) = 100 - Z#(J)
	IF Z#(J) < 0 THEN Z#(J) = Z#(J) + 400
	IF L$ = "N" OR L$ = "n" THEN Z#(J) = 200 - Z#(J)
	IF P$ = "I" OR P$ = "i" THEN Z#(J) = 400 - Z#(J)
	Z#(J) = PI# * Z#(J) / 200
	D#(J) = (FG#(J) - FP#(J)) * 100 * SIN(Z#(J)) * SIN(Z#(J))
	c#(J) = (FG#(J) - FP#(J)) * 100 * SIN(Z#(J)) * COS(Z#(J)) + CE# + HI# - (FG + FP) / 2
       
	AZ#(J) = AZ#(J) * PI# / 200

    
	M#(J) = ME# + D#(J) * SIN(AZ#(J) + R0#)
	P#(J) = PE# + D#(J) * COS(AZ#(J) + R0#)
	PRINT #2, TAB(5); D$(J); TAB(15);
	PRINT #2, USING "#######.###"; M#(J); TAB(29);
	PRINT #2, USING "#######.###"; P#(J); TAB(42);
	PRINT #2, USING "####.###"; c#(J)
       
	NEXT J
	GOTO 62


61      CLS
	FOR H = 1 TO M
	INPUT #1, D$(H), AZ#(H), Z#(H), DI#(H), AV#(H)

	IF L$ = "V" OR L$ = "v" THEN Z#(H) = 100 - Z#(H)
	IF Z#(H) < 0 THEN Z#(H) = Z#(H) + 400
	IF L$ = "N" OR L$ = "n" THEN Z#(H) = 200 - Z#(H)
	IF P$ = "I" OR P$ = "i" THEN Z#(H) = 400 - Z#(H)
	Z#(H) = PI# * Z#(H) / 200
	D#(H) = DI#(H) * SIN(Z#(H))
	c#(H) = DI#(H) * COS(Z#(H)) + CE# + HI# - AV#(H)
      
	AZ#(H) = AZ#(H) * PI# / 200
   
	M#(H) = ME# + D#(H) * SIN(AZ#(H) + R0#)
	P#(H) = PE# + D#(H) * COS(AZ#(H) + R0#)
	PRINT #2, TAB(5); D$(H); TAB(15);
	PRINT #2, USING "#######.###"; M#(H); TAB(29);
	PRINT #2, USING "#######.###"; P#(H); TAB(42);
	PRINT #2, USING "####.###"; c#(H)
       
	NEXT H

       
62      NEXT I
	INPUT #1, V$
	INPUT #1, W$
	REM *********************IDENTIFICACAO DOS INTERVENIENTES E DATA ****
   
	PRINT #2,
	PRINT #2,
	PRINT #2, TAB(10); "Observado por:"; V$
	PRINT #2,
	PRINT #2, TAB(10); "Calculado por:"; W$
	PRINT #2,
	PRINT #2, TAB(45); "FCUL:"; EE$
       
	GOTO 1000

1000    CLS
	END

