вызов процедуры делается через INVOKE таким способом
/* Устанавливаем количество параметров */
vCallObjHand:NUM-PARAMETERS = NUM-ENTRIES(params).
/* Параметры вызова - по списку */
DO i = 1 TO NUM-ENTRIES(params):
vCallObjHand:SET-PARAMETER (i,"CHAR",d_type[i],d_par[i]).
END.
/* Вызов */
vCallObjHand:INVOKE() NO-ERROR.
при этом если отследить через трассировку передачу параметров вижу следующее
Run 18f2menu_usr.p "_User 0x0000000000005fc4 4" это и есть вызов через INVOKE
параметры у процедуры такие 18f2menu_usr.p
DEF INPUT PARAM iClassCode AS CHAR NO-UNDO.
DEF INPUT PARAM iROWID AS ROWID NO-UNDO.
DEF INPUT PARAM iLevel AS INT64 NO-UNDO.
получается ROWID условно равен 0x0000000000005fc4 ,
но запись по нему не находится добавил внутри процедуры еще один CALL с использованием параметра iROWID
GetSurrogate("_user", iROWID)
и вижу следующее
Func GetSurrogate in pp-db2l.p "_user 0x307830303030303030303030303035666334"
получено не то же значение что передавалось вверху
что то с преобразованием ?
подскажите, пожалуйста, что не так в данном коде.
передача ROWID через SET-PARAMETER
Re: передача ROWID через SET-PARAMETER
в общем то сам нашел ответ на свой вопрос.
действительно при передаче оно преобразовывается и принять его можно только через CHAR
действительно при передаче оно преобразовывается и принять его можно только через CHAR