Este código de muestra de COMPASS [1] muestra el calendario del año dado como parámetro en el terminal . Si no se proporciona ningún parámetro, se muestra el calendario del año actual.
CALENDARIO DE IDENTIFICACIÓN, FWA abdominales SST CALENDARIO DE ENTRADA, RFL = SYSCOM B1 TÍTULO DE VISUALIZACIÓN DEL CALENDARIO DE UN AÑO ESPECÍFICO. COMENTARIO MOSTRAR CALENDARIO DE UN AÑO ESPECÍFICO. ESPACIO CALENDARIO 4,10 *** CALENDARIO - MOSTRAR EL CALENDARIO DE UN AÑO ESPECÍFICO. * * ESTE PROGRAMA MUESTRA EN EL TERMINAL EL CALENDARIO DE* EL AÑO DADO COMO PARÁMETRO. SI NO SE DA UN PARÁMETRO* ENTONCES SE MUESTRA EL CALENDARIO DEL AÑO ACTUAL. ESPACIO 4,10 *** LLAMADA DE DECLARACIÓN DE CONTROL. * * CALENDARIO, AÑO. * * AÑO: DEBE ESTAR EN EL FORMATO: CYM. (CADA PIEZA ES OPCIONAL).* C: PUEDE SER G (PARA GREGORIAN) O J (PARA EL CALENDARIO JULIAN). * EL PREDETERMINADO ES G. * Y: UN NÚMERO DE 1 A 7 DÍGITOS QUE INDICA EL AÑO QUE DESEA* MOSTRAR EL CALENDARIO DE. SI NO ESTA EN LA GAMA* [0 .. 9999] (PARA GREGORIAN) O [0 .. 6999] (PARA* CALENDARIO JULIANO) SE PONE EN ESTA GAMA. EL PREDETERMINADO ES* EL AÑO ACTUAL.* M: PUEDE SER D (INDICANDO QUE Y ES DECIMAL) O B (INDICANDO * ES OCTAL). EL PREDETERMINADO ES D.* * CALENDARIO. MUESTRA EL CALENDARIO GREGORIANO ACTUAL.* CALEND, J. MUESTRA EL CALENDARIO JULIANO ACTUAL. ESPACIO 4,10 ORG 110B FWA BSS 0 * CONSTANTE. BUFL EQU 401B * FET. F BSS 0 ZZZZZG0 FILEB FBUF, BUFL, DTY = 2RTT * CONSTANTES ESTRUCTURADOS.* DURACIÓN DEL MES DPM VFD 5 / 31,5 / 29,5 / 31,5 / 30,5 / 31,5 / 30,5 / 31,5 / 31,5 / 30,5 / 31,5 / 30,5 / 31 + VFD 5 / 31,5 / 28,5 / 31,5 / 30,5 / 31,5 / 30,5 / 31,5 / 31,5 / 30,5 / 31,5 / 30,5 / 31 * NOMBRES DE DÍAS. DATOS DÍA L * DOM * DATOS L * MON * DATOS L * MAR * DATOS L * MIE * DATOS L * JUE * DATOS L * VIE * DATOS L * SAT * * TIPOS DE CALENDARIO. DATOS CT A * GREGORIAN * DATOS A * JULIAN * * SALIDA DE CADENAS. HDR1 DATOS 20H DATOS C * XXXXXXXXXX CALENDARIO PARA XXXX * DATOS 0 DATOS C * ENEROFEBREROMARC , FELIZ * HDR1L EQU * -HDR1 HDR2 DATOS 0 DATOS C * MAYO JULIO, AGOSTO* HDR2L EQU * -HDR2 HDR3 DATOS 0 DATOS C * SEPTIEMBRE OCTUBRE NOVIEMBRE B, ERDECEMBER * HDR3L EQU * -HDR3 LÍNEA BSS 0 DUP 77,1 DATOS 1R LINEL EQU * -LINE ESPACIO W4M 4,10 ** W4M - ESCRIBA UNA FILA DE 4 MESES DEL CALENDARIO.* * ENTRADA (X5) = 5 / DURACIÓN DEL PRIMER MES, 5 / DURACIÓN DEL SEGUNDO ...* (X0) = 48 / X, 12 / DÍA DE INICIO DEL PRIMER MES ENTRADA / SALIDA DE W4M SUBR MX4 -12 BX0 -X4 * X0 SB4 4 MESES POR FILA W4M1 LX5 5 MX7 -5 BX6 -X7 * X5 DURACIÓN DEL MES BX2 -X4 * X0 DÍA DE INICIO DEL MES IX3 X2 + X6 SUMA ELLOS SX2 7 TOMAR MOD 7 SX1 X3 IX1 X1 / X2 SX2 X1 LX2 3 * 8 IX2 X2-X1 * 7 IX3 X3-X2 DÍA DE INICIO DEL PRÓXIMO MES LX0 12 BX0 X0 + X3 SB4 B4-B1 NE B4, W4M1 REPETIR DURANTE 4 MESES CONTADOR DE LÍNEA SA0 B0 W4M2 LX0 60-12 * 4 LX5 60-5 * 4 SB4 B0 + CONTADOR DE MES SB3 4 MESES POR LÍNEA SB5 6 DÍAS AL MES POR LÍNEA W4M3 MX7 -12 BX3 -X7 * X0 DÍA DE INICIO DE ESTE MES LX0 12 MX7 -5 LX5 5 BX4 -X7 * X5 DURACIÓN DE ESTE MES SB6 B0 + CONTADOR DE DÍAS W4M4 SX7 1R SB2 B6 + B6 SB2 B2 + B6 3 * B6 SX1 B4 LX1 4 16 * B4 SB2 B2 + B4 SB2 B2 + B4 SX1 X1 + B2 SX1 X1 + LÍNEA + 6 X1 = LÍNEA + 18 * B4 + 3 * B6 + 6 SA7 X1 INICIALIZAR EN BLANCOS SA7 A7 + B1 SB7 B6 + B6 2 * B6 SB7 B7 + B7 4 * B6 SB7 B7 + B7 8 * B6 SB7 B7-B6 7 * B6 SB7 B7 + A0 SB2 X3 SB7 B7-B2 SB7 B7 + B1 NÚMERO DE DÍA = 7 * B6 + A0 - X3 + 1 LT B7, B1, W4M7 SI ENTRADA NULA (B7 .LE.0) SB2 X4 DURACIÓN DEL MES GT B7, B2, W4M7 SI ENTRADA NULA (B7 .GT. X4) SB2 10 LT B7, B2, W4M6 SI UN PERSONAJE SX7 1R0 W4M5 SB7 B7-B2 SX7 X7 + B1 GE B7, B2, W4M5 HASTA B7 <10 SA7 X1 + W4M6 SX7 B7 + 1R0 SA7 X1 + 1 W4M7 SB6 B6 + B1 NE B6, B5, W4M4 SIGUIENTE DÍA SB4 B4 + B1 NE B4, B3, W4M3 EL PRÓXIMO MES SA1 DAYT + A0 FIJAR NOMBRE DE DÍA MX2 -6 LX1 6 BX7 -X2 * X1 LÍNEA SA7 + 1 LX1 6 BX7 -X2 * X1 SA7 A7 + B1 LX1 6 BX7 -X2 * X1 SA7 A7 + B1 ESCRIBE F, LINE, LINEL SA0 A0 + 1 NÚMERO DE LÍNEA DE INCREMENTO SB7 A0-7 COMPRUEBE SI .EQ. 7 NE B7, W4M2 SIGUIENTE LÍNEA JP W4MX DEVOLUCIÓN ESPACIO CALENDARIO 4,10 * PROGRAMA PRINCIPAL. CALENDARIO SB1 1 SA2 ACTR NÚMERO DE PARÁMETROS SB2 X2 + LE B2, B1, CAL1 SI UNO O CERO PARAMETROS SX1 = C * DEMASIADOS PARÁMETROS. * EQ ERR ABORT CAL1 R = A1, ARGR MX4 42 BX2 X4 * X1 OBTENER PARÁMETRO LX2 6 BX3 -X4 * X2 OBTIENE EL PRIMER PERSONAJE BX5 X4 * X2 RESTO DE PARÁMETRO (AÑO) SB7 B1 BASE DECIMAL PARA CONVERSIÓN SB6 B1 INDICAR CALENDARIO JULIANO SB3 X3-1RJ EQ B3, CAL1.1 SI CALENDARIO JULIAN SB6 B0 + INDICAR CALENDARIO GREGORIANO SB3 X3-1RG EQ B3, CAL1.1 SI CALENDARIO GREGORIANO BX5 X4 * X1 SI NO SE ESPECIFICA UN TIPO DE CALENDARIO (GREGORIAN) CAL1.1 ZR X5, CAL2 SI NO HAY AÑO (DEF. AÑO ACTUAL) CONVERTIR RJ DXB A BINARIO SX1 = C * ERROR EN PARÁMETRO. * NZ X4, ERR SI ERROR DE CONVERSIÓN ZR X6, ERR IF 0 AÑO SX2 10000 EQ B6, CAL1.2 SI CALENDARIO GREGORIANO SX2 7000 SI CALENDARIO JULIANO CAL1.2 SX4 X2 BX7 X6 IX2 X7 / X2 IX2 X2 * X4 IX6 X6-X2 AÑO MOD (10000 O 7000) EQ CAL2.1 CONTINUE ABAJO CAL2 SA0 B6 PDATE CALEND OBTENER FECHA ACTUAL SB6 A0 MX4 -6 CALENDARIO SA1 AX1 30 BX3 -X4 * X1 SX6 X3 + 1970 AÑO ACTUAL CAL2.1 EQ B6, CAL3 SI CALENDARIO GREGORIANO * JULIAN. (X6) = AÑO EN [0 .. 6999]. SX3 28 SX4 X3 SX5 X6 AHORRE AÑO EN X5 IX6 X6 / X3 IX6 X6 * X4 IX6 X5-X6 AÑO MOD 28 MX4 -2 BX4 -X4 * X6 MOD 4 CX4 X4 CX4 X4 SA0 DPM + X4 SX4 X6 + 19 AX4 2/4 IX0 X6 + X4 KYR EQ CAL6 SIGUE TOMANDO MOD 7 * GREGORIANO. (X6) = AÑO EN [0 .. 9999].