midrange.com code scratchpad
Name:
Rick Chevalier
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
09/13/2011 07:15:53 pm
IP:
Logged
Description:
QLGSORT error code example
Code:
  1.       // Sort API
  2.      d SortFile        pr                  ExtPgm('QLGSORT')
  3.      d  RequestControlBlock...
  4.      d                               80a
  5.      d  InputDataBuffer...
  6.      d                                1a
  7.      d  OutputDataBuffer...
  8.      d                                1a
  9.      d  LengthOfOutputBuffer...
  10.      d                               10u 0
  11.      d  LengthOfReturnedData...
  12.      d                               10u 0
  13.      d  ErrorCode                   256a
  14.      d  ReturnedRecordsFeedback...
  15.      d                               20a
  16.      d  ReturnedRecordsFeedbackLen...
  17.      d                               10u 0
  18.  
  19.       // Request Control Block layout
  20.      d RequestControlBlockDS...
  21.      d                 ds                  Qualified
  22.      d  LenOfControlBlock...
  23.      d                               10u 0 Inz(%Size(RequestControlBlockDS))
  24.      d  TypeOfRequest                10u 0 Inz(1)
  25.      d  Reserved1                    10u 0 Inz
  26.      d  Options                      10u 0 Inz(4)
  27.      d  RecordLength                 10u 0 Inz(0)                               Use file rec length
  28.      d  RecordCount                  10u 0 Inz(0)
  29.      d  OffsetToKeyList...
  30.      d                               10u 0 Inz(77)
  31.      d  NumberOfKeys                 10u 0 Inz(2)
  32.      d  OffsetToNatLangInfo...
  33.      d                               10u 0 Inz
  34.      d  OffsetToInputFileList...
  35.      d                               10u 0 Inz
  36.      d  NumberOfInputFiles...
  37.      d                               10u 0 Inz(1)
  38.      d  OffsetToOutputFileList...
  39.      d                               10u 0 Inz
  40.      d  NumberOfOutputFiles...
  41.      d                               10u 0 Inz(1)
  42.      d  LengthOfKey                  10u 0 Inz(0)
  43.      d  LengthOfNatLangInfo...
  44.      d                               10u 0 Inz(0)
  45.      d  LengthOfInputFileEntry...
  46.      d                               10u 0 Inz(30)
  47.      d  LengthOfOutputFileEntry...
  48.      d                               10u 0 Inz(30)
  49.      d  OffsetToNullByteMap...
  50.      d                               10u 0 Inz(0)
  51.      d  OffsetToVarRecInfo...
  52.      d                               10u 0 Inz(0)
  53.      d  Reserved2                    10u 0 Inz
  54.      d  KeyListEntries...
  55.      d                                     LikeDS(KeyListEntriesDS) Dim(2)
  56.      d  InputFileList...
  57.      d                                     LikeDS(InputFileListDS)
  58.      d  OutputFileList...
  59.      d                                     LikeDS(OutputFileListDS)
  60.  
  61.       // Key list entries
  62.      d KeyListEntriesDS...
  63.      d                 ds                  Template Qualified
  64.      d  KeyStartPos                  10u 0
  65.      d  KeySize                      10u 0
  66.      d  KeyDataType                  10u 0
  67.      d  KeySortOrder                 10u 0
  68.      d* KeyOrdinalPos                10u 0
  69.  
  70.       // Input file list
  71.      d InputFileListDS...
  72.      d                 ds                  Template Qualified
  73.      d  FileName                     20a
  74.      d  MemberName                   10a
  75.      d  VarLenRec                    10u 0
  76.      d  NullCapable                  10u 0
  77.  
  78.       // Output file list
  79.      d OutputFileListDS...
  80.      d                 ds                  Template Qualified
  81.      d  FileName                     20a
  82.      d  MemberName                   10a
  83.      d  VarLenRec                    10u 0
  84.      d  NullCapable                  10u 0
  85.  
  86.       // Additional sort API parameters
  87.      d InputDataBuffer...
  88.      d                 s              1a
  89.      d OutputDataBuffer...
  90.      d                 s              1a
  91.      d LengthOfOutputDataBuffer...
  92.      d                 s             10u 0 Inz(0)
  93.      d LengthOfReturnedData...
  94.      d                 s             10u 0 Inz(0)
  95.  
  96.       // Returned records feedback area
  97.      d ReturnedRecordsFeedback...
  98.      d                 ds                  Qualified
  99.      d  BytesAvailable...
  100.      d                               10u 0 Inz(8)
  101.      d  BytesReturned                10u 0 Inz
  102.      d  OffsetToRecordArray...
  103.      d                               10u 0 Inz
  104.      d  NumberOfOutputFiles...
  105.      d                               10u 0 Inz
  106.      d  ReturnedRecords...
  107.      d                               10u 0 Inz
  108.  
  109.      d  ReturnedRecordsFeedbackLen...
  110.      d                 s             10u 0        
  111.  
  112.       /Free
  113.  
  114.         // File type key field
  115.         RequestControlBlockDS.KeyListEntries(1).KeyStartPos = 13;
  116.         RequestControlBlockDS.KeyListEntries(1).KeySize = 1;
  117.         RequestControlBlockDS.KeyListEntries(1).KeyDataType = 6;
  118.         RequestControlBlockDS.KeyListEntries(1).KeySortOrder = 1;
  119.         // RequestControlBlockDS.KeyListEntries(1).KeyOrdinalPos = 1;
  120.  
  121.         // File name key field
  122.         RequestControlBlockDS.KeyListEntries(2).KeyStartPos = 61;
  123.         RequestControlBlockDS.KeyListEntries(2).KeySize = 128;
  124.         RequestControlBlockDS.KeyListEntries(2).KeyDataType = 6;
  125.         RequestControlBlockDS.KeyListEntries(2).KeySortOrder = 1;
  126.         // RequestControlBlockDS.KeyListEntries(2).KeyOrdinalPos = 2;
  127.  
  128.         RequestControlBlockDS.LengthOfKey =
  129.           %Size(KeyListEntriesDS) * %Elem(RequestControlBlockDS.KeyListEntries);
  130.  
  131.         // Input file name
  132.         RequestControlBlockDS.InputFileList.FileName =
  133.           ImageControlDS.DirListLib + ImageControlDS.DirListTbl;
  134.         RequestControlBlockDS.InputFileList.MemberName =
  135.                  ImageControlDS.DirListMbr;
  136.         RequestControlBlockDS.InputFileList.VarLenRec = 0;
  137.         RequestControlBlockDS.InputFileList.NullCapable = 0;
  138.  
  139.         // Output file name
  140.         RequestControlBlockDS.OutputFileList.FileName =
  141.                  ImageControlDS.SortLib + ImageControlDS.SortTable;
  142.         RequestControlBlockDS.OutputFileList.MemberName =
  143.                  ImageControlDS.SortMember;
  144.         RequestControlBlockDS.OutputFileList.VarLenRec = 0;
  145.         RequestControlBlockDS.OutputFileList.NullCapable = 0;
  146.  
  147.         // Sort the image work file
  148.         RequestControlBlockDS.OffsetToInputFileList =
  149.                  80 + RequestControlBlockDS.LengthOfKey;
  150.         RequestControlBlockDS.OffsetToOutputFileList =
  151.                  80 + RequestControlBlockDS.LengthOfKey +
  152.                  %Size(InputFileListDS);
  153.         apiError.BytesProvided = 0;
  154.         SortFile(RequestControlBlockDS :InputDataBuffer :OutputDataBuffer
  155.                 :LengthOfOutputDataBuffer :LengthOfReturnedData
  156.                 :apiError :ReturnedRecordsFeedback :ReturnedRecordsFeedbackLen);  
© 2004-2019 by midrange.com generated in 0.007s valid xhtml & css