Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/ladtgub6_0040.htm]
現在地:

...

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)

...