Im on a z/OS 1.7 system and exploring the use of IEFSSVTI.
No real assignemnent Yet, more of an educational exercise.
I have the following STATIC Table.
*
*********************************************************************
*** Static SSVTI ***
*********************************************************************
LCLC &CSECT DECLARE LOCAL CSECT VARIABLE
&CSECT SETC 'SSI@IFVT' INITIALIZE CSECT SYMBOL
&CSECT AMODE 31 ADDRESSING MODE
&CSECT RMODE ANY RESIDENCY MODE
&CSECT CSECT
DC A(IFVTDESC)
JMODID ID=&CSECT
*
DS 0D
DC CL8'IEFSSVTI'
*
IFVTDESC EQU *
IEFSSVTI TYPE=INITIAL,SSVTDATA=ROUTINE1,TABLEN=STABLEN
IEFSSVTI TYPE=ENTRY,NUMFCODES=1,FCODES=aa,FUNCNAME=routineA
IEFSSVTI TYPE=ENTRY,NUMFCODES=1,FCODES=bb,FUNCNAME=ROUTINEB
IEFSSVTI TYPE=ENTRY,NUMFCODES=1,FCODES=cc,FUNCNAME=ROUTINEC
IEFSSVTI TYPE=ENTRY,NUMFCODES=1,FCODES=dd,FUNCNAME=ROUTINED
IEFSSVTI TYPE=ENTRY,NUMFCODES=1,FCODES=ee,FUNCNAME=ROUTINEE
IEFSSVTI TYPE=FINAL
ORG ,
The actual values for FCODES is irrevelent and the routine names is irrevelent.
I Am trying to assemble a static SSVTI table as a loadable module.
.
I dont understand why the above code requires a Branch Instruction as well as a
Base Register for TYPE=INITIAL ?
.
TYPE=INITIAL genertes a branch instruction
B ROUTINE1_END
and
ASMA307E No active USING for operand ROUTINE1_END
.
.
Ok
When I specify either a
B OPSYN J *or* COPY IEABRC
.
The TYPE=INITIAL Macro expands with
B ROUTINE1_END
SMA058E Invalid relative address - ROUTINE1_END .
.
.
If I insert a USING statement
USINGE &CSECT,15 ..... the code gets generated without error with a BRANCH
instruction.
B ROUTINE1_END
.
.
I dont understand why this Macro is generating a Branch instruction for a Table
?
Is there away to avoid the Branch Instruction from Being generated ?
.
Paul ..