![]() |
|
![]() |
| ClearFormOnAdd | DefineCommandLine | DefineCursorPosition | |
| DefineScroll | RecordEd | RecordEdH | RecordEdit |
| RecordEditH |
nul : constant character := character'val (0);
esc : constant character := character'val (27);
type Full_Character is array (1 .. 2) of character;
type Full_Character_Array is array (ModSys.S_Natural range <>) of Full_Character;
type Full_Character_Array_Ptr is access Full_Character_Array;
type PreCommandProcType is access
procedure (command : in out Full_Character);
pragma Convention
(WIN32,
PreCommandProcType);
type PreModifyProcType is access
procedure (Process : in character;
exitNo : in ModSys.S_Natural;
option : in out character);
pragma Convention
(WIN32,
PreModifyProcType);
type PostLocateProcType is access
procedure;
pragma Convention
(WIN32,
PostLocateProcType);
-- default valid keystrokes
defaultKeys : Full_Character_Array (1 .. 9) := ((ASCIIX.UpperE,
nul),
(esc,
nul),
(ASCIIX.UpperL,
nul),
(ASCIIX.UpperN,
nul),
(ASCIIX.UpperP,
nul),
(ASCIIX.UpperA,
nul),
(ASCIIX.UpperM,
nul),
(ASCIIX.UpperD,
nul),
(ASCIIX.Space,
nul));
procedure ClearFormOnAdd
(flag : in boolean);
--*
-- ClearFormOnAdd - Clear the form when add requested.
--
--
-- CALLING SEQUENCE -
--
-- ClearFormOnAdd (flag);
--
-- ENTRY -
--
-- flag : boolean
-- TRUE - Clear relation fields before requested data entry.
-- Default is TRUE;
--
procedure DefineCommandLine
(validkeys : in Full_Character_Array;
validNumber : in ModSys.S_Natural;
validStringI : in string;
Form : in string;
promptline : in string;
promptRow : in ModSys.S_Natural);
--*
-- DefineCommandLine - Define command line and valid keystrokes.
--
-- This procedure establishes the command line or form to display and the
-- valid keys that can be entered.
--
-- CALLING SEQUENCE -
--
-- DefineCommandLine (validkeys, validNumber, validStringI, form,
-- promptline, promptRow);
--
-- ENTRY -
--
-- validkeys : Full_Character_Array
-- An array of valid keystrokes that the user can enter. The first
-- nine are order-dependent on action and default as follows -
--
-- 1 - ('E', nul) Exit
-- 2 - (esc, nul) Exit
-- 3 - ('L', nul) Locate
-- 4 - ('N', nul) Next
-- 5 - ('P', nul) Previous
-- 6 - ('A', nul) Add
-- 7 - ('M', nul) Modify
-- 8 - ('D', nul) Delete
-- 9 - (' ', nul) do nothing
--
-- Up to 11 other keystrokes can be defined. To invalidate a
-- standard function enter a (nul, nul) in the proper position.
--
-- validNumber : ModSys.S_Natural16
-- Number of commands in the validKey array.
--
-- validStringI : string
-- Up to 20-character string displayed when an invalid key is pressed.
-- Default is "ELNPAMD".
--
-- form : string
-- Form name to display for command prompt. If null string, prompt line
-- will be used.
--
-- promptline : string
-- Up to 80-character string written on line 24 for command prompt. Only
-- used if form not defined. If null string and no form, then no prompt
-- is given.
--
-- promptRow : ModSys.S_Natural
-- Row to place the prompt line on. (1..25);
--
procedure DefineCursorPosition
(row : in ModSys.S_Natural;
col : in ModSys.S_Natural);
--*
-- DefineCursorPosition - Row & col where cursor will await command.
--
-- CALLING SEQUENCE -
--
-- DefineCursorPosition (row, col);
--
-- ENTRY -
--
-- row : ModSys.S_Natural
-- row number (1..25) default = 24.
--
-- col : ModSys.S_Natural
-- column number (1..80) default = 80.
--
procedure DefineScroll
(validkeys : in Full_Character_Array_Ptr;
validNumber : in ModSys.S_Natural;
validStringI : in string;
Form : in string;
formRelI : in string;
formFieldI : in string;
formatI : in string);
--*
-- DefineScroll - Define scroll format and valid keystrokes.
--
-- This procedure establishes a scroll screen and format to use a
-- variable input procedure to scroll through the data. Pressing
-- any valid command key will begin the editor process.
--
-- CALLING SEQUENCE -
--
-- DefineScroll (validkeys, validNumber, validStringI, form, formRelI,
-- formFieldI, formatI);
--
-- ENTRY -
--
-- validkeys : Full_Character_Array
-- An array of valid keystrokes that the user can enter. The
-- first nine are order dependent on action and default as follows -
--
-- 1 - ('E', nul) Exit
-- 2 - (esc, nul) Exit
-- 3 - ('L', nul) Locate
-- 4 - (nul, nul) Next Next and previous have no meaning
-- 6 - ('A', nul) Add
-- 7 - ('M', nul) Modify
-- 8 - ('D', nul) Delete
-- 9 - (' ', nul) do nothing
--
-- Up to 11 other keystrokes can be defined. To invalidate a
-- standard function enter a (nul, nul) in the proper position.
--
-- validNumber : ModSys.S_Natural16
-- Number of commands in the validKey array.
--
-- validStringI : string
-- Up to 20-character string displayed when an invalid key is pressed.
-- Default "ELNPAMD".
--
-- form : string
-- Form name to display the variable list.
--
-- formRelI : string
-- Relation name of variable field on form.
--
-- formFieldI : string
-- Field name of variable field on form.
--
-- formatI : string
-- Format of fields to be presented in each highlighted field on the form.
-- Each field or literal string is presented as a pair (the name or literal
-- and the location in the highlighted field (1..n)). For example -
--
-- format := "field1,1,'---',12,field2,5";
--
procedure RecordEdit
(FormName : in string;
RelationName : in string;
KeyFieldName : in string);
--*
-- RecordEdit - Edit a relation's records.
--
--
-- This procedure allows editing of a relations records. Functions
-- include locating, finding the next record, finding the previous
-- record, adding a record, modifying an existing record, and deleting
-- record.
--
-- Commands processed in this procedure include the following (all other
-- responses are invalid).
--
-- 'A'dd 'N'ext
-- 'D'elete 'M'odify
-- 'E'xit 'P'revious
-- 'L'ocate esc Exit
--
-- CALLING SEQUENCE -
--
-- RecordEdit (formName, relationName, keyFieldName);
--
-- ENTRY -
--
-- formName : string
-- Name of form used for editing
--
-- relationName : string
-- Name of record to be edited
--
-- keyFieldName : string
-- Name of primary keyed field within the relation being edited that
-- uniquely identifies a record. An entry field in the form must exist
-- for this field. If the primary field is concatenated, the fields which
-- are components of that field must have entry fields on the form.
--
-- EXAMPLE -
--
-- with MultSage;
-- with EditLib;
--
-- procedure Test is
-- begin
-- MultSage.OpenSystem ("Test.dfl",3,3,3000);
-- MSageLib.RecordEdit ("MyForm","MyRel","MyFld");
-- MultSage.CloseSystem;
-- end Test;
--
procedure RecordEd
(FormName : in string;
RelationName : in string;
KeyFieldName : in string;
PreCommand : in PreCommandProcType;
PreModify : in PreModifyProcType;
PostLoc : in PostLocateProcType);
--*
-- RecordEd - Edit a relation's records.
--
--
-- This procedure allows editing of a relations records. Functions
-- include locating, finding the next record, finding the previous
-- record, adding a record, modifying an existing record, and deleting
-- record.
--
-- Commands processed in this procedure include the following (all other
-- responses are invalid).
--
-- 'A'dd 'N'ext
-- 'D'elete 'M'odify
-- 'E'xit 'P'revious
-- 'L'ocate esc Exit
--
-- This procedure allows the programmer to execute three variable
-- procedures which are supplied at the time of instantiation . The
-- The first, 'PreCommand' procedure is executed after command letter
-- is entered and any normal recordEdit procedures executed. The
-- second,'PreModify' procedure is executed after each form is displayed
-- during a 'modify', 'add' and 'locate' command and before these
-- commands are executed. The third procedure, 'PostLocate' is executed
-- after each locate type command is performed and before the command
-- line is again displayed. This is only executed if the 'SageError' is
-- returned as 0 after a locate operation.
--
-- CALLING SEQUENCE -
--
-- RecordEdit (formName, relationName, keyFieldName,
-- PreCommand, PreModify, PostLoc);
--
-- ENTRY -
--
-- formName : string
-- Name of form used for editing
--
-- relationName : string
-- Name of record to be edited
--
-- keyFieldName : string
-- Name of primary keyed field within the relation being edited that
-- uniquely identifies a record. An entry field in the form must exist
-- for this field. If the primary field is concatenated, the fields which
-- are components of that field must have entry fields on the form.
--
-- Supplied procedures include -
--
-- PreCommand
-- A procedure executed following any command entry. The command
-- may be changed to redirect execution.
--
-- PreModify
-- Procedure called during a modify, add, delete, or locate following the
-- display and entry into the form. Returns an option of 'C' to continue
-- processing, 'R' to redisplay the form, or 'E' to exit process.
--
-- PostLocate
-- Procedure executed after a locate is successfully executed. If Sage-
-- Error is non-zero after execution of a locate type command, this
-- procedure will not be executed.
--
-- EXAMPLE -
--
-- with MultSage;
-- with EditLib;
--
-- procedure Test is
-- begin
-- MultSage.OpenSystem ("Test.dfl",3,3,3000);
-- MSageLib.RecordEdit ("MyForm","MyRel","MyFld");
-- MultSage.CloseSystem;
-- end Test;
--
procedure RecordEditH
(FormNameI : in string;
RelationNameI : in string;
KeyFieldNameI : in string;
JoinFieldNameI : in string;
FatherRelationI : in string;
FatherJoinFieldI : in string);
--*
-- RecordEditH - Edit relation's records using hierarchical restrictions.
--
--
-- This procedure allows editing of a relations records.
-- Functions include locating, finding the next record, finding
-- the previous record, adding a record, modifying an existing
-- record, and deleting record.
--
-- This procedure allows the programmer to execute three variable
-- procedures which are supplied at the time of instantiation . The
-- The first, 'PreCommand' procedure is executed after command letter
-- is entered and any normal recordEdit procedures executed. The
-- second,'PreModify' procedure is executed after each form is displayed
-- during a 'modify', 'add' and 'locate' command and before these
-- commands are executed. The third procedure, 'PostLocate' is executed
-- after each locate type command is performed and before the command
-- line is again displayed. This is only executed if the 'SageError' is
-- returned as 0 after a locate operation.
--
-- The records available for editing may be restricted by a
-- joined field from another existing record. Only those records
-- whose "join" field is equal to the "join" field of the defined
-- "father" relation may be accessed.
--
-- The default commands are
--
-- Exits
-- -----
-- 1 - 'E'xit
-- 2 - esc Exit
-- locate commands
-- ---------------
-- 3 - 'L'ocate
-- 4 - 'N'ext
-- 5 - 'P'revious
-- modify commands
-- ---------------
-- 6 - 'A'dd
-- 7 - 'M'odify
-- 8 - 'D'elete
-- other commands
-- --------------
-- 9 - ' ' do nothing
--
-- These defaults can be changed using the DefineCommandLine procedure.
-- The first nine entries are order-dependent and the function can be
-- redefined to any other key stroke by changing the command entry for
-- that position.
--
-- CALLING SEQUENCE -
--
-- RecordEditH (formNameI, relationNameI, keyFieldNameI, joinFieldNameI,
-- fatherRelationI, fatherJoinFieldI);
--
-- ENTRY -
--
-- formNameI : string
-- Name of form used for editing
--
-- relationNameI : string
-- Name of record to be edited
--
-- keyFieldNameI : string
-- Name of primary keyed field within the relation being edited that
-- uniquely identifies a record. An entry field on the form must exist
-- for this field. If the primary field is concatenated, the fields which
-- are components of that field must have entry fields on the form.
--
-- joinFieldNameI : string
-- Name of field in relation being edited to restrict by.
--
-- fatherRelationI : string
-- Name of other relation that contains a field to restrict the editing
-- of the fields in 'relationNameI'.
--
-- fatherJoinFieldI : string
-- Name of field within 'FatherRelation' to restrict access to the
-- relation being edited. The current contents are compared against
-- 'joinFieldNameI' for equality.
--
-- Supplied procedures include -
--
-- PreCommand
-- A procedure executed following any command entry. The command
-- may be changed to redirect execution.
--
-- PreModify
-- Procedure called during a modify, add, delete, or locate following the
-- display and entry into the form. Returns an option of 'C' to continue
-- processing, 'R' to redisplay the form, or 'E' to exit process.
--
-- PostLocate
-- Procedure executed after a locate is successfully executed. If Sage-
-- Error is non-zero after execution of a locate type command, this
-- procedure will not be executed.
--
-- EXAMPLE -
--
-- with Sage;
-- with EditLib;
--
-- procedure Test is
--
-- nul : constant character := character'val(0);
--
-- keys : EditLib.Full_Character_Array(1..10) :=
-- (('E' , nul), -- Exit 1
-- ('Q' , nul), -- Exit 2
-- ('L' , nul), -- Locate
-- (nul , 'P'), -- Next(down arrow)
-- (nul , 'H'), -- Previous(up arrow)
-- ('A' , nul), -- Add
-- ('M' , nul), -- Modify
-- ('D' , nul), -- Delete
-- (' ' , nul), -- No action
-- ('T' , nul));-- Application
--
-- promptline : string(1..60) := (others => ' ');
--
-- procedure PreCom
-- (command : in out EditLib.Full_Character) is
--
-- Tcommand : constant EditLib.Full_Character := ('T' , nul);
--
-- begin
-- if EditLib."="(command,Tcommand) then
-- Sage.DisplayMessage("T command was pressed.",TRUE);
-- command(1) := ' ';
-- end if;
-- end PreCom;
--
--
-- procedure PreMod
-- (process : in character;
-- exitNo : in natural;
-- option : in out character) is
--
-- class : natural;
--
-- begin
-- if exitNo = 21 then -- increment field and redisplay i.e., no edit action
-- Sage.GetFieldI("RELATION","Field1",fieldValue);
-- Sage.PutFieldI("RELATION","Field1",fieldValue+1);
-- option := 'R';
-- elsif exitNo = 10 then -- continue with edit
-- option := 'C';
-- else -- exit edit process
-- option := 'E';
-- end if;
-- end PreMod;
--
-- procedure NewEdit is new EditLib.RecordEditH
-- (PreCommand => PreCom,
-- PreModify => PreMod,
-- PostLocate => Dumb3);
--
-- begin -- of Test procedure
-- Sage.DefineFunctionKey(8 ,nul,';');
-- Sage.DefineFunctionKey(21,nul,'<');
-- Sage.DefineFunctionKey(22,character'val(27),nul);
-- Sage.OpenSystem("DATABASE.DFL",4,4,10000);
--
-- -- NOTE: DefineCommandLine and DefineScroll are exclusive of each other.
-- -- Only one or the other can be used. This example is using the scroll
-- -- but a command line could be used by removing comments and commenting
-- -- out DefineScroll.
-- --
-- --promptline(1..60) :=
-- -- "<E>xit, <Q>uit, <A>dd, <M>odify, <L>ocate, up/down to view ";
-- --EditLib.DefineCursorPosition(24,72);
-- --EditLib.DefineCommandLine(keys,10,"EQAMLT or up,down","",promptline,24);
--
-- EditLib.DefineScroll(keys,10,"EQAMLT","ScrlForm","SCRLREL","SCRLFLD",
-- "Field1,1,Field2,33,Field3,40,Field4,48");
--
-- EditLib.ClearFormOnAdd(FALSE);
--
-- NewEdit("EditForm","RELATION","KeyField","","","");
--
-- Sage.CloseSystem;
--
-- end Test;
--
procedure RecordEdH
(FormNameI : in string;
RelationNameI : in string;
KeyFieldNameI : in string;
JoinFieldNameI : in string;
FatherRelationI : in string;
FatherJoinFieldI : in string;
PreCommand : in PreCommandProcType;
PreModify : in PreModifyProcType;
PostLoc : in PostLocateProcType);
--*
-- RecordEdH - Edit relation's records using hierarchical restrictions.
--
--
-- This procedure allows editing of a relations records.
-- Functions include locating, finding the next record, finding
-- the previous record, adding a record, modifying an existing
-- record, and deleting record.
--
-- This procedure allows the programmer to execute three variable
-- procedures which are supplied at the time of instantiation . The
-- The first, 'PreCommand' procedure is executed after command letter
-- is entered and any normal recordEdit procedures executed. The
-- second,'PreModify' procedure is executed after each form is displayed
-- during a 'modify', 'add' and 'locate' command and before these
-- commands are executed. The third procedure, 'PostLocate' is executed
-- after each locate type command is performed and before the command
-- line is again displayed. This is only executed if the 'SageError' is
-- returned as 0 after a locate operation.
--
-- The records available for editing may be restricted by a
-- joined field from another existing record. Only those records
-- whose "join" field is equal to the "join" field of the defined
-- "father" relation may be accessed.
--
-- The default commands are
--
-- Exits
-- -----
-- 1 - 'E'xit
-- 2 - esc Exit
-- locate commands
-- ---------------
-- 3 - 'L'ocate
-- 4 - 'N'ext
-- 5 - 'P'revious
-- modify commands
-- ---------------
-- 6 - 'A'dd
-- 7 - 'M'odify
-- 8 - 'D'elete
-- other commands
-- --------------
-- 9 - ' ' do nothing
--
-- These defaults can be changed using the DefineCommandLine procedure.
-- The first nine entries are order-dependent and the function can be
-- redefined to any other key stroke by changing the command entry for
-- that position.
--
-- CALLING SEQUENCE -
--
-- RecordEdH (formNameI, relationNameI, keyFieldNameI, joinFieldNameI,
-- fatherRelationI, fatherJoinFieldI);
--
-- ENTRY -
--
-- formNameI : string
-- Name of form used for editing
--
-- relationNameI : string
-- Name of record to be edited
--
-- keyFieldNameI : string
-- Name of primary keyed field within the relation being edited that
-- uniquely identifies a record. An entry field on the form must exist
-- for this field. If the primary field is concatenated, the fields which
-- are components of that field must have entry fields on the form.
--
-- joinFieldNameI : string
-- Name of field in relation being edited to restrict by.
--
-- fatherRelationI : string
-- Name of other relation that contains a field to restrict the editing
-- of the fields in 'relationNameI'.
--
-- fatherJoinFieldI : string
-- Name of field within 'FatherRelation' to restrict access to the
-- relation being edited. The current contents are compared against
-- 'joinFieldNameI' for equality.
--
-- Supplied procedures include -
--
-- PreCommand
-- A procedure executed following any command entry. The command
-- may be changed to redirect execution.
--
-- PreModify
-- Procedure called during a modify, add, delete, or locate following the
-- display and entry into the form. Returns an option of 'C' to continue
-- processing, 'R' to redisplay the form, or 'E' to exit process.
--
-- PostLocate
-- Procedure executed after a locate is successfully executed. If Sage-
-- Error is non-zero after execution of a locate type command, this
-- procedure will not be executed.
--
-- EXAMPLE -
--
-- with Sage;
-- with EditLib;
--
-- procedure Test is
--
-- nul : constant character := character'val(0);
--
-- keys : EditLib.Full_Character_Array(1..10) :=
-- (('E' , nul), -- Exit 1
-- ('Q' , nul), -- Exit 2
-- ('L' , nul), -- Locate
-- (nul , 'P'), -- Next(down arrow)
-- (nul , 'H'), -- Previous(up arrow)
-- ('A' , nul), -- Add
-- ('M' , nul), -- Modify
-- ('D' , nul), -- Delete
-- (' ' , nul), -- No action
-- ('T' , nul));-- Application
--
-- promptline : string(1..60) := (others => ' ');
--
-- procedure PreCom
-- (command : in out EditLib.Full_Character) is
--
-- Tcommand : constant EditLib.Full_Character := ('T' , nul);
--
-- begin
-- if EditLib."="(command,Tcommand) then
-- Sage.DisplayMessage("T command was pressed.",TRUE);
-- command(1) := ' ';
-- end if;
-- end PreCom;
--
--
-- procedure PreMod
-- (process : in character;
-- exitNo : in natural;
-- option : in out character) is
--
-- class : natural;
--
-- begin
-- if exitNo = 21 then -- increment field and redisplay i.e., no edit action
-- Sage.GetFieldI("RELATION","Field1",fieldValue);
-- Sage.PutFieldI("RELATION","Field1",fieldValue+1);
-- option := 'R';
-- elsif exitNo = 10 then -- continue with edit
-- option := 'C';
-- else -- exit edit process
-- option := 'E';
-- end if;
-- end PreMod;
--
-- procedure NewEdit is new EditLib.RecordEdH
-- (PreCommand => PreCom,
-- PreModify => PreMod,
-- PostLocate => Dumb3);
--
-- begin -- of Test procedure
-- Sage.DefineFunctionKey(8 ,nul,';');
-- Sage.DefineFunctionKey(21,nul,'<');
-- Sage.DefineFunctionKey(22,character'val(27),nul);
-- Sage.OpenSystem("DATABASE.DFL",4,4,10000);
--
-- -- NOTE: DefineCommandLine and DefineScroll are exclusive of each other.
-- -- Only one or the other can be used. This example is using the scroll
-- -- but a command line could be used by removing comments and commenting
-- -- out DefineScroll.
-- --
-- --promptline(1..60) :=
-- -- "<E>xit, <Q>uit, <A>dd, <M>odify, <L>ocate, up/down to view ";
-- --EditLib.DefineCursorPosition(24,72);
-- --EditLib.DefineCommandLine(keys,10,"EQAMLT or up,down","",promptline,24);
--
-- EditLib.DefineScroll(keys,10,"EQAMLT","ScrlForm","SCRLREL","SCRLFLD",
-- "Field1,1,Field2,33,Field3,40,Field4,48");
--
-- EditLib.ClearFormOnAdd(FALSE);
--
-- NewEdit("EditForm","RELATION","KeyField","","","");
--
-- Sage.CloseSystem;
--
-- end Test;
--
Send mail to
warren.merrill@inl.gov
with questions or comments about this web site.
Copyright © 1989-2006 Battelle Energy Alliance