![]() |
PowerRustCOBOL
3 Archivos Adjunto(s)
Lo que comenzó como una simple experimentación se está transformando en un pequeño proyecto capaz de entregar cierto valor. Todavía está muy crudo, pero es bastante prometedor.
Utilicé Claude Code para imaginar una versión modernizada de PowerCobol 3.0. En lugar de intentar reutilizar código existente, imaginé cómo sería un PowerCobol que mantuviera en gran parte la filosofía del Fujitsu PowerCobol 3.0: sin ActiveX, sin dependencias del Registro de Windows, y con soporte para actividades modernas (llamar APIs REST, poseer un Agente de Inteligencia Artificial integrado capaz de modificar los propios objetos del formulario), todo ello con una interfaz moderna al estilo Apple Liquid Glass de los nuevos iPhones. No utilicé el modelo de programación de Fujitsu (Nested programs), aunque quizás lo incorpore más adelante. Opté por algo más simple: un formulario = un programa. El enlace de eventos de un botón, timer o cualquier objeto sería un párrafo (generado por la IDE y editable por el desarrollador), de modo que todos los objetos convivieran dentro del mismo código. Agregué una gran cantidad de controles (date picker, grid, imágenes, vídeos, elementos geométricos, botones, labels, textbox multilínea, listboxes, etc.). No está listo todavía para uso en producción, pero quise compartirlo desde ya para recibir opiniones sobre qué funcionalidades sería interesante añadir. Gasté pocas horas describiendo lo que quería. Toda la programación fue realizada por Claude Code utilizando Rust, un lenguaje moderno y extremadamente rápido que está siendo considerado para reemplazar el kernel de Linux. Rust interpreta y ejecuta el código COBOL sin problemas. Creo que lo más interesante es ver cómo los servicios de codificación con Inteligencia Artificial Generativa están cambiando completamente la forma de trabajar. Además del timer tradicional de PowerCOBOL, también añadí un objeto para realizar llamadas a APIs (REST) y soporte completo a Generative AI Agents. Un agente es capaz de simular cualquier comportamiento que deseemos. Por ejemplo: Defina una tool capaz de calcular la diferencia entre dos fechas definidas como PIC 9(8) (DDMMYYYY). Cuando solicite SET days TO agent::run('Calcule la diferencia entre "data-item1" y "data-item2"'), el agente retorna el resultado en formato PIC 9(8). En realidad, cualquier cosa que podamos imaginar es posible solicitarle al agente. Por ejemplo: analice los ítems de la tabla valores-por-mes y haga una predicción del valor del próximo mes, colocando el resultado en el ítem de datos valor-del-proximo-mes. ¡Listo! Esto es todo lo que se necesita para crear subrutinas dinámicamente. Imagina todo lo que se puede hacer con esta capacidad... Aún no tengo un plazo definido para liberar una versión testable. Claude es caro y mi plan actual se agota muy rápidamente, necesitando algunas horas para poder continuar. No pretendo cobrar por el uso de la solución, pero sería muy interesante si pudieran contribuir para contratar una suscripción más robusta que acelere el desarrollo. No doy garantías, ni pretendo dar soporte, ni garantizo que la solución funcione perfectamente. Simplemente es un hobby mío y no quiero tener que lidiar con el dolor de cabeza de dar soporte a un producto que, por más interesante que sea, no tiene razón de existir. El mercado de IDEs nunca volverá a ser el mismo, con cada vez menos desarrollo siendo realizado de forma artesanal como hacíamos hasta hace pocos años, precisamente por causa de la tecnología que está posibilitando crear este proyecto (Inteligencia Artificial Generativa). |
@Eslopes, estás haciendo realidad mi sueño de hace años !
¡¡¡MUY interesante la iniciativa!!! ¿Qué compilador has escogido para código Cobol? En cuanto a Claude IA, cuáles son las tarifas ? El foro tiene una cuenta PayPal, podríamos organizar donaciones, lo que podamos (la verdad es que no sé cuáles son las tarifas), y luego enviártelo. |
Re: PowerRustCOBOL
Hola Kuk,
Gracias por tu mensaje. Claude fue utilizado para crear en RUST el cobol-parser, que es principalmente compatible con COBOL-85 (ANSI X3.23-1985). Maneja el conjunto completo de características de COBOL-85: terminadores de ámbito (END-IF, END-EVALUATE, END-PERFORM, END-CALL), EVALUATE/WHEN/WHEN OTHER, PERFORM UNTIL/VARYING, INSPECT/TALLYING/REPLACING, las cuatro DIVISIONes y sus SECTIONs, además de los verbos estándar de E/S de archivos (READ, WRITE, REWRITE, DELETE, START). El parser no implementa las extensiones orientadas a objetos de COBOL 2002, los intrínsecos XML/JSON de COBOL 2014, ni CONTINUE FROM. Además del estándar, añade tres extensiones específicas de COBOL 2002: INVOKE para llamadas a métodos de controles de formulario, bloques EXEC RUST … END-EXEC para Rust inline, y la sintaxis :: para acceso a propiedades. El costo de Claude Code ronda los US$ 200/mes. Para el primer mes, este valor es suficiente para cubrir el 80% del trabajo. Posteriormente, solo se necesitarán alrededor de US$ 100 por mes durante un período que puede oscilar entre 3 y 6 meses. Mi suscripción actual solo permite algunas pocas interacciones cada 4 o 5 horas. Me gustaría limitar las contribuciones a US$ 10,00 por persona. No considero justo que una sola persona contribuya y que todos tengan acceso gratuito. Mi plan es, inicialmente, liberar el código solo para quienes contribuyan en esta fase. Cuando alcancemos la versión 1.0, podremos liberarlo a la comunidad sin costo. El proyecto puede ser una forma de liberar a la comunidad de las garras de los productores de código. Pretendo incluir varios recursos que hoy no están disponibles en ningún compilador COBOL, por ejemplo, la posibilidad de que el mismo código funcione en MacOS, Windows y Linux, con la misma interfaz. No existen dependencias externas ni legado que estemos cargando (ActiveX, Registry, frameworks, etc.). El compilador ya acepta EXEC RUST. En el futuro implementaré EXEC HTML, EXEC Javascript, EXEC Python y otros, soporte XML/JSON, además de algunos aceleradores para el uso de bases de datos, creación automática de formularios, etc. Cita:
|
@Eslopes, voy a notificar a todos los usuarios, a ver si la gente se anima. Además, limitando la aportación a 10$ (o €), creo que es una cantidad que muchos se pueden permitir. Yo voy a participar seguro.
He oído algo sobre Rust, pero nunca lo he tocado. Entonces el binario que se produce, proviene del código Rust que es producto de código Cobol parseado (traducido), es correcto? |
El COBOL IDE y el COBOL Form Designer son binarios. El código COBOL resultante actualmente es interpretado por un runtime de COBOL creado por Claude.
Todavía estoy probando lo básico (dibujar un formulario, responder a eventos, etc.). Voy a verificar el rendimiento y ver qué es necesario para obtener el desempeño máximo. Probablemente tendremos una generación de bytecode en tiempo de compilación y generación de código nativo en tiempo de interpretación, obteniendo la máxima portabilidad del código compilado y el máximo rendimiento del código en ejecución. ¡Saludos! Cita:
|
Re: PowerRustCobol - version 0.0.1 (beta)
COBOL IDE — Registro de Cambios (Changelog)
Reglas de Versionado
[hr] [0.0.1] — 2026-05-29 (versión inicial etiquetada) Fundación (pre-etiqueta, post-parser) Todo el trabajo que aparece a continuación se completó antes de aplicar la etiqueta 0.0.1. Se cataloga aquí como el conjunto base de características. Runtime y Toolchain
IDE Shell (cobol-ide)
Diseñador de Formularios
Recursos en Implementación
Otros cambios Se renombraron los identificadores COBOLT-* a COBOL-* en todo el código. Tengo que reconocer que los japoneses fueron geniales, hace 35 años, cuando crearon el PowerCOBOL. Empecé con un concepto simple: un formulario, un programa. Pero pronto comencé a encontrar dificultades en la organización del código, además de conflictos con nombres de variables y un aumento exponencial de la complejidad del código final. Decidí dar un paso atrás y utilizar programas anidados, exactamente como lo hacía el añorado PowerCOBOL. El código quedó más limpio y el modelo está generando código de manera mucho más fácil. El resultado final se acerca conceptualmente al Power, aunque mantiene una buena distinción, además de ser infinitamente superior en términos de recursos. Aun así, me quito el sombrero ante los diseñadores de Japón. ¡Hicieron un trabajo excelente y primoroso! COBOL IDE — Registro de Cambios (Changelog) [1.0.0] — 2026-05-29 Major — Arquitectura de programas anidados (modelo Opción C de PowerCOBOL) Esta es la primera actualización importante de versión. Todo el modelo de generación de código y almacenamiento de formularios ha sido rediseñado para coincidir con el enfoque de Fujitsu PowerCOBOL 3.0: cada manejador de eventos se convierte en un programa anidado COBOL-85; el archivo .cfrm es la única fuente de verdad; el archivo .cbl generado es un artefacto de compilación que el usuario nunca edita. Formato de archivo .cfrm (v1.0 — carga compatible con versiones anteriores) Se añadieron tres nuevas secciones XML al archivo .cfrm: [*] <working-storage><![CDATA[...]]></working-storage> — declaraciones de datos COBOL en bruto emitidas literalmente en la WORKING-STORAGE del programa exterior; soporta cláusulas GLOBAL y EXTERNAL para compartir datos a nivel de formulario y entre formularios. [*] <form-events> — manejadores de ciclo de vida OnLoad y OnClose almacenados como elementos hijos <Event> con cuerpos CDATA. [*] <deleted-controls> — papelera de reciclaje: el código de eventos de controles eliminados se conserva aquí (nunca se emite al .cbl) para poder restaurarlo posteriormente. Los elementos <Event> ahora utilizan formato de inicio/fin con cuerpo CDATA para las sentencias COBOL del usuario. Las etiquetas antiguas de autocierre <Event .../> todavía se cargan correctamente (el código estará vacío). Cambios en el modelo (cobol-forms) [*] EventBinding gana el campo code: String — sentencias COBOL en bruto para este manejador. [*] EventBinding::for_control(ctrl_id, event) — deriva automáticamente el nombre del párrafo como "CTRL-ID--EVENT-NAME" (separador de doble guion). [*] EventBinding::has_code(), code_line_count() — funciones auxiliares para la interfaz de usuario. [*] derive_paragraph_name(ctrl_id, event) -> String — función de utilidad pública. [*] Form gana los campos: user_ws_source: String, form_events: Vec<EventBinding>, deleted_code: Vec<DeletedControlCode>. [*] Form::new() pre-popula form_events con stubs vacíos de OnLoad / OnClose. [*] Form::recycle_control(id, timestamp) — mueve el código de eventos a la papelera de reciclaje antes de eliminar; restore_from_recycle(timestamp, target_id) lo recupera. [*] Form::control_has_code(id) — devuelve [(event, line_count)] para el diálogo de la interfaz. [*] Control::ensure_event(event) — vinculación idempotente de evento con nombre derivado automáticamente. [*] Estructura DeletedControlCode — control_id, deleted_at (marca de tiempo ISO), events. Panel de Propiedades (cobol-ide) [*] La sección "Event Bindings" fue reemplazada por una sección de solo lectura "Events" que muestra puntos de estado ●/○ y conteo de líneas por evento soportado; el usuario es dirigido a la Vista de Código para editar. [*] Se eliminó la sección "COBOL Paragraphs" de los controles de gráficos (fue reemplazada por la Vista de Código). [*] Se eliminaron los campos de preparación new_ev_name / new_ev_para del PropertiesPanel. Generación de Código (cobol-codegen) — Fase 3 (pendiente) La reescritura de PROCEDURE DIVISION para emitir programas anidados es el siguiente paso. Runtime (cobol-runtime) — Fase 4 (pendiente) La herencia de ámbito GLOBAL y el envío de programas anidados es el siguiente paso. Panel Vista de Código del IDE — Fase 5 (pendiente) Navegador de eventos + editor COBOL por evento es el siguiente paso. [hr] [0.2.2] — 2026-05-29 Corrección — Chart SET-TABLE genera COBOL inválido cuando DataSource/DataCount no están configurados La función write_chart_stubs() utilizaba .map().unwrap_or_else(fallback) para establecer valores predeterminados vacíos para las propiedades DataSource / DataCount, pero si la propiedad existía como cadena vacía Some(""), unwrap_or_else nunca se ejecutaba. El resultado era código COBOL generado inválido: ```cobol MOVE TO WS-LIN-13-SELECTED-IDX *> missing source CALL "COBOL-CHART-SET-TABLE" USING "LIN-13" *> missing args |
Progresso...
1 Archivos Adjunto(s)
PowerRustCOBOL — Registro de cambios
[2.1.0] — 2026-05-30 Fase 7 — Depurador El IDE ahora cuenta con un depurador interactivo completo para programas COBOL. Nuevo: tipos de canal DebugCmd y DebugEvent (cobol-runtime/src/debugger.rs) Dos enums tipados cruzan el límite de hilo entre el IDE y el intérprete: DebugCmd — Continue, StepOver, Pause — enviado desde el IDE al intérprete para controlar la ejecución. DebugEvent — Paused { line, col, paragraph, vars }, Resumed, Finished — enviado desde el intérprete de vuelta al IDE. Breakpoints (Arc<Mutex<HashSet<u32>>>) — conjunto compartido y seguro para hilos con los números de línea de breakpoints activos, escrito por el IDE y leído por el intérprete. Actualizado: Interpreter — hook de depuración por sentencia Interpreter::new_with_debug_channels() es un nuevo constructor que conecta los canales de depuración al intérprete. Antes de cada sentencia, exec_stmts() ahora llama a debug_check(), que: Extrae la línea fuente de la sentencia mediante Stmt::span(). Comprueba si la línea coincide con un breakpoint o si debug_stepping es verdadero, en modo StepOver. Si se cumple una condición de pausa, envía DebugEvent::Paused con una captura completa de variables (CobolEnvironment::iter() → lista VarSnapshot) y bloquea en debug_cmd_rx.recv() hasta que el IDE envíe Continue o StepOver. Un comando asincrónico Pause se gestiona mediante una consulta no bloqueante try_recv() en cada sentencia cuando aún no está pausado. DebugEvent::Finished se envía cuando run() termina normalmente o mediante STOP RUN. current_paragraph se actualiza al entrar en cada párrafo, de modo que el evento Paused siempre lleva el nombre correcto del párrafo. Nuevo: DebugRunner (cobol-ide/src/runner.rs) DebugRunner es un componente hermano de Runner que gestiona una sesión de depuración: start(file_name, source) — ejecuta todo el flujo lex → parse → semantic y luego lanza Interpreter::new_with_debug_channels() en un hilo en segundo plano. send_cmd(DebugCmd) — reenvía un comando de paso, continuación o pausa al hilo. drain_events() -> Vec<DebugEvent> — recopila los eventos de depuración pendientes en cada frame. drain_run() -> Vec<RunMsg> — recopila los mensajes de ejecución pendientes, incluidos diagnósticos, salida y finalización. pub breakpoints: Breakpoints — el IDE escribe aquí las líneas de breakpoint antes de llamar a start(); el puntero compartido se pasa directamente al intérprete. stop() — descarta cmd_tx, lo que desbloquea cualquier recv() en el intérprete y causa Err(_) → StopRun; luego une el hilo. Nuevo: panel lateral del depurador (cobol-ide/src/panels/debugger.rs) DebuggerPanel se renderiza en un panel lateral derecho redimensionable mientras una sesión de depuración está activa: Barra de pasos — ▶ Continue (F5), ⤵ Step Over (F10), ⏸ Pause. Los botones se deshabilitan cuando el intérprete está ejecutándose, es decir, no pausado. Indicador de ubicación — nombre del párrafo y línea fuente, con indicador de estado codificado por color: ● Running / ● Paused. Tabla de observación de variables — muestra todos los elementos de datos de CobolEnvironment en una cuadrícula rayada de dos columnas, nombre / valor, con búsqueda mediante un cuadro de filtro. Nuevo: gutter de breakpoints en editor.rs La columna de números de línea del editor de código ahora es un gutter de breakpoints totalmente interactivo: Al hacer clic en cualquier número de línea se alterna un círculo rojo de breakpoint (●) en esa línea. Cuando el depurador pausa, una flecha amarilla (→) y una fila resaltada marcan la línea de ejecución actual. EditorPanel::breakpoints: HashMap<PathBuf, HashSet<u32>> almacena breakpoints activos por archivo. breakpoints_for(path) devuelve el conjunto de líneas para un archivo dado, usado por do_debug() para inicializar los Breakpoints compartidos antes de iniciar la sesión. Nuevo: botón 🐛 Debug en la barra de herramientas y atajos de teclado Una barra secundaria aparece debajo de la barra principal: 🐛 Debug — inicia una sesión de depuración para el archivo activo; queda deshabilitado mientras una ejecución normal está activa. Sincroniza automáticamente los breakpoints del gutter del editor con DebugRunner::breakpoints antes de comenzar. ■ Stop Debug — descarta el canal de comandos, hace una detención controlada, reinicia el panel del depurador y limpia el resaltado de la línea de depuración en el editor. F5 — Continue mientras una sesión está activa. F10 — Step Over mientras una sesión está activa. Adiciones de i18n en los 5 idiomas Nuevas claves: panel_debugger, dbg_continue, dbg_step_over, dbg_pause, dbg_stop, dbg_variables, dbg_filter_hint, dbg_debug. |
Aquí está todo lo que se ha construido hasta ahora:
RustCOBOL Lexer (cobolt-lexer) — Tokenizador para COBOL-85 (ANSI X3.23-1985, mismo que Fujitsu COBOL 3.0). Maneja código fuente tanto de formato fijo como de formato libre, todas las palabras clave estándar, además de extensiones de RustCOBOL (EXEC RUST, verbos de animación PLAY/STOP, INVOKE). RustCOBOL AST (cobolt-ast) — El Árbol de Sintaxis Abstracta. Todos los tipos de nodo derivan Serialize/Deserialize, de modo que el AST puede serializarse para el compilador binario. RustCOBOL Parser (cobolt-parser) — Parser de descenso recursivo que produce un AST Program completo a partir de flujos de tokens. Cubre DATA, PROCEDURE, TRY/CATCH, programas anidados y funciones COBOL-85. RustCOBOL Semantic Analyser (cobolt-semantic) — Valida declaraciones de datos, referencias a variables y existencia de párrafos, y produce diagnósticos con niveles de severidad. RustCOBOL Runtime (cobolt-runtime) — Intérprete tree-walking. Ejecuta el AST directamente. Incluye: Motor de base de datos SQLite (COBOL-OPEN-DB / COBOL-EXEC-SQL / etc.) Cliente HTTP REST (COBOL-HTTP-GET / COBOL-HTTP-POST / etc.) Con el cambio de nombre, el versionado se inicia en 1.0.0 Canales de formularios GUI (eventos ↔ hilo del intérprete) Canales del depurador (breakpoints, step-over, observación de variables) RustCOBOL Standard Library (cobolt-stdlib) — Stubs de biblioteca estándar. PowerRustCOBOL Forms Engine (cobolt-forms) — Modelo de datos de formularios: controles, animaciones y propiedades, con serialización/deserialización XML. El formato de archivo .cfrm. PowerRustCOBOL Code Generator (cobolt-codegen) — Generador de fuente RustCOBOL a partir de formularios. Emite working-storage, programas anidados para manejadores de eventos, stubs SQL, stubs REST y exportación CSV de DataGrid. RustCOBOL Compiler (cobolt-compiler) — Compilador binario embed+bundle. Analiza el proyecto, serializa el AST con bincode+flate2, genera un proyecto Rust autocontenido, llama a cargo build --release y emite un único ejecutable nativo en bin/. rcrun (cobolt-cli) — Runtime de línea de comandos: rcrun run <file.cbl> — ejecuta RustCOBOL desde la terminal rcrun check <file.cbl> — solo hace parsing + verificación semántica rcrun package — comprime el proyecto con launchers rcrun build — compila a un binario nativo PowerRustCOBOL (cobolt-ide) — El RAD principal (egui/eframe), que contiene: Code Editor — editor RustCOBOL con resaltado de sintaxis, gutter de breakpoints, búsqueda y autocompletado Form Designer — constructor visual de formularios drag-and-drop, multi-viewport, tema glass/liquid UI, sistema de animación, z-order, multiselección y herramientas de alineación Form Preview — vista previa interactiva en vivo con imágenes de fondo, animaciones, gráficos y todos los widgets Run Form — ejecuta el RustCOBOL generado en un hilo de intérprete en vivo con canales bidireccionales UI↔COBOL Debugger — breakpoints, step-over/into, panel de observación de variables y resaltado de línea en el editor Project System — proyectos cobolt.toml con fuentes, formularios y assets; File → Package y File → Build Binary Bug Tracker — Help → �� Report a Problem escribe en BUGS.md; escaneo diario programado reporta errores del compilador i18n — 5 idiomas: inglés, español, portugués, japonés y chinocobolt-lexer — Tokenizador para COBOL-85 (ANSI X3.23-1985, mismo que Fujitsu COBOL 3.0). Maneja código fuente tanto de formato fijo como de formato libre, todas las palabras clave estándar, además de extensiones de CobolRust (EXEC RUST, verbos de animación PLAY/STOP, INVOKE). cobolt-ast — El Árbol de Sintaxis Abstracta. Todos los tipos de nodo derivan Serialize/Deserialize, de modo que el AST puede serializarse para el compilador binario. cobolt-parser — Parser de descenso recursivo que produce un AST Program completo a partir de flujos de tokens. Cubre DATA, PROCEDURE, TRY/CATCH, programas anidados y funciones COBOL-85. cobolt-semantic — Analizador semántico. Valida declaraciones de datos, referencias a variables y existencia de párrafos, y produce diagnósticos con niveles de severidad. cobolt-runtime — Intérprete tree-walking. Ejecuta el AST directamente. Incluye: Motor de base de datos SQLite (COBOL-OPEN-DB / COBOL-EXEC-SQL / etc.) Cliente HTTP REST (COBOL-HTTP-GET / COBOL-HTTP-POST / etc.) Canales de formularios GUI (eventos ↔ hilo del intérprete) Canales del depurador (breakpoints, step-over, observación de variables) cobolt-stdlib — Stubs de biblioteca estándar. cobolt-forms — Modelo de datos de formularios: controles, animaciones y propiedades, con serialización/deserialización XML. El formato de archivo .cfrm. cobolt-codegen — Generador de fuente COBOL a partir de formularios. Emite working-storage, programas anidados para manejadores de eventos, stubs SQL, stubs REST y exportación CSV de DataGrid. cobolt-compiler — Compilador binario embed+bundle, Fase 11. Analiza el proyecto, serializa el AST con bincode+flate2, genera un proyecto Rust autocontenido, llama a cargo build --release y emite un único ejecutable nativo en bin/. cobolt-cli — Herramienta de línea de comandos: cobolt run <file.cbl> — ejecuta COBOL desde la terminal cobolt check <file.cbl> — solo hace parsing + verificación semántica cobolt package — comprime el proyecto con launchers cobolt build — compila a un binario nativo cobolt-ide — La aplicación GUI principal (egui/eframe), que contiene: Code Editor — editor COBOL con resaltado de sintaxis, gutter de breakpoints, búsqueda y autocompletado Form Designer — constructor visual de formularios drag-and-drop, multi-viewport — cada formulario en su propia ventana del sistema operativo —, tema glass/liquid UI, sistema de animación, z-order, multiselección y herramientas de alineación Form Preview — vista previa interactiva en vivo del formulario diseñado, con imágenes de fondo, animaciones, gráficos y todos los controles Run Form — ejecuta el COBOL generado por el formulario en un hilo de intérprete en vivo con canales bidireccionales de eventos UI↔COBOL Debugger — breakpoints, step-over/into, panel de observación de variables y resaltado de la línea de depuración en el editor Project System — proyectos cobolt.toml que rastrean fuentes, formularios y assets; File → Package y File → Build Binary Bug Tracker — Help → �� Report a Problem escribe en BUGS.md; escaneo diario programado reporta errores del compilador i18n — 5 idiomas: inglés, español, portugués, japonés y chino |
quiero agradecer la iniciativa de Eslopes para los cobolores que quieren actualizarse.
Solo una duda, el manejador de datos cual seria? sql? isam? vbisam? |
1 Archivos Adjunto(s)
Repositorio creado en GitHub.
Por el momento, el repositorio es privado, con acceso permitido únicamente a los sponsors del proyecto. Cuando alcancemos una versión estable, lo liberaremos para los demás. Mantendremos a todos informados sobre el progreso aquí en este foro. Actualmente, PowerRustCOBOL soporta SQLite, pero añadiremos soporte para MySQL, PostgreSQL, Oracle y Microsoft SQL Server, además de ISAM, con formato seleccionable — RM/COBOL-85, Fujitsu COBOL-85 y otros en el futuro — de acuerdo con nuestro roadmap. Necesitamos comprar créditos para usar Claude Code. Sin ellos, el desarrollo se prolongará durante mucho tiempo, ya que la cuenta actual tiene limitaciones. |
| La franja horaria es GMT +2. Ahora son las 10:02. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.