Hi Vignesh,
to generate CHPID/CNTLUNIT/IODEVICE/EDT etc. statements as necessary, which are
then input to the batch IOCP/MVSCP import job. Of course the sky's the limit
with edit macros.
I've tried to attach a sample; it's my first time so let's see if I did it
right. It builds various statements to support the installation of a disk
array that is attached via cascaded FICON switches, with two-byte link
addressing, etc. I'm sure it could be improved by a willing reader; did the
job for me at least.
cheers,
Peter
On Wed, 20 Feb 2019 05:32:59 +0000, Sankaranarayanan, Vignesh
<[email protected]> wrote:
>Hi Peter,
>
>Curious.. what sort of edit macros?
>�
>– Vignesh
>Mainframe Infrastructure
>
>-----Original Message-----
>From: IBM Mainframe Discussion List <[email protected]> On Behalf Of
>Peter Bishop
>Sent: 20 February 2019 02:33
>To: [email protected]
>Subject: [EXTERNAL] Re: Is there an HCD for Dummy's book anywhere?
>
>Hi Tony,
>
>see the "Migrate configuration data" option, 5 from the main menu. I use it
>with all the time, with edit macros to generate IOCP decks which I then
>import. Saves a lot of hassle on the CTC definition screens and others that I
>prefer not to use when I know I can code some IOCP instead.
>
>cheers
>Peter
>
>On Tue, 19 Feb 2019 :0:40:22 -0500, Tony Thigpen <[email protected]> wrote:
>
>>You know, I can code an IOCP much faster. I just wish I could tell HCD
>>to: "take this IOCP source, set everything up for me and ask me for any
>>extra information HCD needs".
>>
>>Tony Thigpen
>>
>>Tony Thigpen wrote on 2/19/19 8:37 PM:
>>> It suddenly dawned on me that I was miss-understanding "logical
>>> address (same as CUADD)". I was reading it as "logical address which
>>> will be set to the specified CUADD value" instead of "logical address
>>> (which others call CUADD)".
>>>
>>> Duh!
>>>
>>> Tony Thigpen
>>>
>>> Neubert, Kevin wrote on 2/19/19 7:07 PM:
>>>> Sounds like you have not gone far enough.
>>>>
>>>> After you add the CU, select the processor(s), should then have a
>>>> panel with channel path IDs, unit address, logical address (same as
>>>> CUADD), etc.
>>>>
>>>> If appropriate, might make a little more sense if you "add like" an
>>>> existing VTL control unit. Values can still be tailored using this
>>>> manner.
>>>>
>>>> Regards,
>>>>
>>>> Kevin
>>>>
>>>> -----Original Message-----
>>>> From: IBM Mainframe Discussion List
>>>> [mailto:[email protected]] On Behalf Of Tony Thigpen
>>>> Sent: Tuesday, February 19, 2019 2:52 PM
>>>> To: [email protected]
>>>> Subject: Is there an HCD for Dummy's book anywhere?
>>>>
>>>> The HCD panels are driving me crazy.
>>>>
>>>> I don't know if my eyeballs need replacing or if this is a 'they
>>>> called it something else' problem.
>>>>
>>>> All I want to do is add a new control unit and some tapes for our
>>>> VTL, but the control unit needs a specific CUADD= value and I just
>>>> don't see any field on the panel that seems remotely where I would
>>>> specify the CUADD= value.
>>>>
>>>> --
>>>> Tony Thigpen
>>>>
>>>> --------------------------------------------------------------------
>>>> -- For IBM-MAIN subscribe / signoff / archive access instructions,
>>>> send email to [email protected] with the message: INFO
>>>> IBM-MAIN
>>>>
>>>> --------------------------------------------------------------------
>>>> -- For IBM-MAIN subscribe / signoff / archive access instructions,
>>>> send email to [email protected] with the message: INFO
>>>> IBM-MAIN
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> - For IBM-MAIN subscribe / signoff / archive access instructions,
>>> send email to [email protected] with the message: INFO
>>> IBM-MAIN
>>>
>>>
>>
>>----------------------------------------------------------------------
>>For IBM-MAIN subscribe / signoff / archive access instructions, send
>>email to [email protected] with the message: INFO IBM-MAIN
>
>----------------------------------------------------------------------
>For IBM-MAIN subscribe / signoff / archive access instructions, send email to
>[email protected] with the message: INFO IBM-MAIN
>
>MARKSDNDSPENCER.COM
>________________________________
> Unless otherwise stated above:
>Marks and Spencer plc
>Registered Office:
>Waterside House
>35 North Wharf Road
>London
>W2 1NW
>
>Registered No. 214436 in England and Wales.
>
>Telephone (020) 7935 4422
>Facsimile (020) 7487 2670
>
>www.marksandspencer.com
>
>Please note that electronic mail may be monitored.
>
>This e-mail is confidential. f you received it by mistake, please let us know
>and then delete it from your system; you should not copy, disclose, or
>distribute its contents to anyone nor act in reliance on this e-mail, as this
>is prohibited and may be unlawful.
>
>----------------------------------------------------------------------
>For IBM-MAIN subscribe / signoff / archive access instructions,
>send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
/*** REXX ************************************************************
* *
* edit macro to build CNTLUNIT/IODEVICE macros for the zzzz
* *
* use the output from this as input to the 'Migrate IOCP' HCD function
* Note: it is assumed that an incremental 'Migrate IOCP' is done *
* use another method for a full migration (or base it on this)*
* *
* 122 LCUs in total, 3xxx, 4xxx, 5xxx, Dxxx, *
* LCU count: 32 32 32 32 *
* All LCUs use same connectivity via switches 14 and 15. *
* *
* each[1] macro set generated from label LCU_table has: *
* 256[2] devices, 128 base, 128 alias *
* all aliases in subchannel set 1 *
* for the xx00 LCU: base in UA=00-7F, alias in 80-FF *
* for the xx80 LCU: base in UA=80-FF, alias in 00-7F *
* model type, CUADD from table as generated in P9500 config *
* description includes model type *
* *
* 1. To remain within the architectural limit of 16384 units per *
* channel, the LCUs no longer address all eight channels. Note *
* that the channel interface of the zzzz is rated at twice the *
* speed of the existing xxx array. *
* *
* Update 12/3/2013: *
* *
* Refer HCD Messages, for message CBDA233I which logs when the *
* limit is reached. *
* *
* 2. Not all LUNs are installed for each address range. Those with*
* fewer than 128 are defined with the actual installed amount. *
* See label LCU_tab for the table of installed LUNs in each LCU.*
* *
* *
* //xxxxxxxx JOB OHOT,XXXX, *
* // CLASS=X,MSGCLASS=X,NOTIFY=uuuuuu *
* / * *
* / * MIGRATE AN IOCP DECK (fix these comment cards if using them)*
* / * *
* //MIGRATE EXEC PGM=CBDMGHCP,PARM='MIGR,IP,procname' *
* //HCDIODFT DD DISP=OLD,DSN=workIODFdsname *
* //HCDIN DD DISP=SHR,DSN=inputIOCPdeckAfterMacro *
* //HCDLIB DD DISP=SHR,DSN=SYS1.MACLIB *
* //HCDMLOG DD DISP=OLD,DSN=orSYSOUTifYouPrefer *
* //HCDPRINT DD DISP=OLD,DSN=orSYSOUTifYouPrefer *
* //HCDASMP DD DISP=OLD,DSN=orSYSOUTifYouPrefer *
* // *
* // I = FULL MIGRATION *
* // IP= PARTIAL (INCREMENTAL) MIGRATION *
* // *
* *
* *
* 28/11/2012 - PB - changed LCU numbering as team wanted no gaps *
* just start at x'00' and add one to each LCU # *
* *
* previously each emulation type had its own range *
* *
* e.g. 3390-3 x'10-3E', 3390-9 50-8F, 3390-L B0-BF *
* *
**********************************************************************/
signal on novalue
ADDRESS ISREDIT
"MACRO"
call init /* establish parameters */
do forever /* */
call get_next_LCU /* for each LCU to be added */
if ^still_going then leave /* */
call add_LCU_statements /* add its CNTLUNIT/IODEVICEs */
end
/* "end" */ /* allow user to review changes */
/* uncomment to save without review */
code=rc
if code>0 then
do
say "return code from end was" code
say zerrsm
say zerrlm
end
"MEND"
exit code
/**********************************************************************
**********************************************************************
* *
* Subroutines *
* *
**********************************************************************
**********************************************************************/
get_next_LCU:
/**********************************************************************
* *
* for LCU in the table, get its CU number, CUADD, and description *
* *
* use the right path/link set for the LCU (8 exceeds the 16K limit)*
* *
* if it's an xx80 CU, swap its address range and base/aliases *
* *
**********************************************************************/
still_going=(current_LCU<num_LCUs) /* are we still going or not? */
if still_going then
do
/* trace r */
i=current_LCU /* easy index value */
LCUnum=word(LCU_tab,5*i+1) /* get the LCU number */
LCU# =left(LCUnum,2) /* the 'nn' value */
CUADD =word(LCU_tab,5*i+2) /* get the CUADD */
desc =word(LCU_tab,5*i+3) /* get the description suffix */
devct#=word(LCU_tab,5*i+4) /* get the device count */
paths =word(LCU_tab,5*i+5) /* get the device count */
if paths=1 then p=paths1 ; else p=paths2 /* path set */
if paths=1 then l=links1 ; else l=links2 /* link set */
dev#deft=(devct#='128') /* true if we have the default */
r1=left(LCUnum,3) /* base address range */
r2=d2x(x2d(r1)+8) /* alias address range */
swap=(right(LCUnum,2)='80') /* true if we are swapping ranges*/
if swap then , /* if we're swapping */
do
r2=d2x(x2d(r1)-8) /* alias address range */
r3=r2 /* swap the ranges */
r2=r1 /* swap the ranges */
r1=r3 /* swap the ranges */
end
current_LCU=current_LCU+1 /* move onto the next LCU */
end
/* trace o */
return
add_LCU_statements:
/**********************************************************************
* *
* add the statements to the output file *
* must use the Line_after command as this member may not exist *
* appropriate numbers of blanks are prefixed for HLASM syntax *
* *
**********************************************************************/
do i = 1 to card.0 /* for each output card */
this=card.i /* get its template */
if i=1 | i=8 | i=10 then , /* LCU # overlay */
this=blank9||overlay(LCUnum,this,pos('cccc',this))
if i=1 then , /* paths overlay */
this=overlay(p,this,pos('p1',this))
if i=8 then , /* first address range */
this=overlay(r1,this,pos('rrr',this)) /* into IODEVICEs */
if i=10 then , /* second address range */
this=overlay(r2,this,pos('rrr',this)) /* into IODEVICEs */
if i=2 | i=3 | i=6 | i=7 then this=blnk15||this /* into col 16 */
if i=3 then , /* links overlay */
this=overlay(l,this,pos('lnk1',this))
if i=4 then this=blnk15||overlay(CUADD,this,pos('aa',this)) /*CUADD*/
if i=5 | i=9 | i=11 then , /* model number */
this=blnk15||overlay(desc,this,pos('mmmm-m',this))
if i=9 then , /* unit type */
if swap then , /* into IODEVICE macro */
this=overlay('A',this,pos('x',this))||subset
else , /* 'nn' overlay */
this=overlay('B',this,pos('x',this)) /* into IODEVICEs */
if i=11 then , /* unit type */
if swap then , /* into IODEVICE macro */
this=overlay('B',this,pos('y',this)) /* into IODEVICEs */
else , /* 'nn' overlay */
this=overlay('A',this,pos('y',this))||subset
if ^dev#deft then , /* not a default device count */
do
if i=2 then , /* CNTLUNIT macro requires 128 extra for aliases */
this=overlay(right(128+devct#,3,0),this,pos('256',this)) /* UNITs */
if i=8 | i=10 then , /* IODEVICE macro */
this=overlay(right(devct#,3,0),this,pos('128',this)) /* UNITs */
end
"line_after" here "=(this)" /* write the output line */
here=here+1 /* move onto the next output line*/
end i
return
init:
current_LCU=0 /* starting LCU number */
"(here) = LINENUM .ZCSR" /* statements will be added from here*/
LCU_table: /* table of LCUs, CUADDs and UNITs */
/* the CUADDs are from the P9500 configuration */
LCU_tab="" /* CU#, CUADD, model, #LUNs installed=device count, path set */
LCU_tab=LCU_tab||"3000 00 3390-3 128 1 "
LCU_tab=LCU_tab||"3080 01 3390-3 128 1 "
LCU_tab=LCU_tab||"3100 02 3390-3 128 1 "
LCU_tab=LCU_tab||"3180 03 3390-3 128 1 "
LCU_tab=LCU_tab||"3200 04 3390-3 128 1 "
LCU_tab=LCU_tab||"3280 05 3390-3 128 1 "
LCU_tab=LCU_tab||"3300 06 3390-3 128 1 "
LCU_tab=LCU_tab||"3380 07 3390-3 128 1 "
LCU_tab=LCU_tab||"3400 08 3390-3 128 1 "
LCU_tab=LCU_tab||"3480 09 3390-3 128 1 "
LCU_tab=LCU_tab||"3500 0A 3390-3 128 1 "
LCU_tab=LCU_tab||"3580 0B 3390-3 128 1 "
LCU_tab=LCU_tab||"3600 0C 3390-3 128 1 "
LCU_tab=LCU_tab||"3680 0D 3390-3 128 1 "
LCU_tab=LCU_tab||"3700 0E 3390-3 128 1 "
LCU_tab=LCU_tab||"3780 0F 3390-3 128 1 "
LCU_tab=LCU_tab||"3800 10 3390-3 128 1 "
LCU_tab=LCU_tab||"3880 11 3390-3 128 1 "
LCU_tab=LCU_tab||"3900 12 3390-3 128 1 "
LCU_tab=LCU_tab||"3980 13 3390-3 128 1 "
LCU_tab=LCU_tab||"3A00 14 3390-3 128 1 "
LCU_tab=LCU_tab||"3A80 15 3390-3 128 1 "
LCU_tab=LCU_tab||"3B00 16 3390-3 128 1 "
LCU_tab=LCU_tab||"3B80 17 3390-3 128 1 "
LCU_tab=LCU_tab||"3C00 18 3390-3 128 1 "
LCU_tab=LCU_tab||"3C80 19 3390-3 128 1 "
LCU_tab=LCU_tab||"3D00 1A 3390-3 128 1 "
LCU_tab=LCU_tab||"3D80 1B 3390-3 128 1 "
LCU_tab=LCU_tab||"3E00 1C 3390-3 128 1 "
LCU_tab=LCU_tab||"3E80 1D 3390-3 128 1 "
LCU_tab=LCU_tab||"3F00 1E 3390-3 128 1 "
LCU_tab=LCU_tab||"3F80 1F 3390-3 128 1 "
LCU_tab=LCU_tab||"4000 20 3390-3 128 1 "
LCU_tab=LCU_tab||"4080 21 3390-3 128 1 "
LCU_tab=LCU_tab||"4100 22 3390-3 128 1 "
LCU_tab=LCU_tab||"4180 23 3390-3 128 1 "
LCU_tab=LCU_tab||"4200 24 3390-3 128 1 "
LCU_tab=LCU_tab||"4280 25 3390-3 128 1 "
LCU_tab=LCU_tab||"4300 26 3390-3 128 1 "
LCU_tab=LCU_tab||"4380 27 3390-3 128 1 "
LCU_tab=LCU_tab||"4400 28 3390-3 128 1 "
LCU_tab=LCU_tab||"4480 29 3390-3 128 1 "
LCU_tab=LCU_tab||"4500 2A 3390-3 128 1 "
LCU_tab=LCU_tab||"4580 2B 3390-3 128 1 "
LCU_tab=LCU_tab||"4600 2C 3390-3 128 1 "
LCU_tab=LCU_tab||"4680 2D 3390-3 128 1 "
LCU_tab=LCU_tab||"4700 2E 3390-3 104 1 "
LCU_tab=LCU_tab||"4780 2F 3390-9 128 1 "
LCU_tab=LCU_tab||"4800 30 3390-9 128 1 "
LCU_tab=LCU_tab||"4880 31 3390-9 128 1 "
LCU_tab=LCU_tab||"4900 32 3390-9 128 1 "
LCU_tab=LCU_tab||"4980 33 3390-9 128 1 "
LCU_tab=LCU_tab||"4A00 34 3390-9 128 1 "
LCU_tab=LCU_tab||"4A80 35 3390-9 128 1 "
LCU_tab=LCU_tab||"4B00 36 3390-9 128 1 "
LCU_tab=LCU_tab||"4B80 37 3390-9 128 1 "
LCU_tab=LCU_tab||"4C00 38 3390-9 128 1 "
LCU_tab=LCU_tab||"4C80 39 3390-9 128 1 "
LCU_tab=LCU_tab||"4D00 3A 3390-9 128 1 "
LCU_tab=LCU_tab||"4D80 3B 3390-9 128 1 "
LCU_tab=LCU_tab||"4E00 3C 3390-9 128 1 "
LCU_tab=LCU_tab||"4E80 3D 3390-9 128 1 "
LCU_tab=LCU_tab||"4F00 3E 3390-9 128 1 "
LCU_tab=LCU_tab||"4F80 3F 3390-9 128 1 "
LCU_tab=LCU_tab||"5000 40 3390-9 128 2 "
LCU_tab=LCU_tab||"5080 41 3390-9 128 2 "
LCU_tab=LCU_tab||"5100 42 3390-9 128 2 "
LCU_tab=LCU_tab||"5180 43 3390-9 128 2 "
LCU_tab=LCU_tab||"5200 44 3390-9 128 2 "
LCU_tab=LCU_tab||"5280 45 3390-9 128 2 "
LCU_tab=LCU_tab||"5300 46 3390-9 128 2 "
LCU_tab=LCU_tab||"5380 47 3390-9 128 2 "
LCU_tab=LCU_tab||"5400 48 3390-9 128 2 "
LCU_tab=LCU_tab||"5480 49 3390-9 128 2 "
LCU_tab=LCU_tab||"5500 4A 3390-9 128 2 "
LCU_tab=LCU_tab||"5580 4B 3390-9 128 2 "
LCU_tab=LCU_tab||"5600 4C 3390-9 128 2 "
LCU_tab=LCU_tab||"5680 4D 3390-9 128 2 "
LCU_tab=LCU_tab||"5700 4E 3390-9 128 2 "
LCU_tab=LCU_tab||"5780 4F 3390-9 128 2 "
LCU_tab=LCU_tab||"5800 50 3390-9 128 2 "
LCU_tab=LCU_tab||"5880 51 3390-9 128 2 "
LCU_tab=LCU_tab||"5900 52 3390-9 128 2 "
LCU_tab=LCU_tab||"5980 53 3390-9 128 2 "
LCU_tab=LCU_tab||"5A00 54 3390-9 128 2 "
LCU_tab=LCU_tab||"5A80 55 3390-9 128 2 "
LCU_tab=LCU_tab||"5B00 56 3390-9 128 2 "
LCU_tab=LCU_tab||"5B80 57 3390-9 128 2 "
LCU_tab=LCU_tab||"5C00 58 3390-9 128 2 "
LCU_tab=LCU_tab||"5C80 59 3390-9 128 2 "
LCU_tab=LCU_tab||"5D00 5A 3390-9 128 2 "
LCU_tab=LCU_tab||"5D80 5B 3390-9 128 2 "
LCU_tab=LCU_tab||"5E00 5C 3390-9 128 2 "
LCU_tab=LCU_tab||"5E80 5D 3390-9 128 2 "
LCU_tab=LCU_tab||"5F00 5E 3390-9 128 2 "
LCU_tab=LCU_tab||"5F80 5F 3390-9 128 2 "
LCU_tab=LCU_tab||"D000 60 3390-9 128 2 "
LCU_tab=LCU_tab||"D080 61 3390-9 128 2 "
LCU_tab=LCU_tab||"D100 62 3390-9 128 2 "
LCU_tab=LCU_tab||"D180 63 3390-9 128 2 "
LCU_tab=LCU_tab||"D200 64 3390-9 128 2 "
LCU_tab=LCU_tab||"D280 65 3390-9 128 2 "
LCU_tab=LCU_tab||"D300 66 3390-9 128 2 "
LCU_tab=LCU_tab||"D380 67 3390-9 128 2 "
LCU_tab=LCU_tab||"D400 68 3390-9 128 2 "
LCU_tab=LCU_tab||"D480 69 3390-9 128 2 "
LCU_tab=LCU_tab||"D500 6A 3390-9 128 2 "
LCU_tab=LCU_tab||"D580 6B 3390-9 128 2 "
LCU_tab=LCU_tab||"D600 6C 3390-9 128 2 "
LCU_tab=LCU_tab||"D680 6D 3390-9 128 2 "
LCU_tab=LCU_tab||"D700 6E 3390-9 128 2 "
LCU_tab=LCU_tab||"D780 6F 3390-9 128 2 "
LCU_tab=LCU_tab||"D800 70 3390-9 128 2 "
LCU_tab=LCU_tab||"D880 71 3390-9 128 2 "
LCU_tab=LCU_tab||"D900 72 3390-9 128 2 "
LCU_tab=LCU_tab||"D980 73 3390-9 40 2 "
LCU_tab=LCU_tab||"DA00 74 3390-L 128 2 "
LCU_tab=LCU_tab||"DA80 75 3390-L 128 2 "
LCU_tab=LCU_tab||"DB00 76 3390-L 128 2 "
LCU_tab=LCU_tab||"DB80 77 3390-L 128 2 "
LCU_tab=LCU_tab||"DC00 78 3390-L 128 2 "
LCU_tab=LCU_tab||"DC80 79 3390-L 50 2 "
num_LCUs=words(LCU_tab)/5 /* number of LCUs to generate */
blank9=copies(' ',9)
blnk15=copies(' ',15)
paths1="CA,BF,C7,C1" /* first four CHPIDs - 3xxx, 4xxx */
paths2="AD,A4,AA,B1" /* second four CHPIDs - 5xxx, Dxxx */
links1="1430,1530,1403,1503" /* first four links */
links2="1431,1531,1402,1502" /* second four links */
subset=",SCHSET=1"
card.0=11
card.1="CNTLUNIT CUNUMBR=cccc,PATH=((CSS(0),p1,p2,p3,p4)), *"
card.2="UNITADD=((00,256)), *"
card.3="LINK=((CSS(0),lnk1,lnk2,lnk3,lnk4)), *"
card.4="SHARED=N,CUADD=aa,SERIAL='USHA065789',UNIT=2107, *"
card.5="DESC='xxxx mmmm-m', *"
card.6="SWPORT=((14,02),(14,03),(14,30),(14,31),(15,02),(15,03),*"
card.7="(15,30),(15,31)) "
card.8="IODEVICE ADDRESS=(rrr0,128),CUNUMBR=(cccc),STADET=Y, *"
card.9="DESC='xxxx mmmm-m',UNIT=3390x"
card.10="IODEVICE ADDRESS=(rrr0,128),CUNUMBR=(cccc),STADET=Y, *"
card.11="DESC='xxxx mmmm-m',UNIT=3390y"
return
/* the original 8 CHPIDs in order:
"PATH=((CSS(0),CA,BF,C7,C1,AD,A4,AA,B1))" */
/* the original 8 LINKs in order:
"LINK=((CSS(0),2430,2530,2403,2503,2431,2531,2404,2504))" */
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN