如何解决编译器因 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。