diff --git a/meddfnprs.rpgle b/meddfnprs.rpgle index 79b82f3..05ba48b 100644 --- a/meddfnprs.rpgle +++ b/meddfnprs.rpgle @@ -20,6 +20,94 @@ ctl-opt +dcl-pr MD_ParseRetrieveBuffer; + + ReceiverBuffer + char(32767) const + options(*varsize); + + MediaDefinition + likeds(MD_MediaDefinition_T); + +end-pr; + + + +//===================================================================== +// +// MD_ParseRetrieveBuffer +// +// Parses a retrieved MEDDFN buffer. +// +// Currently supported: +// TAPE0200 header +// +//===================================================================== + +dcl-proc MD_ParseRetrieveBuffer; + + dcl-pi *n; + + ReceiverBuffer + char(32767) const + options(*varsize); + + MediaDefinition + likeds(MD_MediaDefinition_T); + + end-pi; + + + dcl-ds HeaderBuffer + char(%size(MD_Tape0200Header_T)); + + dcl-ds Header + likeds(MD_Tape0200Header_T) + overlay(HeaderBuffer); + + + //--------------------------------------------------------------- + // Initialize result + //--------------------------------------------------------------- + + clear MediaDefinition; + + + //--------------------------------------------------------------- + // Copy TAPE0200 header + //--------------------------------------------------------------- + + HeaderBuffer = + %subst( + ReceiverBuffer : + 1 : + %size(MD_Tape0200Header_T)); + + + //--------------------------------------------------------------- + // Header -> Media Definition + //--------------------------------------------------------------- + + MediaDefinition.MaximumParallelResources = + Header.MaximumParallelDeviceResources; + + MediaDefinition.MinimumParallelResources = + Header.MinimumParallelDeviceResources; + + MediaDefinition.NumberOfDevices = + Header.NumberOfDeviceDefinitions; + + MediaDefinition.DeviceAllocation = + Header.DeviceAllocation; + + MediaDefinition.SaveFormat = + Header.SaveFormat; + +end-proc; + + + + //===================================================================== // // MD_RetrieveMediaDefinition