编译器因 qsort 失败

问题描述

我将创建绑定 RPG 程序 (CRTBNDRPG) 与示例程序一起使用

工作日志

Ownership of object QSORTR in QTEMP type *MODULE changed.       
DeFinition not found for symbol 'QSORT'.                        
Program QSORTR in library QTEMP not created.                    
Compilation Failed. Program QSORTR not created in library QTEMP.

代码

     H DFTACTGRP(*NO) BNDDIR('QC2LE')

     D qsort           PR                  ExtProc('qsort')
     D   base                          *   value
     D   num                         10U 0 value
     D   width                       10U 0 value
     D   compare                       *   procptr value

      ** Sort the array by DtlItem
     c                   callp     qsort(%addr(Order1): numitems:
     c                                %size(Order): %paddr('SORTBYITEM'))
     c                   For       idx= 1 to numitems
     c                   eval      tmpstr = order1(idx).DtlItem
     c                   Dsply                   tmpstr
     c                   Endfor
...

我从这里复制2003-12-09 如何於 RPG中 針對所定義的資料結構(DataStructure)排序?

解决方法

它应该可以工作。 jon paris article on qsort

这是代码中的文章:

sudo npm install 
npm run dev

编译:

** test0260r: sort data struct array using qsort.
h option(*srcstmt:*nodebugio)
h bnddir('QC2LE')

** --------------------------- test0260r ---------------------------
** test0260r: sort data struct array using qsort.
dtest0260r        pr                  extpgm('TEST0260R')

** --------------------------- qsort --------------------------------
d qsort           pr                  extproc('qsort')
d  dataStart                      *   value
d  elemCount                    10u 0 value
d  elemSize                     10u 0 value
d  compareFunc                    *   ProcPtr value

** --------------------------- test0260r ---------------------------
** test0260r: sort data struct array using qsort.
dtest0260r        pi

d pSeqProcedure   s               *   ProcPtr
d                                     Inz(%PAddr(SeqNameCityState))

** -------------------- customerData -----------------------
d customerData    ds                  Dim(1000) Qualified
d  name                         30a
d  address1                     40a
d  address2                     40a
d  city                         30a
d  state                         2a
d  zip                           5s 0

d customerCount   s             10i 0
 /free
      customerCount  = 50 ;

   qsort ( %Addr(customerData)
         : customerCount
         : %Size(customerData)
         : pSeqProcedure );

      *inlr       = '1' ;
      return ;
 /end-free


** ------------------- seqNameCityState -------------------------
p SeqNameCityState...
p                 b
d                 pi            10i 0
d elementA                            LikeDS(customerData)
d elementB                            LikeDS(customerData)

d high            s             10i 0 inz(1)
d low             s             10i 0 inz(-1)
d equal           s             10i 0 inz(0)
 /Free

   If elementA.state > elementB.state;
     Return HIGH;
   ElseIf elementA.state < elementB.state;
     Return LOW;
   ElseIf elementA.city > elementB.city;
     Return HIGH;
   ElseIf elementA.city < elementB.city;
     Return LOW;
   ElseIf elementA.name > elementB.name;
     Return HIGH;
   ElseIf elementA.name < elementB.name;
     Return LOW;
   Else;
     Return EQUAL;
   EndIf;

 /end-free
p                 e

CRTRPGMOD MODULE(TEST0260R) SRCFILE(QRPGLESRC) DBGVIEW(*ALL)   
CRTPGM PGM(TEST0260R) 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...