diff --git a/meddfnprs.rpgle b/meddfnprs.rpgle index 48214bb..ccbd519 100644 --- a/meddfnprs.rpgle +++ b/meddfnprs.rpgle @@ -9,24 +9,24 @@ // //========================================================================== - ctl-opt +ctl-opt option(*srcstmt:*nodebugio) nomain; - /COPY './meddfn_h.rpgle' - /COPY './meddfnap_h.rpgle' +/COPY './meddfn_h.rpgle' +/COPY './meddfnap_h.rpgle' // /COPY GOSCH1/MEDDFN,MEDDFN_H // /COPY GOSCH1/MEDDFN,MEDDFNAP_H - dcl-pr MD_ParseRetrieveBuffer; +dcl-pr MD_ParseRetrieveBuffer; - ReceiverBuffer + ReceiverBuffer char(32767) const options(*varsize); - MediaDefinition + MediaDefinition likeds(MD_MediaDefinition_T); - end-pr; +end-pr; //===================================================================== // @@ -40,43 +40,43 @@ // //===================================================================== - dcl-proc MD_ParseRetrieveBuffer; +dcl-proc MD_ParseRetrieveBuffer; - dcl-pi *n; + dcl-pi *n; - ReceiverBuffer + ReceiverBuffer char(32767) const options(*varsize); - MediaDefinition + MediaDefinition likeds(MD_MediaDefinition_T); - end-pi; + end-pi; - dcl-ds Header + dcl-ds Header likeds(MD_Tape0200Header_T); - dcl-ds Device + dcl-ds Device likeds(MD_Tape0200DeviceDefinition_T); - dcl-ds MediaFile + dcl-ds MediaFile likeds(MD_Tape0200MediaFileDefinition_T); - dcl-s MediaOffset int(10); + dcl-s MediaOffset int(10); - dcl-s DeviceOffset int(10); - dcl-s DeviceIndex int(10); + dcl-s DeviceOffset int(10); + dcl-s DeviceIndex int(10); //--------------------------------------------------------------- // Initialize result //--------------------------------------------------------------- - clear MediaDefinition; + clear MediaDefinition; //--------------------------------------------------------------- // TAPE0200 Header //--------------------------------------------------------------- - Header = + Header = %subst( ReceiverBuffer : 1 : @@ -86,57 +86,57 @@ // Header -> Media Definition //--------------------------------------------------------------- - MediaDefinition.MaximumParallelResources = + MediaDefinition.MaximumParallelResources = Header.MaximumParallelDeviceResources; - MediaDefinition.MinimumParallelResources = + MediaDefinition.MinimumParallelResources = Header.MinimumParallelDeviceResources; - MediaDefinition.NumberOfDevices = + MediaDefinition.NumberOfDevices = Header.NumberOfDeviceDefinitions; - MediaDefinition.DeviceAllocation = + MediaDefinition.DeviceAllocation = Header.DeviceAllocation; - MediaDefinition.SaveFormat = + MediaDefinition.SaveFormat = Header.SaveFormat; //--------------------------------------------------------------- // Device Definitions //--------------------------------------------------------------- - DeviceOffset = + DeviceOffset = Header.OffsetToFirstDeviceDefinition; - for DeviceIndex = 1 + for DeviceIndex = 1 to Header.NumberOfDeviceDefinitions; - Device = + Device = %subst( ReceiverBuffer : DeviceOffset + 1 : %size(Device)); - + //------------------------------------------------------------ // Device -> Media Definition //------------------------------------------------------------ - MediaDefinition.Device(DeviceIndex).DeviceName = + MediaDefinition.Device(DeviceIndex).DeviceName = Device.DeviceName; - MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles = + MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles = Device.NumberOfMediaFileDefinitions; //--------------------------------------------------------------- // First Media File //--------------------------------------------------------------- - if Device.NumberOfMediaFileDefinitions > 0; + if Device.NumberOfMediaFileDefinitions > 0; - MediaOffset = + MediaOffset = Device.OffsetToFirstMediaFileDefinition; - MediaFile = + MediaFile = %subst( ReceiverBuffer : MediaOffset + 1 : @@ -146,33 +146,33 @@ // Media File -> Media Definition //------------------------------------------------------------ - MediaDefinition.Device(DeviceIndex) + MediaDefinition.Device(DeviceIndex) .MediaFile(1) .SequenceNumber = MediaFile.SequenceNumber; - MediaDefinition.Device(DeviceIndex) + MediaDefinition.Device(DeviceIndex) .MediaFile(1) .StartingPositionInFile = MediaFile.StartingPositionInFile; - MediaDefinition.Device(DeviceIndex) + MediaDefinition.Device(DeviceIndex) .MediaFile(1) .NumberOfVolumeIdentifiers = MediaFile.NumberOfVolumeIdentifiers; - endif; + endif; //------------------------------------------------------------ // Next device //------------------------------------------------------------ - if Device.OffsetToNextDeviceDefinition > 0; + if Device.OffsetToNextDeviceDefinition > 0; - DeviceOffset += + DeviceOffset += Device.OffsetToNextDeviceDefinition; - endif; - endfor; - end-proc; + endif; + endfor; +end-proc; //===================================================================== // @@ -182,51 +182,51 @@ // //===================================================================== - dcl-proc MD_RetrieveMediaDefinition export; +dcl-proc MD_RetrieveMediaDefinition export; - dcl-pi *n; + dcl-pi *n; - MediaDefinition + MediaDefinition likeds(MD_MediaDefinition_T); - end-pi; + end-pi; - dcl-ds QualifiedObject + dcl-ds QualifiedObject likeds(MD_QualifiedObjectName_T); - dcl-ds Receiver + dcl-ds Receiver likeds(MD_ApiReceiverBuffer_T); - dcl-ds ApiError + dcl-ds ApiError likeds(MD_APIError_T); - dcl-s ReceiverLength int(10); + dcl-s ReceiverLength int(10); //--------------------------------------------------------------- // Qualified media definition name //--------------------------------------------------------------- - QualifiedObject.ObjectName = + QualifiedObject.ObjectName = MediaDefinition.MediaDefinitionName; - QualifiedObject.LibraryName = + QualifiedObject.LibraryName = MediaDefinition.LibraryName; //--------------------------------------------------------------- // Initialize receiver buffer and error structure //--------------------------------------------------------------- - clear Receiver; - clear ApiError; + clear Receiver; + clear ApiError; - ApiError.BytesProvided = + ApiError.BytesProvided = %size(ApiError); - ReceiverLength = %size(Receiver.Data); + ReceiverLength = %size(Receiver.Data); //--------------------------------------------------------------- // Retrieve TAPE0200 definition //--------------------------------------------------------------- - QSRRTVMD( + QSRRTVMD( QualifiedObject : Receiver.Data : ReceiverLength : @@ -237,10 +237,10 @@ // Check API error //--------------------------------------------------------------- - if ApiError.BytesAvailable > 0; + if ApiError.BytesAvailable > 0; // zun�chst nur Fehler zur�ckgeben/anzeigen - endif; + endif; // MD_CheckApiError(ApiError); - end-proc; \ No newline at end of file +end-proc; \ No newline at end of file