gpt4 book ai didi

ibm-midrange - RPGLE 中的过程指针 (PROCPTR)

转载 作者:行者123 更新时间:2023-12-05 09:25:34 27 4
gpt4 key购买 nike

谁能提供这些有趣的用法示例?

最佳答案

举个实际的例子,这个可以在实现回调的时候用到。常见的回调可以在 C 语言的 qsort() 函数中找到。是的,您可以从 ILERPG 中调用它。

qsort() 的 C 规范是:

#include <stdlib.h>
void qsort(void *base, size_t num, size_t width,
int(*compare)(const void *key, const void *element));

RPGLE 原型(prototype)看起来像:

dcl-pr qsort      ExtName('qsort');
array Pointer value;
num Uns(10) value;
width Uns(10) value;
compare Pointer(*proc) value;
end-pr;

这是一个使用 qsort() 的简单程序:

   ctl-opt DftActGrp(*No) Actgrp(*New);

dcl-pr qsort ExtProc('qsort');
array Pointer value;
num Uns(10) value;
width Uns(10) value;
compare Pointer(*Proc) value;
end-pr;

dcl-s strings Varchar(10) Dim(20);

strings(1) = 'Does';
strings(2) = 'this';
strings(3) = 'array';
strings(4) = 'sort';
strings(5) = 'properly?';

qsort(%addr(strings): 5: %size(strings): %paddr(compareStrings));

dsply strings(1);
dsply strings(2);
dsply strings(3);
dsply strings(4);
dsply strings(5);

return;

dcl-proc compareStrings;
dcl-pi *n Int(10);
key Like(strings);
element Like(strings);
end-pi;

dcl-s result Int(10);

if key < element;
result = -1;
elseif key = element;
result = 0;
else;
result = 1;
endif;

return result;
end-proc;

如果你运行它,输出将是:

DSPLY  array    
DSPLY properly?
DSPLY sort
DSPLY this
DSPLY Does

关于ibm-midrange - RPGLE 中的过程指针 (PROCPTR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com