*****************************************************************************
* *
* PROGRAMA: CALC.PRG *
* FINALIDADE: PROPICIAR UMA CALCULADORA IDENTICA A DO WINDOWS *
* OBSERVACAO: COMPILAR COM O TLINK. COM O PLINK86 DA ERRO. *
* *
*****************************************************************************
* SALVA TELA E CORES ANTERIORES E LIMPA TELA.
SAVE SCREEN TO TELAPREVIA
CORPREVIA = SETCOLOR()
SET CURSOR OFF
* DEFINICAO DE VARIAVEIS USADAS NO PROGRAMA.
ACAO = "NADA"
VISOR = "0"
LIMPAVISOR = "S"
MOSTRADOR = SPACE(1)
VALOR_01 = SPACE(01)
VALOR_02 = SPACE(02)
DO WHILE .T.
SET COLOR TO W+/B
@ 06,31 CLEAR TO 17,46
@ 06,31 TO 17,46 DOUBLE
@ 08,32 TO 16,45
@ 09,33 SAY " 1 2 3 + "
@ 11,33 SAY " 4 5 6 - "
@ 13,33 SAY " 7 8 9 * "
@ 15,33 SAY " . 0 = / "
@ 16,34 SAY "<ESC> SAIR"
IF ACAO = "NADA"
@ 08,36 SAY "ACAO ="
ELSEIF ACAO = "SOMA"
@ 08,36 SAY "ACAO +"
ELSEIF ACAO = "SUBTRACAO"
@ 08,36 SAY "ACAO -"
ELSEIF ACAO = "MULTIPLICACAO"
@ 08,36 SAY "ACAO *"
ELSEIF ACAO = "DIVISAO"
@ 08,36 SAY "ACAO /"
END IF
MOSTRADOR = VISOR
IF LEN(MOSTRADOR) < 12
DO WHILE LEN(MOSTRADOR) < 12
MOSTRADOR = SPACE(01) + MOSTRADOR
END DO
ELSE
MOSTRADOR = LEFT(MOSTRADOR,12)
END IF
SET COLOR TO W+/N
@ 07,33 SAY MOSTRADOR
INKEY(0)
IF LASTKEY() = 27
* TECLA <ESC>
EXIT
ELSEIF LASTKEY() = 13 .OR. LASTKEY() = 61
* TECLA <ENTER> OU IGUAL
IF ACAO = "NADA"
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SOMA"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SUBTRACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "MULTIPLICACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "DIVISAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
END IF
ACAO = "NADA"
LIMPAVISOR = "S"
LOOP
ELSEIF LASTKEY() = 43
* TECLA MAIS
IF ACAO = "NADA"
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SOMA"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SUBTRACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "MULTIPLICACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "DIVISAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
END IF
ACAO = "SOMA"
LIMPAVISOR = "S"
LOOP
ELSEIF LASTKEY() = 45
* TECLA MENOS
IF ACAO = "NADA"
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SOMA"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SUBTRACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "MULTIPLICACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "DIVISAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
END IF
ACAO = "SUBTRACAO"
LIMPAVISOR = "S"
LOOP
ELSEIF LASTKEY() = 42
* TELCA ASTERISCO
IF ACAO = "NADA"
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SOMA"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SUBTRACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "MULTIPLICACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "DIVISAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
END IF
ACAO = "MULTIPLICACAO"
LIMPAVISOR = "S"
LOOP
ELSEIF LASTKEY() = 47
* TECLA BARRA
IF ACAO = "NADA"
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SOMA"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) + VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "SUBTRACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) - VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "MULTIPLICACAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) * VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
ELSEIF ACAO = "DIVISAO"
VALOR_02 = VISOR
VISOR = ALLTRIM(STR(VAL(VALOR_01) / VAL(VALOR_02)))
VALOR_01 = VISOR
VALOR_02 = SPACE(01)
END IF
ACAO = "DIVISAO"
LIMPAVISOR = "S"
LOOP
ELSEIF LASTKEY() = 44 .OR. LASTKEY() = 46
* VIRGULA OU PONTO
IF AT(".",VISOR) = 0
VISOR = VISOR + "."
END IF
ELSEIF LASTKEY() = 48
* ZERO.
IF LIMPAVISOR = "S"
VISOR = "0"
ELSE
VISOR = VISOR + "0"
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 49
* UM.
IF LIMPAVISOR = "S"
VISOR = "1"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "1"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 50
* DOIS.
IF LIMPAVISOR = "S"
VISOR = "2"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "2"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 51
* TRES.
IF LIMPAVISOR = "S"
VISOR = "3"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "3"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 52
* QUATRO.
IF LIMPAVISOR = "S"
VISOR = "4"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "4"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 53
* CINCO.
IF LIMPAVISOR = "S"
VISOR = "5"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "5"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 54
* SEIS.
IF LIMPAVISOR = "S"
VISOR = "6"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "6"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 55
* SETE.
IF LIMPAVISOR = "S"
VISOR = "7"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "7"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 56
* OITO.
IF LIMPAVISOR = "S"
VISOR = "8"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "8"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ELSEIF LASTKEY() = 57
* NOVE.
IF LIMPAVISOR = "S"
VISOR = "9"
ELSE
IF LEN(ALLTRIM(VISOR)) < 12
VISOR = VISOR + "9"
END IF
END IF
LIMPAVISOR = "N"
LOOP
ENDIF
END DO
CLEAR SCREEN
SET COLOR TO CORPREVIA
RESTORE SCREEN FROM TELAPREVIA
SET CURSOR ON
RETURN
Espero que alguém goste!