15.23.1 単純なデータ入力プログラム

データ入力プログラムに使うごく簡単なアプリケーション・テンプレート例を以下に示します。
/ ===================================================  / / ASK FOR THE "WORD"  ask the user a question./ / Note the prompt text and extended prompt text that   / / can be entered on the command.More detailed help    / / can also be entered in HELP panels for the template./ / Note the special format of the ANSWER parameter./ / ==================================================== / @@QUESTION PROMPT('Supply word to describe+             WHAT this data entry program wo+            rks with') ANSWER(@@CANS001) EX+            TEND('The word you specify here+            is used to build messages that +            appear on the' 'data entry scre+            en panel.You should use ONE wo+            rd only, use lowercase' 'charac+            ters only and only use singular+             form (eg:"customer", "employee+            "' '"order").Do NOT use more t+            han 18 characters in your answe+            r.''Use the HELP function key +            for more information and exampl+            es.')HELPIDS (HELP010 HELP020 +            HELP030 HELP040 HELP050) / ====================================================/ / GET NAME OF JUST ONE PHYSICAL FILE                  / / Ask the user to enter the name of a single primary  / / file used for data entry.Note the prompt text      / / and extended prompt text that can be entered on the / / command.More detailed help can also be entered on  / / HELP panels for the template./ / ====================================================/ @@GET_FILS TO(1) PROMPT('Enter name of PHYSICAL             file to be used by this template') E+            XTEND('The file name may be specifie+            d partially (to cause a partial' 'li+            st of available files to be displaye+            d), or in left blank (to cause a ful+            l list' 'of available files to be di+            splayed).When a list of files is d+            isplayed,' 'the file required may be+             selected from the list.' ' ' 'Use t+            he HELP function key for more detail+            s about this template and' 'examples+            of the type of RDML applications it +            can create.')HELPIDS(HELP010 HELP02+            0 HELP030 HELP040 HELP050) / =============================================== / / GET FIELDS OF CHOSEN FILE INTO LIST 1           / / Note that all lists must be defined by an       / / @@CLR_LST command before being used in an       / / application template./ / =============================================== / @@CLR_LST  NUMBER(1) @@RTV_FLDS FROM_FILE(1) INTO_LST(1) / =============================================== / / GET KEYS OF CHOSEN FILE INTO LIST 2             / / =============================================== / @@CLR_LST  NUMBER(2) @@RTV_KEYS OF_FILE(1) INTO_LST(2) / ================================================= / / GET USER TO CHOOSE FIELDS TO APPEAR ON PANEL      / / AND PUT RESULTS INTO LIST 3                       / / Note how the keys of the file are used as a       / / force list to ensure all the fields are chosen./ / Note the column headings for the selection column / / and that sequence numbers are pre-filled on all   / / fields in the selection list.This allows fields  / / to be ordered in the desired sequence./ / ================================================= / @@CLR_LST  NUMBER(3) @@MAK_LSTS FROM_LSTS(1) FORCE_LSTS(2) INTO_LSTS+            ((3 'Fields to' 'Appear on' 'Entry P+            anel' SEQUENCE *ALL)) HELPIDS(HELP0+            10 HELP020 HELP030 HELP040 HELP050) / ============================================== / / GET USER TO CHOOSE FIELDS TO WORK WITHIN       / / PROGRAM AND PUT RESULTS INTO LIST 4            / / Note that this list only requires the user to  / / enter anynon-blank character to select a field./ / ===============================================/ @@CLR_LST  NUMBER(4) @@MAK_LSTS FROM_LSTS(1) INTO_LSTS((4 'Fields to ' '+            Work with  ''in Program ' *YESNO *NO)) H+             ELPIDS(HELP010 HELP020 HELP030 HELP040 H+            ELP050) / =================================================== / / MERGE FIELDS IN LIST 4 INTO LIST 3 AS HIDDEN       / / The fields selected as fields to be worked with in  / / the program are merged to list 3 with the *HIDDEN   / / attribute if not already selected in list 3 by the  / / previous @@MAK_LSTS command./ / =================================================== / @@MRG_LSTS FROM_LSTS((4 HIDDEN)) INTO_LST(3) / =============================================== / / ASK HOW THE PANEL IS TO BE DESIGNED             / / =============================================== / @@QUESTION PROMPT('Design fields on data entry+             panel DOWN the screen or ACROSS the+             screen') ANSWER(@@CANS002) EXTEND('+            Reply DOWN or ACROSS only.''If you+            r data entry panel contains 17 (or +            less) fields, DOWN is the   ' 'reco+            mmended value.If your data entry p+             anel contains more than 17' 'fields+            , ACROSS is the recommended value.'+            'Use the HELP function key for more+            information and examples.')LOWER(+            NO) VALUES(DOWN ACROSS) HELPIDS(HEL+            P010 HELP020 HELP030 HELP040 HELP05+            0) / ==================================================/ / GENERATE THE RDML PROGRAM                         / / The following code consists only of RDML that     / / will appear in the generated RDML program./ / Note the use of special @@ variables in the RDML  / / commands-these are substituted when the template / / is executed./ / ================================================= / @@COMMENT  'Function control options' FUNCTION   OPTIONS(NOMESSAGES *DEFERWRITE) @@COMMENT  'Group and field declarations' /                                                     / / The following command will not be accepted by the   / / CL syntax checker, it must be forced to be accepted / / as it will be quite valid when the special variable / / @@LST03 is relaced by the list 3 elements when      / / executing this template.Do not code                / / FIELDS((#@@LST03))as this will generate             / / an invalid RDML command.This error                 / / may also be true for other RDML commands.It        / / will be necessary to force these errors to          / / be accepted also (e.g. the DESIGN parameter of      / / the REQUEST command)                                / /                                                     / GROUP_BY   NAME(#PANELDATA) FIELDS(@@LST03) @@COMMENT  'Issue initial data entry message' MESSAGE    MSGID(DCU0010) MSGF(DC@M01) +            MSGDTA('''@@CANS001''') @@COMMENT  'Do data entry until terminated by +            EXIT or CANCEL' BEGIN_LOOP @@COMMENT  'Request user inputs or corrects details' REQUEST    FIELDS(#PANELDATA) DESIGN(@@CANS002)             IDENTIFY(LABEL) @@COMMENT  'Perform any program level validation here' BEGINCHECK ENDCHECK @@COMMENT  'Attempt to insert data into the data base' INSERT     FIELDS((#PANELDATA)) TO_FILE(@@FNAME01) @@COMMENT  'If okay, reset fields and issue accepted             message' CHANGE     FIELD(#PANELDATA) TO(*DEFAULT) MESSAGE    MSGID(DCU0011) MSGF(DC@M01) +            MSGDTA('''@@CANS001''') END_LOOP / =============================================== / / CLEAR ALL LISTS USED                            / / At the end of all application templates, it     / / is suggested that all work lists in the         / / template are cleared to delete all work records /  / from the database./ / =============================================== */ @@CLR_LST  NUMBER(1) LST  NUMBER(2) @@CLR_LST  NUMBER(3) @@CLR_LST  NUMBER(4)