任何人都可以提供這些有趣的使用示例嗎?程序指針RPGLE(PROCPTR)
0
A
回答
1
jjujuma,
對於您可以使用它來實現像畫一些面向對象的風格程序一個簡單的例子。通過將Circle_Draw或Square_Draw的適當%PADDR分配給Draw過程指針,您可以爲Square的Circle或Square_Draw過程調用Circle_Draw過程。當調用Draw程序指針時,你隱藏你正在調用的程序(Circle_Draw或Square_Draw)。
0
1
對於一個實際的例子,這可以在實現回調時使用。常見的回調函數可以在C的qsort()函數中找到。是的,您可以從ILERPG中調用它。
的C
規範的qsort()是:
#include <stdlib.h>
void qsort(void *base, size_t num, size_t width,
int(*compare)(const void *key, const void *element));
的RPGLE
原型看起來像:
dcl-pr qsort ExtName('qsort');
array Pointer value;
num Uns(10) value;
width Uns(10) value;
compare Pointer(*proc) value;
end-pr;
下面是一個使用快速排序(一個簡單的程序):
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
相關問題
- 1. AS400 RPGLE程序
- 2. 如何在RPGLE中使用指針調用過程
- 3. 指針程序
- 4. C程序調用指針的指針
- 5. 處理指針,而在rpgle更新鍵值
- 6. rpgle程序的Post方法webservice調用
- 7. 從rpgle程序返回字符串
- 8. 指針程序的輸出
- 9. 指針子程序在FORTRAN
- 10. RPGLE程序/程序中的原型和接口
- 11. 排序使用程序指針
- 12. 指針程序混亂(c編程)
- 13. 將指針數組排序到指針
- 14. 指針線程
- 15. 關聯程序/指令指針(RIP)和基地/幀指針(RBP)之間的Linux
- 16. 指向過程的指針
- 17. 基於指針的程序的輸出
- 18. 用指針和數組調試程序
- 19. 互操作程序集指針長度
- 20. 應用程序空指針異常
- 21. 程序中的空指針異常
- 22. C程序 - 取消引用指針
- 23. C#初始化程序空指針
- 24. 關於指針短C++程序
- 25. 在程序中實現指針
- 26. 指針在程序中的誤導
- 27. 應用程序類空指針異常
- 28. JSON程序中的空指針異常
- 29. Android ShareAction提供程序空指針
- 30. QListWidgetItem指針導致程序崩潰
這個問題很混亂。你能否澄清你在找什麼? – 2009-04-16 19:18:12