Ha! I found another way. I now have the following DSECT definition.
TXTINPT DSECT
USING TXTINPT,R10 ESTABLISH REG 10 AS BASE
TXTSREQU DS CL1 SCRIPTING REQUEST CODE
TXTSRETN DS CL1 SCRIPTING RETURN CODE
TXTSSTRL DS H SCRIPTING INPUT/OUTPUT STRING LENGTH
TXTSSTRG DS 256CL1 SCRIPTING INPUT/OUTPUT STRING
ORG TXTINPT
STR_REQU EQU *-2,1,C'C' DYNAMIC REFERENCE TO STRING REQUEST
STR_RETN EQU *-1,1,C'C' DYNAMIC REFERENCE TO STRING RETCODE
TXTSTRL DS H LEGACY INPUT/OUTPUT STRING LENGTH
TXTSTRG DS 256CL1 LEGACY INPUT/OUTPUT STRING
ORG
So, the following now shows three ways I would possibly use it.
IF TXTREQU,NE,C'S' IF NOT IN SCRIPTING MODE
MVI TXTRETN,C'B' SIGNAL BUFFER LENGTH ERROR <==LEGACY CODE
B RETURN GO RETURN TO CALLER <==LEGACY CODE
ELSE ELSE--FOR SCRIPTING
MVIY -1(R10),C'B' SAVE AS STRING RETURN CODE
MVIY TXTSTRL-1,C'B' SAVE AS STRING RETURN CODE
MVIY STR_RETN,C'B' SAVE AS STRING RETURN CODE
B SCRIPTXT TAKE THE SCRIPTING EXIT
ENDIF ENDIF
...and the following snippet shows that the same machine code is being
generated.
000662 EBC2 AFFF FF52FFFFFF 896 MVIY -1(R10),C'B'
000668 EBC2 AFFF FF52FFFFFF 897 MVIY TXTSTRL-1,C'B'
00066E EBC2 AFFF FF52FFFFFF 898 MVIY STR_RETN,C'B'
...and the following is from the cross-reference. Reactions?
Symbol Length Value Id R Type Asm
TXTREQU 1 00000000 FFFFFFFF C C
TXTRETN 1 00000001 FFFFFFFF C C
TXTSREQU 1 00000000 FFFFFFFD C C
TXTSRETN 1 00000001 FFFFFFFD C C
STR_REQU 1 FFFFFFFE FFFFFFFD C
STR_RETN 1 FFFFFFFF FFFFFFFD C
Sincerely,
Dave Clark