diff --git a/dcrtmd2l12v.cmd b/dcrtmd2l12v.cmd new file mode 100644 index 0000000..c789dc8 --- /dev/null +++ b/dcrtmd2l12v.cmd @@ -0,0 +1,57 @@ +CMD PROMPT('Create MEDDFN - 2 libraries, 12 volumes') + +PARM KWD(MEDDFN) TYPE(*NAME) LEN(10) MIN(1) + + PROMPT('Media definition') + +PARM KWD(LIB) TYPE(*NAME) LEN(10) DFT(*CURLIB) + + SPCVAL((*CURLIB)) + + PROMPT('Library') + +PARM KWD(DEV1) TYPE(*NAME) LEN(10) MIN(1) + + PROMPT('Tape library/device 1') + +PARM KWD(DEV2) TYPE(*NAME) LEN(10) MIN(1) + + PROMPT('Tape library/device 2') + +PARM KWD(VOL1) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 1 volume 1') + +PARM KWD(VOL2) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 1 volume 2') + +PARM KWD(VOL3) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 1 volume 3') + +PARM KWD(VOL4) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 1 volume 4') + +PARM KWD(VOL5) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 1 volume 5') + +PARM KWD(VOL6) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 1 volume 6') + +PARM KWD(VOL7) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 2 volume 1') + +PARM KWD(VOL8) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 2 volume 2') + +PARM KWD(VOL9) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 2 volume 3') + +PARM KWD(VOL10) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 2 volume 4') + +PARM KWD(VOL11) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 2 volume 5') + +PARM KWD(VOL12) TYPE(*CHAR) LEN(6) MIN(1) + + PROMPT('Library 2 volume 6') + +PARM KWD(TEXT) TYPE(*CHAR) LEN(50) DFT(*BLANKS) + + PROMPT('Text description') + +PARM KWD(REPLACE) TYPE(*CHAR) LEN(4) RSTD(*YES) + + DFT(*NO) SPCVAL((*YES) (*NO)) + + PROMPT('Replace existing') diff --git a/meddfnhts2.rpgle b/meddfnhts2.rpgle new file mode 100644 index 0000000..5e02cf7 --- /dev/null +++ b/meddfnhts2.rpgle @@ -0,0 +1,211 @@ +**FREE + +//===================================================================== +// +// Program......: MEDDFNHTS2 +// +// Description..: MEDDFN hardware performance test +// +// Creates one media definition for twelve parallel +// streams across two tape libraries, with six volumes +// assigned to each library. +// +// Erstellen mit: +// +// CRTRPGMOD MODULE(GOSCH1/MEDDFNHTS2) +// SRCSTMF('/home/GOSCH/meddfn/meddfnhts2.rpgle') +// OPTION(*EVENTF) +// DBGVIEW(*SOURCE) +// TGTCCSID(*JOB) +// TGTRLS(*CURRENT) +// +// CRTPGM PGM(GOSCH1/MEDDFNHTS2) +// MODULE(GOSCH1/MEDDFNHTS2) +// BNDSRVPGM(GOSCH1/MEDDFNSRV) +// ACTGRP(*NEW) +// TGTRLS(*CURRENT) +// +//===================================================================== + +ctl-opt + option(*srcstmt:*nodebugio); + + +/COPY './meddfn_h.rpgle' +/COPY './meddfnpr.rpgle' + + +//===================================================================== +// +// Program Interface +// +//===================================================================== + +dcl-pi *n; + + pMediaDefinitionName char(10) const; + pLibraryName char(10) const; + pDeviceName1 char(10) const; + pDeviceName2 char(10) const; + + pVolume1 char(6) const; + pVolume2 char(6) const; + pVolume3 char(6) const; + pVolume4 char(6) const; + pVolume5 char(6) const; + pVolume6 char(6) const; + pVolume7 char(6) const; + pVolume8 char(6) const; + pVolume9 char(6) const; + pVolume10 char(6) const; + pVolume11 char(6) const; + pVolume12 char(6) const; + + pTextDescription char(50) const; + pReplace char(4) const; + +end-pi; + + +//===================================================================== +// +// Data +// +//===================================================================== + +dcl-ds MediaDefinition + likeds(MD_MediaDefinition_T); + +dcl-ds Error + likeds(MD_Error_T); + +dcl-s DeviceIndex int(10); + + +//===================================================================== +// +// Build media definition +// +//===================================================================== + +clear MediaDefinition; + +MediaDefinition.MediaDefinitionName = + pMediaDefinitionName; + +MediaDefinition.LibraryName = + pLibraryName; + +MediaDefinition.TextDescription = + pTextDescription; + +MediaDefinition.Replace = + (pReplace = '*YES'); + +MediaDefinition.DeviceAllocation = + MD_DeviceAllocateAll; + +MediaDefinition.SaveFormat = + MD_SaveFormatParallel; + +MediaDefinition.MaximumParallelResources = + 12; + +MediaDefinition.MinimumParallelResources = + 12; + +MediaDefinition.NumberOfDevices = + 12; + + +//===================================================================== +// +// Devices +// +//===================================================================== + +MediaDefinition.Device(1).DeviceName = pDeviceName1; +MediaDefinition.Device(2).DeviceName = pDeviceName1; +MediaDefinition.Device(3).DeviceName = pDeviceName1; +MediaDefinition.Device(4).DeviceName = pDeviceName1; +MediaDefinition.Device(5).DeviceName = pDeviceName1; +MediaDefinition.Device(6).DeviceName = pDeviceName1; + +MediaDefinition.Device(7).DeviceName = pDeviceName2; +MediaDefinition.Device(8).DeviceName = pDeviceName2; +MediaDefinition.Device(9).DeviceName = pDeviceName2; +MediaDefinition.Device(10).DeviceName = pDeviceName2; +MediaDefinition.Device(11).DeviceName = pDeviceName2; +MediaDefinition.Device(12).DeviceName = pDeviceName2; + + +//===================================================================== +// +// One media file per device +// +//===================================================================== + +for DeviceIndex = 1 to 12; + + MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles = 1; + + MediaDefinition.Device(DeviceIndex) + .MediaFile(1).SequenceNumber = 1; + + MediaDefinition.Device(DeviceIndex) + .MediaFile(1).StartingPositionInFile = *ALL'0'; + + MediaDefinition.Device(DeviceIndex) + .MediaFile(1).NumberOfVolumeIdentifiers = 1; + +endfor; + + +//===================================================================== +// +// Volume identifiers +// +//===================================================================== + +MediaDefinition.Device(1).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume1; +MediaDefinition.Device(2).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume2; +MediaDefinition.Device(3).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume3; +MediaDefinition.Device(4).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume4; +MediaDefinition.Device(5).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume5; +MediaDefinition.Device(6).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume6; + +MediaDefinition.Device(7).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume7; +MediaDefinition.Device(8).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume8; +MediaDefinition.Device(9).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume9; +MediaDefinition.Device(10).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume10; +MediaDefinition.Device(11).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume11; +MediaDefinition.Device(12).MediaFile(1).VolumeIdentifier(1).VolumeIdentifier = pVolume12; + + +//===================================================================== +// +// Create MEDDFN +// +//===================================================================== + +clear Error; + +MD_CreateMediaDefinition( + MediaDefinition : + Error); + +if Error.HasError; + + dsply ('MEDDFN creation failed: ' + + Error.MessageID); + + dsply Error.MessageData; + +else; + + dsply 'MEDDFN created successfully'; + +endif; + +*inlr = *on; +return;