я новичок в as400 dds. может ли кто-нибудь сказать мне функцию для получения точного заданного значения. Например, почтовый индекс состоит из 6 цифр. если пользователь не вводит значение меньше 6, должно появиться сообщение об ошибке. заранее спасибо
функция as400 dds для ограничения точного заданного значения
Ответы (3)
Вам также потребуется ключевое слово DSPATR(MDT). Из руководства DDS для опции ME ключевого слова CHECK:
Этот код указывает, что в поле должен быть введен как минимум 1 символ данных (допустим пробел). Обратите внимание, что если ни одно поле, отображаемое в данный момент на дисплее, не было изменено, дисплейная станция не применяет обязательный ввод. Чтобы принудительно ввести обязательный ввод, укажите DSPATR(MDT) по крайней мере для одного поля в каждой записи на дисплее. Для всех остальных полей в записи применяется CHECK(ME). Однако, поскольку устройство не может определить, ввел ли пользователь данные в поле как с DSPATR(MDT), так и с CHECK(ME), следует также указать DSPATR(ND), чтобы это поле не отображалось.
Попробуйте что-то вроде этого:
A ZIP 6Y 0I 17 4CHECK( ME MF )
Если это не то, что вам нужно, отредактируйте свой вопрос и добавьте детали.
Любое из следующих двух определений поля примера может помочь осуществить то, что было предпринято для выражения. В любом случае можно ввести\отобразить на экране значение, содержащее менее шести цифр, но результат для программы всегда будет шестизначным [с выравниванием по правому краю, с заполнением нулями слева]:
A ZIPD 6D00B 9 9CHECK( ME MF FE )
A ZIPDRZ 6D00B 13 9CHECK( ME RZ FE )
Хотя спецификация Right-Adjust Zero-Fill CHECK (RZ) является необязательной, эта спецификация гарантирует, что переформатирование числа будет видно из заполнения нулями, когда используется Field Exit [но, конечно, Field Exit CHECK-спецификация (FE) также является необязательным, но поощрение его использования делает эффект правого \ нуля более заметным]. FWiW спецификация Must-Fill CHECK (MF), по-видимому, не имеет никакого эффекта [для поля числового ввода; ничего, что было очевидно в моих тестах].