я написал тетрадку процедуру (/ COPY), который имеет этот интерфейс:RPG - прохождение DS в качестве аргументов процедуры
DCL-PI *N VARCHAR(5000);
FILE_NAME CHAR(10) CONST;
DS_OLD VARCHAR(5000) CONST;
DS_NEW VARCHAR(5000) CONST;
END-PI;
Эта процедура называется этой программой выборки. FILE_DS_ * - внешние DS с определением PFFILE.
EXEC SQL SELECT * INTO :FILE_DS_OLD FROM PFFILE FETCH FIRST 1 ROW ONLY;
FILE_DS_NEW = FILE_DS_OLD;
FILE_DS_NEW.MYFIELD = 'MODIFIED';
RESULT = MYPROC('PFFILE':FILE_DS_OLD:FILE_DS_NEW);
поле Я модифицирования определяется как VARCHAR и его первоначальное значение, например:
'PEN IS ON THE TABLE'
Странно то, что в точке входа процедуры Я получил это значение в FILE_DS_NEW DS:
'MODIFIEDN THE TABLE'
Я сошел с ума, но не смог найти причину! Есть идеи?
Как DS определяются:
D FILE_DS_OLD E DS EXTNAME(PFFILE) QUALIFIED INZ
D FILE_DS_NEW E DS EXTNAME(PFFILE) QUALIFIED INZ
показать определения DS – Charles
@Charles Они просто закрыли систему. Я добавлю это завтра утром! У вас есть какая-то подсказка? Поле, о котором идет речь, должно быть определено как символ с ключевым словом VARYING. Это физический файл DDS, не SQL: – LppEdd
@Charles Если вы имели в виду локальные структуры данных, я добавил определение. – LppEdd