I have coded a panel which is working fine except for the DSN1-14 which is taking a maxiumum of 42 byte of dataset name and for 43 and 44 it is showing invalid length. I am entering without quotes. DSN1 starts at col 11 and ends at col 54. The code is not
Code:
)ATTR DEFAULT(%+!)
_ TYPE(INPUT) INTENS(HIGH) JUST(RIGHT) PAD('0') COLOR(GREEN)
~ TYPE(INPUT) INTENS(HIGH) JUST(LEFT) PAD(' ') COLOR(GREEN)
% TYPE(TEXT) INTENS(LOW) JUST(LEFT) PAD(' ') COLOR(BLUE)
¬ TYPE(TEXT) INTENS(HIGH) JUST(LEFT) PAD(' ')
+ TYPE(TEXT) INTENS(LOW) SKIP(ON)
$ TYPE(OUTPUT) INTENS(HIGH) JUST(LEFT) PAD(' ')
@ TYPE(OUTPUT) INTENS(HIGH) JUST(LEFT) PAD(' ')
)BODY
¬PANEL: GOXCOM AMEX XCOM MAINTENANCE PANEL DATE: @ZDATE
+
¬ OPTION ==>~Z+ (1=SSR QUALIFIER 2=SYSUID QUALIFIER)
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
¬ ENTER DATASET NAMES (NO QUOTES) AND WHETHER CREATE (DEFAULT) OR REPLA
%DSN 1: ~DSN1 % C / R: ~ACT1+
%DSN 2: ~DSN2 % C / R: ~ACT2+
%DSN 3: ~DSN3 % C / R: ~ACT3+
%DSN 4: ~DSN4 % C / R: ~ACT4+
%DSN 5: ~DSN5 % C / R: ~ACT5+
%DSN 6: ~DSN6 % C / R: ~ACT6+
%DSN 7: ~DSN7 % C / R: ~ACT7+
%DSN 8: ~DSN8 % C / R: ~ACT8+
%DSN 9: ~DSN9 % C / R: ~ACT9+
%DSN 10: ~DSN10 % C / R: ~ACT10+
%DSN 11: ~DSN11 % C / R: ~ACT11+
%DSN 12: ~DSN12 % C / R: ~ACT12+
%DSN 13: ~DSN13 % C / R: ~ACT13+
%DSN 14: ~DSN14 % C / R: ~ACT14+
+
¬VERIFY JOB CARDS: +
~BJC1
~BJC2
~BJC3
~BJC4
)INIT
.ZVARS='(OPT)'
&OPT = &Z
)PROC
VER (&OPT,NB,LIST,1,2)
VER (&DSN1,NB,DSNAME)
IF (&ACT1 = ' ')
&ACT1 = 'C'
IF (&DSN2 ¬= ' ')
VER (&DSN2,DSNAME)
IF (&ACT2 = ' ')
&ACT2 = 'C'
IF (&DSN3 ¬= ' ')
VER (&DSN3,DSNAME)
IF (&ACT3 = ' ')
&ACT3 = 'C'
IF (&DSN4 ¬= ' ')
VER (&DSN4,DSNAME)
IF (&ACT4 = ' ')
&ACT4 = 'C'
IF (&DSN5 ¬= ' ')
VER (&DSN5,DSNAME)
IF (&ACT5 = ' ')
&ACT5 = 'C'
IF (&DSN6 ¬= ' ')
VER (&DSN6,DSNAME)
IF (&ACT6 = ' ')
&ACT6 = 'C'
IF (&DSN7 ¬= ' ')
VER (&DSN7,DSNAME)
IF (&ACT7 = ' ')
&ACT7 = 'C'
IF (&DSN8 ¬= ' ')
VER (&DSN8,DSNAME)
IF (&ACT8 = ' ')
&ACT8 = 'C'
IF (&DSN9 ¬= ' ')
VER (&DSN9,DSNAME)
IF (&ACT9 = ' ')
&ACT9 = 'C'
IF (&DSN10 ¬= ' ')
VER (&DSN10,DSNAME)
IF (&ACT10 = ' ')
&ACT10 = 'C'
IF (&DSN11 ¬= ' ')
VER (&DSN11,DSNAME)
IF (&ACT11 = ' ')
&ACT11 = 'C'
IF (&DSN12 ¬= ' ')
VER (&DSN12,DSNAME)
IF (&ACT12 = ' ')
&ACT12 = 'C'
IF (&DSN13 ¬= ' ')
VER (&DSN13,DSNAME)
IF (&ACT13 = ' ')
&ACT13 = 'C'
IF (&DSN14 ¬= ' ')
VER (&DSN13,DSNAME)
IF (&ACT13 = ' ')
&ACT13 = 'C'
VPUT (DSN1,DSN2,DSN3,DSN4,DSN5,DSN6,DSN7,DSN8,DSN9,DSN10,DSN11,
DSN12,DSN13,DSN14) PROFILE
VPUT (ACT1,ACT2,ACT3,ACT4,ACT5,ACT6,ACT7,ACT8,ACT9,ACT10,ACT11,
ACT12,ACT13,ACT14) PROFILE
VPUT (BJC1,BJC2,BJC3,BJC4) PROFILE
VPUT (OPT) PROFILE
)END
DSNAME
The variable must contain a valid TSO data set name. A data set name qualifier must begin with an alphabetic character (A-Z, $, @, or #). The remaining characters must be either uppercase alphanumeric or a hyphen (-). A period is used to connect each qualifier in the data set name.
ISPF first determines if the TSO/E NOPREFIX PROFILE option is in use. If it is, ISPF does use a prefix in the calculation of the data set length. A maximum of 44 characters can be entered for a data set name, if that data set name is enclosed in quotes. If the TSO/E NOPREFIX PROFILE option is in use, a maximum of 44 characters can be entered for a data set name when it is not enclosed within quotes. If the TSO/E NOPREFIX PROFILE option is not in use, a maximum of 42 characters can be entered for a data set name, not enclosed in quotes. ISPF uses the minimum data set prefix of two characters (one character and a period separator) during its calculation of the data set name length.
no! the approach is just wrong...
reread an try to understand the manual
You should have a at least 46 chars fields to account for 44 dsname plus the two apostrophes for the <absolute> dsname
what the message tells You is that ...
the minimum length of the profile is ONE CHAR which added to the seperating dot
leaves only 42 bytes for the rest of the dataset name,
regardless of the length of the panel field used
but if You have a long enough field ( 46 chars )
and enter the dataset name enclosed within apostrophes ISPF will be happy to accept a 44 bytes dsname
that' s the common approach,
to help You understand it run this test
profile prefix something
enter a 44 char dataset name enclosed in apostrophes
enter the same without
profile noprefix
the result will be the same regardless of the way You enter the dsname
anyway do not expect the user to run with a predefined profile setting
and expect / process as ISPF does
dataset name enclosed in apostrophes ==> absolute dsname
without apostophes ==> relativs dsname ( to the profile setting )
no reason to try anything...
all DSNAMES fields should be 46 chars long, thats all !
but if You expect them to contain also a member name the field should be 56 chars
apostrophes * 2
dsname 44
member 8
open paren 1
close paren 1
total 56
that' s all... nothing to test, only the rules have to be followed!