Files
MEDDFN/meddfntstp.rpgle
T
2026-09-08 16:10:09 +02:00

675 lines
15 KiB
RPGLE

**FREE
//=====================================================================
//
// Program......: MEDDFNTSTP
//
// Description..: MEDDFN Builder / Parser Test Program
//
// Erstellen mit:
//
// CRTRPGMOD MODULE(GOSCH1/MEDDFNTSTP)
// SRCSTMF('/home/GOSCH/meddfn/meddfntstp.rpgle')
// OPTION(*EVENTF)
// DBGVIEW(*SOURCE)
// TGTRLS(*CURRENT)
//
// CRTPGM PGM(GOSCH1/MEDDFNTSTP)
// MODULE(GOSCH1/MEDDFNTSTP)
// BNDSRVPGM(GOSCH1/MEDDFNSRV)
// ACTGRP(*NEW)
// TGTRLS(*CURRENT)
//
//=====================================================================
ctl-opt
option(*srcstmt:*nodebugio);
/COPY './meddfn_h.rpgle'
/COPY './meddfnap_h.rpgle'
/COPY './meddfnpr.rpgle'
//=====================================================================
//
// Data
//
//=====================================================================
dcl-ds MediaDefinition
likeds(MD_MediaDefinition_T);
dcl-ds OriginalDefinition
likeds(MD_MediaDefinition_T);
//=====================================================================
//
// Prototypes
//
//=====================================================================
dcl-pr BuildTestDefinition;
end-pr;
//=====================================================================
//
// Main
//
//=====================================================================
BuildTestDefinition();
//---------------------------------------------------------------------
// Vorhandene MEDDFN löschen
//---------------------------------------------------------------------
dsply '----------------------------------------';
dsply 'MEDDFN Parser Test';
dsply '----------------------------------------';
dsply 'Deleting existing MEDDFN...';
monitor;
MD_DeleteMediaDefinition(
MediaDefinition);
dsply 'Delete completed';
on-error;
dsply 'No existing MEDDFN deleted';
endmon;
//---------------------------------------------------------------------
// MEDDFN erstellen
//---------------------------------------------------------------------
dsply 'Creating MEDDFN...';
MD_CreateMediaDefinition(
MediaDefinition);
dsply 'Create completed';
//---------------------------------------------------------------------
// Originaldefinition sichern
//---------------------------------------------------------------------
OriginalDefinition = MediaDefinition;
//---------------------------------------------------------------------
// MEDDFN lesen
//---------------------------------------------------------------------
dsply 'Retrieving MEDDFN...';
MD_RetrieveMediaDefinition(
MediaDefinition);
dsply 'Retrieve completed';
//=====================================================================
//
// Tests
//
// Compares the retrieved Media Definition with the original
// definition.
//
//=====================================================================
dcl-s DeviceIndex int(10);
dcl-s MediaIndex int(10);
dcl-s VolumeIndex int(10);
//=====================================================================
// General
//=====================================================================
dsply '----------------------------------------';
dsply 'Parser result';
dsply '----------------------------------------';
if MediaDefinition.MediaDefinitionName =
OriginalDefinition.MediaDefinitionName;
dsply 'PASS MediaDefinitionName';
else;
dsply 'FAIL MediaDefinitionName';
endif;
if MediaDefinition.LibraryName =
OriginalDefinition.LibraryName;
dsply 'PASS LibraryName';
else;
dsply 'FAIL LibraryName';
endif;
if MediaDefinition.NumberOfDevices =
OriginalDefinition.NumberOfDevices;
dsply 'PASS NumberOfDevices';
else;
dsply 'FAIL NumberOfDevices';
endif;
if MediaDefinition.TextDescription =
OriginalDefinition.TextDescription;
dsply 'PASS TextDescription';
else;
dsply 'FAIL TextDescription';
endif;
if MediaDefinition.DeviceAllocation =
OriginalDefinition.DeviceAllocation;
dsply 'PASS DeviceAllocation';
else;
dsply 'FAIL DeviceAllocation';
endif;
if MediaDefinition.SaveFormat =
OriginalDefinition.SaveFormat;
dsply 'PASS SaveFormat';
else;
dsply 'FAIL SaveFormat';
endif;
if MediaDefinition.MaximumParallelResources =
OriginalDefinition.MaximumParallelResources;
dsply 'PASS MaximumParallelResources';
else;
dsply 'FAIL MaximumParallelResources';
endif;
if MediaDefinition.MinimumParallelResources =
OriginalDefinition.MinimumParallelResources;
dsply 'PASS MinimumParallelResources';
else;
dsply 'FAIL MinimumParallelResources';
endif;
//=====================================================================
// Devices
//=====================================================================
for DeviceIndex = 1
to OriginalDefinition.NumberOfDevices;
dsply '----------------------------------------';
dsply ('Device ' +
%char(DeviceIndex));
//---------------------------------------------------------------
// Device Name
//---------------------------------------------------------------
if MediaDefinition.Device(DeviceIndex).DeviceName =
OriginalDefinition.Device(DeviceIndex).DeviceName;
dsply ('PASS Device ' +
%char(DeviceIndex) +
' DeviceName');
else;
dsply ('FAIL Device ' +
%char(DeviceIndex) +
' DeviceName');
endif;
//---------------------------------------------------------------
// Number of Media Files
//---------------------------------------------------------------
if MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles =
OriginalDefinition.Device(DeviceIndex).NumberOfMediaFiles;
dsply ('PASS Device ' +
%char(DeviceIndex) +
' NumberOfMediaFiles');
else;
dsply ('FAIL Device ' +
%char(DeviceIndex) +
' NumberOfMediaFiles');
endif;
//=================================================================
// Media Files
//=================================================================
for MediaIndex = 1
to OriginalDefinition.Device(DeviceIndex).NumberOfMediaFiles;
dsply ('Media File ' +
%char(MediaIndex));
//-------------------------------------------------------------
// Sequence Number
//-------------------------------------------------------------
if MediaDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.SequenceNumber =
OriginalDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.SequenceNumber;
dsply ('PASS Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' SequenceNumber');
else;
dsply ('FAIL Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' SequenceNumber');
endif;
//-------------------------------------------------------------
// Starting Position
//-------------------------------------------------------------
if MediaDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.StartingPositionInFile =
OriginalDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.StartingPositionInFile;
dsply ('PASS Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' StartingPositionInFile');
else;
dsply ('FAIL Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' StartingPositionInFile');
endif;
//-------------------------------------------------------------
// Number of Volumes
//-------------------------------------------------------------
if MediaDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.NumberOfVolumeIdentifiers =
OriginalDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.NumberOfVolumeIdentifiers;
dsply ('PASS Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' NumberOfVolumes');
else;
dsply ('FAIL Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' NumberOfVolumes');
endif;
//=============================================================
// Volume Identifiers
//=============================================================
for VolumeIndex = 1
to OriginalDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.NumberOfVolumeIdentifiers;
if MediaDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.VolumeIdentifier(VolumeIndex)
.VolumeIdentifier =
OriginalDefinition.Device(DeviceIndex)
.MediaFile(MediaIndex)
.VolumeIdentifier(VolumeIndex)
.VolumeIdentifier;
dsply ('PASS Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' Volume ' +
%char(VolumeIndex));
else;
dsply ('FAIL Device ' +
%char(DeviceIndex) +
' Media File ' +
%char(MediaIndex) +
' Volume ' +
%char(VolumeIndex));
endif;
endfor;
endfor;
endfor;
//=====================================================================
// Test completed
//=====================================================================
dsply '----------------------------------------';
dsply 'Parser test completed';
dsply '----------------------------------------';
//=====================================================================
// End
//=====================================================================
*inlr = *on;
return;
//=====================================================================
//
// BuildTestDefinition
//
// Builds a TAPE0200 test definition with:
//
// Device 1
// Media File 1 -> 0 Volumes
// Media File 2 -> 1 Volume
// Media File 3 -> 3 Volumes
//
// Device 2
// Media File 1 -> 1 Volume
// Media File 2 -> 3 Volumes
//
//=====================================================================
dcl-proc BuildTestDefinition;
dcl-pi *n;
end-pi;
clear MediaDefinition;
//---------------------------------------------------------------
// General
//---------------------------------------------------------------
MediaDefinition.MediaDefinitionName =
'TEST0200X';
MediaDefinition.LibraryName =
'GOSCH1';
MediaDefinition.TextDescription =
'Test MEDDFN';
MediaDefinition.MaximumParallelResources =
2;
MediaDefinition.MinimumParallelResources =
2;
MediaDefinition.DeviceAllocation =
MD_DeviceAllocateAll;
MediaDefinition.SaveFormat =
MD_SaveFormatParallel;
MediaDefinition.NumberOfDevices =
2;
//=================================================================
// Device 1
//=================================================================
MediaDefinition.Device(1).DeviceName =
'TAPMLBBRMS';
MediaDefinition.Device(1).NumberOfMediaFiles =
3;
//---------------------------------------------------------------
// Device 1 / Media File 1
// 0 Volumes
//---------------------------------------------------------------
MediaDefinition.Device(1)
.MediaFile(1)
.SequenceNumber =
0;
MediaDefinition.Device(1)
.MediaFile(1)
.StartingPositionInFile =
*ALL'0';
MediaDefinition.Device(1)
.MediaFile(1)
.NumberOfVolumeIdentifiers =
0;
//---------------------------------------------------------------
// Device 1 / Media File 2
// 1 Volume
//---------------------------------------------------------------
MediaDefinition.Device(1)
.MediaFile(2)
.SequenceNumber =
1;
MediaDefinition.Device(1)
.MediaFile(2)
.StartingPositionInFile =
*ALL'1';
MediaDefinition.Device(1)
.MediaFile(2)
.NumberOfVolumeIdentifiers =
1;
MediaDefinition.Device(1)
.MediaFile(2)
.VolumeIdentifier(1)
.VolumeIdentifier =
'D1M2V1';
//---------------------------------------------------------------
// Device 1 / Media File 3
// 3 Volumes
//---------------------------------------------------------------
MediaDefinition.Device(1)
.MediaFile(3)
.SequenceNumber =
2;
MediaDefinition.Device(1)
.MediaFile(3)
.StartingPositionInFile =
*ALL'2';
MediaDefinition.Device(1)
.MediaFile(3)
.NumberOfVolumeIdentifiers =
3;
MediaDefinition.Device(1)
.MediaFile(3)
.VolumeIdentifier(1)
.VolumeIdentifier =
'D1M3V1';
MediaDefinition.Device(1)
.MediaFile(3)
.VolumeIdentifier(2)
.VolumeIdentifier =
'D1M3V2';
MediaDefinition.Device(1)
.MediaFile(3)
.VolumeIdentifier(3)
.VolumeIdentifier =
'D1M3V3';
//=================================================================
// Device 2
//=================================================================
MediaDefinition.Device(2).DeviceName =
'TAPMLBBRMS';
MediaDefinition.Device(2).NumberOfMediaFiles =
2;
//---------------------------------------------------------------
// Device 2 / Media File 1
// 1 Volume
//---------------------------------------------------------------
MediaDefinition.Device(2)
.MediaFile(1)
.SequenceNumber =
0;
MediaDefinition.Device(2)
.MediaFile(1)
.StartingPositionInFile =
*ALL'3';
MediaDefinition.Device(2)
.MediaFile(1)
.NumberOfVolumeIdentifiers =
1;
MediaDefinition.Device(2)
.MediaFile(1)
.VolumeIdentifier(1)
.VolumeIdentifier =
'D2M1V1';
//---------------------------------------------------------------
// Device 2 / Media File 2
// 3 Volumes
//---------------------------------------------------------------
MediaDefinition.Device(2)
.MediaFile(2)
.SequenceNumber =
1;
MediaDefinition.Device(2)
.MediaFile(2)
.StartingPositionInFile =
*ALL'4';
MediaDefinition.Device(2)
.MediaFile(2)
.NumberOfVolumeIdentifiers =
3;
MediaDefinition.Device(2)
.MediaFile(2)
.VolumeIdentifier(1)
.VolumeIdentifier =
'D2M2V1';
MediaDefinition.Device(2)
.MediaFile(2)
.VolumeIdentifier(2)
.VolumeIdentifier =
'D2M2V2';
MediaDefinition.Device(2)
.MediaFile(2)
.VolumeIdentifier(3)
.VolumeIdentifier =
'D2M2V3';
end-proc;