BRÚJULA / Código de muestra


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].  CAL3 SA0 DPM + 1 ASUMIR NO AÑO bisiesto  SX3 400 SX4 X3  SX5 X6 AHORRE AÑO EN X5 IX6 X6 / X3 IX6 X6 * X4 IX6 X5-X6 AÑO MOD 400 (MYR)