218 The Virtualization Cookbook for Red Hat Enterprise Linux 5.2
parse upper var dasds dasd dasds
dashPos = pos('-', dasd)
if (dashPos = 0) then /* there is just one DASD */
do
numDasd = numDasd + 1
dasdList.numDasd = dasd
'CP Q MDISK' dasdList.numDasd 'LOCATION'
if (rc <> 0) then
do
say 'Return code from Q MDISK =' rc
say 'Are all DASD ATTached?'
exit 3
end
call checkReserved(dasdList.numDasd)
end /* do */
else /* process the range of DASD */
do
startRange = substr(dasd, 1, dashPos - 1)
endRange = substr(dasd, dashPos + 1, length(dasd) - dashPos)
do i = x2d(startRange) to x2d(endRange)
numDasd = numDasd + 1
dasdList.numDasd = d2x(i)
'CP Q MDISK' dasdList.numDasd 'LOCATION'
if (rc <> 0) then
do
say 'Return code from Q MDISK =' rc
exit 3
end
call checkReserved(dasdList.numDasd)
end /* do i */
end /* else */
end /* do while */
return numDasd /* from parseDasd */
/*+------------------------------------------------------------------+*/
doFormat: procedure expose dasdList. formatted
/*| Format all DASD specified using CPFMTXA |*/
/*| parm 1: labelPrefix - the two character label prefix |*/
/*| parm 2: numDasd - number of DASD in the array dasdList |*/
/*| parm 3: type - the type of DASD format |*/
/*| retVal: 0 = success |*/
/*+------------------------------------------------------------------+*/
arg labelPrefix numDasd type
'CP TERM MORE 1 1'
do i = 1 to numDasd
label = getLabel(labelPrefix dasdList.i)
retVal = formatOne(dasdList.i type label)
if (retVal ^= 0) then
do
say "Error from CPFMTXA on DASD" label "rc =" retVal
leave /* error - abort! */
end
formatted = formatted label
end /* do i = */
'CP TERM MORE 50 10'
return retVal /* from doFormat */
/*+------------------------------------------------------------------+*/
checkReserved: procedure
/*| Try copying an already formatted DASD then relabelling it |*/
Comentarios a estos manuales