Function SET178T Prompt (& maintain) Device Type

LANSA

Function SET178T Prompt (& maintain) Device Type

********** COMMENT(=======================================================);
********** COMMENT(Process ........: SET_178);
********** COMMENT(Function .......: SET178V);
********** COMMENT(Created on .....: 03/03/00 at 13:00:02);
********** COMMENT(Description ....: DEVICE TYPE Prompt & Maintain);
********** COMMENT(Full Description: The purpose of this function is to);
********** COMMENT(maintain and allow prompting of the DEVICE TYPE file);
********** COMMENT(used in the static page computer products example);
********** COMMENT();
********** COMMENT(Disclaimer: The following material is supplied as);
********** COMMENT(sample material only. No warranty concerning the);
********** COMMENT(material or its use in any way whatsoever is);
********** COMMENT(expressed or implied.);
********** COMMENT();
********** COMMENT(Minimum LANSA release: 8.0);
********** COMMENT();
********** COMMENT(=======================================================);
FUNCTION OPTIONS(*DEFERWRITE *DIRECT *CLOSE_DISPLAY);
********** COMMENT(Options, work variables, conditions and working lists);
DEF_LIST NAME(#S_LSTDEVT) FIELDS(#S_178DVTP) SEL_ENTRY(#LISTENTRY);
********** COMMENT(=======================================================);
********** COMMENT(PROGRAM MAINLINE);
********** COMMENT(=======================================================);
DEF_COND NAME(*AS400) COND('*CPUTYPE = AS400');
IF COND(*AS400);
ELSE;
MESSAGE MSGTXT('Not available on PC');
MENU;
ENDIF;
BEGIN_LOOP;
********** COMMENT(Build list for display in window);
SET_MODE TO(*DISPLAY);
CLR_LIST NAMED(#S_LSTDEVT);
SELECT FIELDS(#S_LSTDEVT) FROM_FILE(SETDEV);
ADD_ENTRY TO_LIST(#S_LSTDEVT);
ENDSELECT;
********** COMMENT(Display window until CANCEL or entry selected);
POP_UP DESIGN(*DOWN) DOWN_SEP(001) ACROSS_SEP(001) AT_LOC(004 003) WITH_SIZE(075 011) PANEL_TITL('DEVICE TYPE Prompt') BROWSELIST(#S_LSTDEVT) EXIT_KEY(*NO) ADD_KEY(*YES) PROMPT_KEY(*NO) USER_KEYS((21 'Change' *NEXT *NONE)(22 'Delete')) CURSOR_LOC(*ATFIELD #S_178DVTP);
********** COMMENT();
IF COND('(#LISTENTRY *GT 0) *OR (#IO$KEY *EQ ''06'')');
IF COND('#LISTENTRY *GT 0');
GET_ENTRY NUMBER(#LISTENTRY) FROM_LIST(#S_LSTDEVT);
ENDIF;
********** COMMENT();
CASE OF_FIELD(#IO$KEY);
********** COMMENT(When the ADD key is used);
WHEN VALUE_IS('= ''06''');
EXECUTE SUBROUTINE(ADD$DATA);
********** COMMENT(When the CHANGE key is used);
WHEN VALUE_IS('= ''21''');
EXECUTE SUBROUTINE(WORK$DATA) WITH_PARMS(CHG);
********** COMMENT(When the DELETE key is used);
WHEN VALUE_IS('= ''22''');
EXECUTE SUBROUTINE(WORK$DATA) WITH_PARMS(DLT);
********** COMMENT(When the user selects an entry and presses enter);
WHEN VALUE_IS('= RA');
EXCHANGE FIELDS(#S_178DVTP);
MENU;
ENDCASE;
ENDIF;
END_LOOP;
********** COMMENT(=======================================================);
********** COMMENT(Subroutine ....: ADD$DATA);
********** COMMENT(Description ...: Add a new record to SETDEV);
********** COMMENT(=======================================================);
SUBROUTINE NAME(ADD$DATA);
********** COMMENT(Groups used in this subroutine);
GROUP_BY NAME(#ADD$DATA) FIELDS((#S_178DVTP)(#S_178DVPG)(#S_178DIMG));
********** COMMENT(Set up and display the ADD screen);
MESSAGE MSGID(DCU0010) MSGF(DC@M01) MSGDTA('DEVICE TYPE');
CHANGE FIELD(#ADD$DATA) TO(*DEFAULT);
SET_MODE TO(*ADD);
********** COMMENT(Do data entry until user exits with CANCEL key);
BEGIN_LOOP;
POP_UP FIELDS(#ADD$DATA) DESIGN(*DOWN) IDENTIFY(*DESC) AT_LOC(009 006) WITH_SIZE(*AUTO) PANEL_TITL('Create New DEVICE TYPE') EXIT_KEY(*NO) MENU_KEY(*YES *RETURN) PROMPT_KEY(*NO) CURSOR_LOC(*ATFIELD #S_178DVTP);
INSERT FIELDS(#ADD$DATA) TO_FILE(SETDEV);
CHANGE FIELD(#ADD$DATA) TO(*DEFAULT);
MESSAGE MSGID(DCU0011) MSGF(DC@M01) MSGDTA('DEVICE TYPE');
END_LOOP;
ENDROUTINE;
********** COMMENT(=======================================================);
********** COMMENT(Subroutine ....: WORK$DATA);
********** COMMENT(Description ...: Work with detailed data from SETDEV);
********** COMMENT(=======================================================);
SUBROUTINE NAME(WORK$DATA) PARMS((#WORK$OPT));
********** COMMENT(Groups and work fields used in this subroutine);
DEFINE FIELD(#WORK$OPT) TYPE(*CHAR) LENGTH(003);
GROUP_BY NAME(#WORK$DATA) FIELDS((#S_178DVTP *OUT)(#S_178DVPG)(#S_178DIMG));
********** COMMENT(Fetch full record details from file SETDEV);
CHANGE FIELD(#WORK$DATA) TO(*NAVAIL);
GET_ENTRY NUMBER(#LISTENTRY) FROM_LIST(#S_LSTDEVT);
FETCH FIELDS(#WORK$DATA) FROM_FILE(SETDEV) WITH_KEY(#S_178DVTP);
IF_STATUS IS_NOT(*OKAY);
MESSAGE MSGID(DCU0016) MSGF(DC@M01) MSGDTA('DEVICE TYPE');
RETURN;
ENDIF;
********** COMMENT(Set screen to the correct mode);
CASE OF_FIELD(#WORK$OPT);
WHEN VALUE_IS('= CHG');
SET_MODE TO(*CHANGE);
WHEN VALUE_IS('= DLT');
SET_MODE TO(*DELETE);
MESSAGE MSGID(DCU0015) MSGF(DC@M01) MSGDTA('DEVICE TYPE');
OTHERWISE;
RETURN;
ENDCASE;
********** COMMENT(Display full record details);
POP_UP FIELDS(#WORK$DATA) DESIGN(*DOWN) IDENTIFY(*DESC) AT_LOC(009 006) WITH_SIZE(*AUTO) PANEL_TITL('Maintain DEVICE TYPEs') EXIT_KEY(*NO) MENU_KEY(*YES *RETURN) PROMPT_KEY(*NO) CURSOR_LOC(*ATFIELD #S_178DVPG);
IF_MODE IS(*CHANGE);
UPDATE FIELDS(#WORK$DATA) IN_FILE(SETDEV);
ENDIF;
IF_MODE IS(*DELETE);
DELETE FROM_FILE(SETDEV);
ENDIF;
ENDROUTINE;