DSPATR (PR) в программе RPG для защиты поля - PullRequest
0 голосов
/ 09 марта 2012

Я занимаюсь разработкой программы RPG для IBM, разрабатывающей программное обеспечение

, что происходит, когда я создаю файл отображения с полем ввода

Я пытаюсь выполнить одну задачу.

Если они уже вводят все поля и отображается другая запись, я хочу защитить поле, чтобы они просто вводили значение, пока они не нажмут ввод

, но я не понимаю, как я могу использоватьДСПАТР (ПР) для защиты поля

Ответы [ 4 ]

2 голосов
/ 09 марта 2012

На зеленом экране программа RPG знает только о том, что на экране, когда вы нажимаете <enter> на вашем экране.Похоже, вы хотите защитить поле после того, как пользователь ввел в него данные.Я не думаю, что это возможно, если каждое поле не имеет CHECK(ER) на каждом поле.Это будет раздражать в зависимости от функции программы.Вручную, люди предпочитают просто продолжать печатать, и они точно запомнили, сколько вкладок и пробелов им нужно ввести для ввода данных.

1 голос
/ 10 марта 2012

Я нашел ответ на свой вопрос.

Для этого просто перейдите в свойства в конструкторе экрана> щелкните правой кнопкой мыши свойства и найдите ключевое слово protect, и это защитит весь экран для поля, которое они вводят, до тех пор, пока не будет нажата enter для снятия защиты.

Это также можно сделать, добавив DSPATR(PR) с индикатором и добавив его к RPG, чтобы включить индикатор для обязательного поля.

0 голосов
/ 16 марта 2017

Для учебной цели вы можете установить атрибуты отображения, так как ваш код RPG "backend", например, в вашем случае шестнадцатеричное значение кода для защиты (только для чтения) подано 'A0', посмотрите код:

В DDSSRC:

.....AAN01N02N03T.Nombre++++RLon++TPdBLínPosFunciones+++++++++++++++++++++++++++
 A* First declare the variable 
 A                REV1           1A  P
 A*
 A* then, after the display field in function limit you assign it
 A*
 A                FIELD01       14Y 2B 17 42EDTCDE(1)    
 A                                          DSPATR(&REV1)

В RPGSRC, просто установите или очистите, когда вам это нужно:

CL0N01Factor1+++++++Operac&ExtFactor2+++++++Resultado+++++Lon++D+MaMeIg....Comentarios+++++++++
C* 
C* Set the hex value in the QDDSSRC variable
C                       EVAL      REV2 = x'A0'
C*
C* Clear the variable
C                   CLEAR                   REV1              1

Слишком много гекса-кодов для многих измышлений, просто нужно посмотретьвокруг www:).

0 голосов
/ 12 января 2017

A SEL 1A B 11 2
A 99 DSPATR (ПК)

A 99 DSPATR (RI)

Когда вы отображаете поле на зеленом экране, вы EXFMT обычно для ввода-вывода. Здесь я сначала очистил бы поле SEL, а затем EXFMT формат записи из файла дисплея (DDS). Как только пользователь нажимает ENTER, я «включаю» индикатор 99. Я бы тогда EXFMT снова, чтобы отобразить экран. В примере, если * IN99 был * ON, курсор будет располагаться в поле SEL и отображать его. Вы можете сделать то же самое с защитой DSPATR (PR). В своем коде вы бы «выключили» индикатор, отобразив экран. Пользователь нажимает клавишу ВВОД, вы «включаете» индикатор и снова открываете экран.

В RPG вы можете использовать MOVE * ON * IN99.

или вы можете использовать SETON ........ 99.

или MOVE '1' * IN99.

В CLP вы можете использовать CHGVAR VAR (& IN99) VALUE ('1')

...