home *** CD-ROM | disk | FTP | other *** search
- ************************************************************************
- *
- * APLICACION : DESARROLLO
- * PROGRAMA : JMPCALCP
- * OBJETIVO : CALCULADORA
- * AUTOR : JMP
- * FECHA : 3/8/94
- *
- ************************************************************************
- *
- DEFINE DATA LOCAL
- 01 I (N3)
- 01 M (F8)
- 01 X (N15,7)
- 01 Y (N15,7)
- 01 Z (N15,7)
- 01 A (N15,7)
- 01 B (N15,7)
- 01 C (N15,7)
- 01 D (N15,7)
- 01 W-OPCION (A2)
- 01 W-ENTERO (N22)
- 01 W-DECIMAL (N22)
- 01 S-DECIMAL (N3)
- 01 W-MARCA (N3)
- *
- END-DEFINE
- *
- ************************************************************************
- *
- ON ERROR
- WRITE '--------------- ERROR ----------------'
- WRITE 'CODIGO ................. : ' *ERROR-NR
- WRITE 'PROGRAMA ............... : ' *PROGRAM
- WRITE 'LINEA .................. : ' *ERROR-LINE
- WRITE 'FECHA Y HORA ........... : ' *DATE *TIME
- WRITE '======================================'
- END-ERROR
- *
- ************************************************************************
- *
- SET KEY PF3=ON
- MOVE 3 TO W-MARCA
- *
- REPEAT
- /*
- SET CONTROL 'WFL55C21B2/10'
- INPUT MARK W-MARCA AND SOUND ALARM USING MAP 'JMPCALCM'
- /*
- IF *PF-KEY = 'PF3'
- MOVE 'F' TO W-OPCION
- END-IF
- /*
- MOVE 3 TO W-MARCA
- DECIDE ON FIRST VALUE OF W-OPCION
- /*
- VALUE '+' COMPUTE Z = X + Y
- VALUE '-' COMPUTE Z = X - Y
- VALUE '*' COMPUTE Z = X * Y
- VALUE '/' PERFORM EXAMINAR-DIVISOR
- COMPUTE ROUNDED Z = X / Y
- /*
- VALUE 'A+' COMPUTE A = A + Z
- VALUE 'A-' COMPUTE A = A - Z
- VALUE 'AZ' COMPUTE A = Z
- VALUE 'XA' COMPUTE X = A
- VALUE 'AX' COMPUTE A = X
- VALUE 'YA' COMPUTE Y = A
- VALUE 'AY' COMPUTE A = Y
- VALUE 'A0' COMPUTE A = 0
- /*
- VALUE 'B+' COMPUTE B = B + Z
- VALUE 'B-' COMPUTE B = B - Z
- VALUE 'BZ' COMPUTE B = Z
- VALUE 'XB' COMPUTE X = B
- VALUE 'BX' COMPUTE B = X
- VALUE 'YB' COMPUTE Y = B
- VALUE 'BY' COMPUTE B = Y
- VALUE 'B0' COMPUTE B = 0
- /*
- VALUE 'C+' COMPUTE C = C + Z
- VALUE 'C-' COMPUTE C = C - Z
- VALUE 'CZ' COMPUTE C = Z
- VALUE 'XC' COMPUTE X = C
- VALUE 'CX' COMPUTE C = X
- VALUE 'YC' COMPUTE Y = C
- VALUE 'CY' COMPUTE C = Y
- VALUE 'C0' COMPUTE C = 0
- /*
- VALUE 'D+' COMPUTE D = D + Z
- VALUE 'D-' COMPUTE D = D - Z
- VALUE 'DZ' COMPUTE D = Z
- VALUE 'XD' COMPUTE X = D
- VALUE 'DX' COMPUTE D = X
- VALUE 'YD' COMPUTE Y = D
- VALUE 'DY' COMPUTE D = Y
- VALUE 'D0' COMPUTE D = 0
- /*
- VALUE 'X' COMPUTE X = Z
- VALUE 'Z+' COMPUTE Z = Z + X
- MOVE 1 TO W-MARCA
- VALUE 'Y' COMPUTE Y = Z
- VALUE 'S' COMPUTE ROUNDED Z = SQRT(X)
- VALUE '1' PERFORM EXAMINAR-DIVISOR
- COMPUTE ROUNDED Z = 1 / Z
- /*
- VALUE 'P' COMPUTE ROUNDED M = Y * LOG(X)
- COMPUTE ROUNDED Z = EXP(M)
- /*
- VALUE 'R' PERFORM EXAMINAR-DIVISOR
- COMPUTE ROUNDED M = 1 / Y
- COMPUTE ROUNDED M = M * LOG(X)
- COMPUTE ROUNDED Z = EXP(M)
- /*
- VALUE 'F' SET CONTROL 'WB'
- FETCH 'MENU'
- VALUE 'C' FETCH 'JMPCALCP'
- /*
- NONE VALUE
- REINPUT '==> OPCION NO VALIDA.'
- MARK *W-OPCION AND SOUND ALARM
- END-DECIDE
- END-REPEAT
- *
- ************************************************************************
- DEFINE SUBROUTINE EXAMINAR-DIVISOR
- *
- IF Y = 0
- REINPUT '==> EL DIVISOR NO PUEDE SER 0'
- END-IF
- END-SUBROUTINE
- *
- ************************************************************************
- *
- END