Я хотел бы использовать созданное db2 / SQL длинное имя файла в программе RPG (OS V7.1 или v7.2).Я не могу создать таблицу с более чем 10 символами, используя устаревшие DDS, но Db2 / SQL позволяет мне создавать таблицы с длинными именами файлов.Пример:
CREATE TABLE QTEMP.VERYLONGNAMETABLE (COLUMN1 CHAR (30) NOT NULL
WITH DEFAULT)
RCDFMT VERYRC
Когда я выполняю работу с командой объекта, я вижу, что ОС распознает таблицу не как VERYLONGNAMETABLE, а как VERYL00001.
Если я пытаюсь использовать имя VERYL00001 в RPG, это работает:
DCL-F VERYL00001 DISK(*EXT) USAGE(*INPUT)'
, но это не удается, из-за ограничения в 10 символов RPG:
DCL-F VERYLONGNAMETABLE DISK(*EXT) USAGE(*INPUT)
, но я могусделать это, которое дает мне внутреннее длинное имя, но указывает на внешнее короткое имя из 10 символов.
DCL-F VERYLONGNAMETABLE DISK(*EXT) USAGE(*INPUT)
extfile('extdesc')
extdesc('VERYL00001') ;
Беспокойство вызывает то, что если я удаляю объект VERYL00001 и создаю новую таблицу с именем VERYLONGNAMETABLE_2, ОС дает мне то же самоеИмя VERYL00001.Это очень тревожно из-за путаницы, которую это может вызвать.
Я прочитал, что я могу сделать и использовать ALIAS.
CREATE ALIAS VERYLONG FOR VERYLONGNAMETABLE
, однако это создает файл DDMF, который, если я помню, из старойдни имели производительность и другие проблемы.
Я также могу переименовать (RNMOBJ) VERYL00001 в VERYLONG.Тогда, по крайней мере, у меня может быть длинное имя для пользователей, которые хотят запросить длинное имя, и все еще использовать в RPG, например,
DCL-F VERYLONGNAMETABLE DISK(*EXT) USAGE(*INPUT)
extfile('extdesc')
extdesc('VERYLONG') ;
или просто:
DCL-F VERYLONG DISK(*EXT) USAGE(*INPUT)
Я некак тот факт, что каждая таблица будет обозначаться двумя разными именами.Я уверен, что это вызовет путаницу.
Я что-то упустил здесь?