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 <vignesh.v.sankaranaraya...@marks-and-spencer.com> wrote: >Hi Peter, > >Curious.. what sort of edit macros? >� >– Vignesh >Mainframe Infrastructure > >-----Original Message----- >From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of >Peter Bishop >Sent: 20 February 2019 02:33 >To: IBM-MAIN@LISTSERV.UA.EDU >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 <t...@vse2pdf.com> 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:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Tony Thigpen >>>> Sent: Tuesday, February 19, 2019 2:52 PM >>>> To: IBM-MAIN@LISTSERV.UA.EDU >>>> 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 lists...@listserv.ua.edu with the message: INFO >>>> IBM-MAIN >>>> >>>> -------------------------------------------------------------------- >>>> -- For IBM-MAIN subscribe / signoff / archive access instructions, >>>> send email to lists...@listserv.ua.edu with the message: INFO >>>> IBM-MAIN >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> - For IBM-MAIN subscribe / signoff / archive access instructions, >>> send email to lists...@listserv.ua.edu with the message: INFO >>> IBM-MAIN >>> >>> >> >>---------------------------------------------------------------------- >>For IBM-MAIN subscribe / signoff / archive access instructions, send >>email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > >---------------------------------------------------------------------- >For IBM-MAIN subscribe / signoff / archive access instructions, send email to >lists...@listserv.ua.edu 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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu 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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN