Code: Select all
MYPROG START 0
YEBEQU
*
SAVE (14,12),,WORKAREA
LR R12,R15
USING *,R12
STM R14,R12,12(13)
ST R13,SAVEAREA+4
LA R13,SAVEAREA
ST R13,8(,R13)
*
L R1,0(R1)
L R2,0(R1)
L R3,80(R1)
*
MVC OUTPUT(80),=X'40'
*
LA R4,0
LA R5,0
LA R6,0
LA R3,80
LA R7,INPUT
*
*
FINDWORD CLI 0(R7),C' '
BE TESTLEN
LA R5,1(R5)
*
FINDCHAR LA R7,1(R7)
BCT R3,FINDWORD
*
TESTLEN LTR R5,R5
BNZ WORDEND
*
ENDOFC LTR R3,R3
BZ PROCWORD
B FINDCHAR
* 00014200
WORDEND CR R5,R4 00014300
BNH FINDWORD
LR R4,R5
LR R6,R7
SR R6,R4
BCTR R6,0 00014400
* 00014900
XR R5,R5
* 00015200
NEXTWORD LA R8,OUTPUT 00015400
ST R4,BIGWORD
ST R6,STARTWORD
BCTR R4,0
EX R4,MOVELONGEST
OI 0(R8),X'40'
B FINDWORD
*
PROCWORD DS 0H
LA R7,INPUT
XR R5,R5
LA R3,80
*
LOOP1 CLI 0(R7),C' '
BE ENDCHAR
LA R7,1(R7)
LA R5,1(R5)
BCT R3,LOOP1
*
ENDCHAR LTR R5,R5
BNZ REVERSE
LTR R3,R3
BZ FINISH
B LOOP1
*
REVERSE LR R8,R5
SRL R8,1
LR R6,R7
SR R6,R5
BCTR R7,0
BCTR R6,0
*
LOOPREV MVC TEMP,0(R7)
MVC 0(1,R7),0(R6)
MVC 0(1,R6),TEMP
LA R6,1(R6)
AH R7,=H'-1'
BCT R8,LOOPREV
LTR R3,R3
BNP FINISH
LA R7,1(R5,R7)
XR R5,R5
B LOOP1
*
MOVELONGEST DS 0H
MVC 0(0,R8),0(R6)
*
FINISH DS 0H
MVC OUTPUT+80(80),=X'40'
LA R8,OUTPUT
TRT OUTPUT(80),TRTABLESPACE
* EXEC CICS WRITEQ TS QUEUE(=C'MYPROG') FROM(0(R8))
* LENGTH(160)
*
EXEC CICS RETURN
*
EJECT
* 00018900
* 00024420
TRTABLEUPPER DC 256X'00' TRANSLATION TABLE 00024430
ORG TRTABLEUPPER+C'A' 00024440
DC C'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 00024450
ORG TRTABLEUPPER+C'a'
DC C'abcdefghijklmnopqrstuvwxyz'
* 00024490
TRTABLESPACE DC 256X'40' TRANSLATION TABLE
ORG TRTABLESPACE+C'A'
DC C'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ORG TRTABLESPACE+C'a'
DC C'abcdefghijklmnopqrstuvwxyz'
*
BIGWORD DS F
STARTWORD DS F
SAVEAREA DS 18F
INPUT DS CL80
OUTPUT DS CL80
WORKAREA DS 80C 00024500
COMMAREA DS CL180 00024600
WORK DS CL80 00024610
TEMP DS CL1
END MYPROG 00024800