no se mucho de Assembler pero necesito realizar un WTO multiline y no acaba de funcionar. He mirado manuales por internet y no consigo que me funcione como yo quiero. La idea es que he de realizar una rutina que recibiendo un texto por parametro realice un WTO(multiline) a consola.
Todos los ejemplos que he visto en internet con WTO multiline lo hcen con un texto conocido, es decir, realizan el WTO del texto sabiendo que serán n lineas conocidas. A mi me gustaría que el WTO fuese dinámico, es decir, sin conocer a priori las lineas que va a ocupar. Bueno os adjunto el programa de test a ver si me podeis hechar una mano.
Bueno para realizar el test y simular que el texto sera variable me he declarado el texto como constantes que voy moviendo a unas variables para realizar el WTO, cuando tenga solucionado esl problema del WTO ya me preocupare del paso de parametros y del loop para hacer el wto multiline de todas las lineas. Por ahora lo único que quiero es soluciona el WTO multiline.
Código: Seleccionar todo
TITLE 'WTO MULTILINE'
***********************************************************************
*
*
***********************************************************************
EJECT
*
STSRD7 CEEENTRY PPA=STSPPA,AUTO=WORKSIZE,MAIN=NO, *
BASE=8,PLIST=MVS,EXECOPS=NO
SPACE 2
USING WORKAREA,13
*
*----- 1-WTO SIMPLE Y DIRECTO
*
WTO 'STSRD7I001-TEST WTO SIMPLE POR CONSTANTE.'
*
*----- 2-WTO UTLIZANDO SVC 35 CON TEXTO EN VARIABLE
*
MVC TEXTWTO(L'MSGTXT2),MSGTXT2
LA 3,L'LONGWTO+L'FLAGWTO+L'MSGTXT2
STH 3,LONGWTO
LA 1,WTOAREA
SVC 35
*
*----- 3-WTO UTLIZANDO MACRO WTO CON TEXTO EN VARIABLE
*
MVC TEXTWTO(L'MSGTXT3),MSGTXT3 *Move Texto 1
LA 3,L'LONGWTO+L'FLAGWTO+L'MSGTXT3 *Long var buffer
STH 3,LONGWTO *Move long buf. to var
WTO MF=(E,WTOAREA) *Wto
*
*----- 4-WTO UTLIZANDO MACRO WTO CON VARIABLE Y MULTILINEA
*
MVC TXTTEXT(L'MSGTXT4),MSGTXT4 *Move Texto 1
LA 3,L'MSGTXT4 *Long Texto 1
STH 3,TXTLONG *Move long TXT
SR 0,0 *Limpia r0
WTO TEXT=(TXTAREA,D)
*
ST 1,MSGID *Save ID MSG
MVC TXTTEXT(L'MSGTXT5),MSGTXT5 *Move Texto 2
LA 3,L'MSGTXT5 *Long Texto 2
STH 3,TXTLONG *Move long TXT
WTO TEXT=(TXTAREA,ED),CONNECT=MSGID
* WTO (' ',E),CONNECT=MSGID *Fin MSG
*
TERM CEETERM RC=0
EJECT
**********************************************************************
*
* CONSTANTS DE PROGRAMA.
*
**********************************************************************
SPACE 2
DS 0D
MSGTXT2 DC C'STSRD7I002-WTO VIA BUFFER AMB CRIDA A SVC.DIRECTO'
MSGTXT3 DC C'STSRD7I003-WTO VIA MACRO WTO DE LINEA SIMPLE. SIN PARAM._*
________________________________________________________*
_____________________________________________________'
MSGTXT4 DC C'STSRD7I004-WTO MULTILINE. LINEA NUMERO 1.'
MSGTXT5 DC C'CONTINUACIO DEL MSG ID ANTERIOR NUMERO 2.'
MSGTXT6 DC C'CONTINUACIO DEL MSG ID ANTERIOR NUMERO 3.'
SPACE 2
STSTOKEN DC F'0000'
DEST DC F'2'
STSPPA CEEPPA EPNAME=STSRD7,VER=01,REL=01,MOD=00
LTORG
EJECT
**********************************************************************
*
* AREA DE TREBALL I SAVE AREA (DSA).
*
**********************************************************************
SPACE 2
*
TXTAREA EQU *
TXTLONG DS H
TXTTEXT DS CL72
*
MSGID DS F
*
WTOAREA EQU *
LONGWTO DS H
FLAGWTO DC H'0'
TEXTWTO DS CL900
*
WORKAREA DSECT
*
ORG *+CEEDSASZ
DC H'0'
DS 0D
WORKSIZE EQU *-WORKAREA
CEEDSA
CEECAA
CEEEDB
EJECT
END STSRD7
Pues la ejecución de este programa me realiza bien los WTO's de los 3 primeros ejemplos pero el 4 que es el que me interesa no funciona, en este caso me abenda. He probado más de una combinación y no consigo que funcione. Si no le pongo el MSGID no abenda pero no me escribe cada linea por separado y no con un único identificador.
En los manuales los WTO que realizan, como he dicho antes, lo hacen en una misma linea de código porque ya saben cuantas lineas quieren escribir:
WTO TEXT=((REMIND1,D),(REMIND2,D),(REMIND3,DE))
Pero a mi no me sirve.
¿Alguien tiene un ejemplo propio que se parezca a lo que necesito?
Mucha Gracias de Antemano.