optimization convertMps

Cas Limite: Integración Mainframe con Formato Fijo y Nombres Largos

Scénario de test & Cas d'usage

Contexto empresarial

Una planta manufacturera está migrando de un sistema mainframe antiguo a SAS Viya. Los datos de optimización de producción vienen en formato MPS estricto (Fixed Format) donde la posición de cada carácter importa. Además, el sistema antiguo permite nombres largos que deben ser gestionados o truncados para cumplir con los estándares actuales del modelo.
Preparación de datos

Creación de datos en formato FIJO (alineación estricta de columnas) con variables de nombres largos.

¡Copiado!
1DATA casuser.legacy_mps_prod; LENGTH line $80; INPUT line $char80.; DATALINES;
2NAME PRODUCTION_MIX
3ROWS
4 N PROFIT
5 L TIME_CONSTRAINT_MACHINE_A
6COLUMNS
7 PRODUCT_XYZ_LONG_NAME PROFIT 10.5
8 PRODUCT_XYZ_LONG_NAME TIME_CONSTRAINT_MACHINE_A 2.0
9RHS
10 RHS1 TIME_CONSTRAINT_MACHINE_A 800.0
11ENDATA
12; RUN;

Étapes de réalisation

1
Visualización de los datos crudos para confirmar la alineación fija.
¡Copiado!
1 
2PROC CAS;
3TABLE.fetch / TABLE='legacy_mps_prod' to=5;
4QUIT;
5 
2
Ejecución con formato FIXED y especificación de maxLength para manejar nombres largos.
¡Copiado!
1PROC CAS;
2 optimization.convertMps /
3 DATA={name='legacy_mps_prod'}
4 casOut={name='mps_legacy_ready', replace=true}
5 FORMAT='FIXED'
6 maxLength=15;
7QUIT;

Resultado esperado


La acción debe interpretar correctamente las columnas basadas en la posición fija (no espacios) debido a `format='FIXED'`. El parámetro `maxLength=15` debe permitir que los nombres largos como 'PRODUCT_XYZ_LONG_NAME' sean procesados correctamente (o truncados limpiamente si exceden el límite interno del solver, pero aceptados por la acción).