' 'This chapter menu '^^^^^^^^^^^^^^^^^^^^^^ ' '!short:Operators and functions for increased readability of source code '!short:Constants for increasing the source code readability '!short: '!short:OBJECT new object creation '!short: '!short:BEGIN BREAK supress of system error call '!short:RECOVER BREAK system error recovery '!short:END BREAK end of program part with supressed error call '!short:BREAKIF conditional break '!short: '!short:ENDWHILE conditional while loop end '!short:REPEAT unconditional loop begin '!short:LOOPIF conditional loop begin '!short:EXITIF conditional loop exit '!short:UNTIL conditional repeat until loop end '!short:ENDREPEAT unconditional repeat loop end '!short: '!short:RETURNIF conditional function exit '!short:RETURN UPDATE function exit, for switch set '!short:FILL EMPTY variable is filled if empty '!short:DEFAULT TO variable is filled with default value if it's value is NIL '!short:STORE VALUE variable is stored the default value if it's value <> NIL '!short: '!short:SET ERRORS FILE error file name set '!short:SET LASTKEY key code for the LasteKey() function set '!short:SET QUICKESC sets if the ESC key should exit the menu or no '!short:SET DIALOG enable / disable dialog line output '!short:CLEAR KEYBOARD cleares the keyboard queue '!short:SKIP DELETED search for first undeleted database record '!short: '!short:REFRESH ROW restores the current viewed row '!short:REFRESH TABLE restores the current View object display '!short: '!short:NET CREATE database creation in network environment '!short:NET USE database open in a network environment '!short:NET INDEX ON index file creation in a network environment '!short:NET SET INDEX index file open in a network environment '!short:NET APPEND BLANK blank record append in a network environment '!short:NET DELETE record deleted mark in a network environment '!short:NET RECALL deleted marked record recall in a network environment '!short:NET REPLACE extended network storing a data info database file '!short:NET RLOCK record lock before write atempt in a network environment '!short:NET FLOCK database file lock before write atempt in a network environment '!short:NET ERASE database file delete in a network environment '!short:NET REINDEX reindex of databases in a network environment '!short:NET PACK pack of database in a network environment '!short:NET ZAP zap of database in a network environment '!short:NET UNLOCK unlock of database record in a network environment '!short:NET CLOSE close of database in a network environment ' ' '#################################################################################### !short:Operators and functions for increased readability of source code ^BOperators and functions for increased readability of source code: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ With help of preprocessor command #define are following new operators defined: #define and .and. #define or .or. #define true .t. #define false .f. #define cr_lf (chr(13)+chr(10)) //new line #define NTrim(n) LTrim(Str(n)) //number to string without spc #define Swap(a,b) Eval({|p|p:=a,a:=b,b:=p})//swap two variables #define Bell() Tone(400,0.2) //beeps #define DisableHelp() ReadHelpVar(DISABLE) #define EnableHelp() ReadHelpVar("") DisableHelp() disables the help to database fields and menu items; EnableHelp() it enables. A logical operator IN defined: #xtranslate ( IN ,) => ( <= .and. <= ) Source file is Object.ch '#################################################################################### !short:Constants for increasing the source code readability ^BConstants for increasing the source code readability: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ With help of preprocessor command #define are following new constants defined: Color items description: ~~~~~~~~~~~~~~~~~~~~~~~~ #define nNormal 1 //CLIPPER:Normal,Enhanced,Border,NotUse,Unselect #define nEnhanced 2 // 1 2 3 4 5 #define nBorder 3 #define nNotUse 4 #define nUnSelect 5 #define nShadow 3 //WINDOW: Normal,Enhanced,Shadow,Title, Unselect #define nTitle 4 // 1 2 3 4 5 #define nSelected 2 //MENU: Normal,Selected,Shadow,Letter,Disable #define nLetter 4 // 1 2 3 4 5 #define nDisable 5 #define nExtension 6 Look at the clipper color string. Source file is Object.ch '#################################################################################### !short:OBJECT new object creation ^BOBJECT new object creation: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ [Visibility] OBJECT [] OF [INIT [InitMethod( [list] )]] where: Visibility can be LOCAL or STATIC or PUBLIC or PRIVATE InitMethod(...) can be: Function( [list] ) or: :VirtualMethod( [list] ) Description: ~~~~~~~~~~~~ New object of the class is created, the initial instvar values are set (method o:New()) and in the case of use of INIT it is initialised by o:Init(). If the InitMethod([list]) is set it is performed too. Have a look to: Basic concept ¯¯ Simple object manipulating demo Example: ~~~~~~~~ ^ULOCAL OBJECT o1 OF Class1^N new local object o1 of Class1 is created, its variables are initialised by standard constructor method o:New(). ^USTATIC OBJECT o2 OF Class2 INIT^N new static object o2 of Class2 is created and constructor o:New() and virtual method o:Init() is called for it. ^UPUBLIC OBJECT o3 OF Class3 INIT PostInit(), o3:Load()^N new public object o3 of Class3 is created and constructor o:New() and virtual method Init(), and static method PostInit() and virtual method Load() is called for it. This command can be rewritten as PUBLIC OBJECT o3 OF Class3 //object creation, constructor o:New() call o3:Init() //virtual method PostInit() //function o3:Load() //virtual method Source file is Object.ch !seealso: ob_basic.ngo:Syntax ob_basic.ngo:"Simple demo" '#################################################################################### !short:BEGIN BREAK supress of system error call ^BBEGIN BREAK supress of system error call: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UBEGIN BREAK^N //any source code which can cause an error [^URECOVER BREAK^N [^UUSING oError^N]] //unconditional error recover //any source code to handle the error ^UEND BREAK^N Description: ~~~~~~~~~~~~~ This program construction is suitable for runtime error handle. All errors causing the "Error CLIPPER/BASE..." are handled by your code. If there is no command RECOVER BREAK... the control goes immediately to the first command after the END BREAK, and the error occurance is supressed. If the RECOVER BREAK... is used : 1.There was no error between BEGIN BREAK and RECOVER BREAK then the RECOVER BREAK... command gives the control to the first command after the END BREAK. So in this case the code part between RECOVER BREAK... and END BREAK is skipped. 2.If there was a error between BEGIN BREAK a RECOVER BREAK then remaining code of this part is skipped and the control goes to the first command after the RECOVER BREAK... If you use the full RECOVER BREAK USING oError command, then before the control goes to the error handling part the variable oError is filled with clipper object of Error class. This object describes the error type. Example: ~~~~~~~~ ... REPEAT BEGIN BREAK Expr:=Space(20) Expr:=EditIt(Expr,"Input the valid clipper expression:") x:=&(Expr) RECOVER BREAK USING oError Alert("This was not a valid expression!;"+ErrorMessage(oError)) LOOP END BREAK UNTIL true This code part will be repeated until you input the valid clipper expression. Comment: ~~~~~~~~ If there occures a rutime error in a part between RECOVER BREAK and END BREAK, it will be handled in the standard way, with error message and exiting the program. See the BEGIN SEQUENCE. Source file is Object.ch !seealso: REPEAT ob_funct.ngo:EditIt ob_funct.ngo:ErrorMessage '#################################################################################### !short:RECOVER BREAK system error recovery ^BRECOVER BREAK system error recovery: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Description: ~~~~~~~~~~~~ The description is in a BEGIN BREAK paragraph. Source file is Object.ch !seealso: "BEGIN BREAK" '#################################################################################### !short:END BREAK end of program part with supressed error call ^BEND BREAK end of program part with supressed error call: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Description: ~~~~~~~~~~~~ The description is in a BEGIN BREAK paragraph. Source file is Object.ch !seealso: "BEGIN BREAK" '#################################################################################### !short:BREAKIF conditional break ^BBREAKIF conditional break: ~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UBREAKIF^N [^UWITH^N ] Description: ~~~~~~~~~~~~ If the value of expresion is true, the BREAK is performed. Example: ~~~~~~~~ ... BREAKIF i<0 WITH MakeErrorObject() ... STATIC FUNCTION MakeErrorObject() LOCAL o:=ErrorNew() o:Description:="Variable i has too small value!" o:Operation:="<" o:Severity:=ES_WHOCARES o:SubSystem:="Test i" o:Tries:=0 o:CanRetry:=true RETURN o If variable i < 0 there is a new clipper error object created and the BREAK command is activated which is given the error object. Have a look to the clipper Error class. Source file is Object.ch !seealso: "BEGIN BREAK" '#################################################################################### !short:ENDWHILE conditional while loop end ^BENDWHILE conditional while loop end: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UENDWHILE^N [ ] Description: ~~~~~~~~~~~~ The loop is ended if is true if is not set it is replaced with false and the loop is repeated. Example: ~~~~~~~~ SET EXACT OFF LOCATE FOR field->Name="Nov" WHILE FOUND() ? field->Name, field->Salary CONTINUE ENDWHILE Alert("Continue search?",{"Yes,"No"})<>1 ... Source file is Object.ch !seealso: REPEAT UNTIL EXITIF LOOPIF '#################################################################################### !short:REPEAT unconditional loop begin ^BREPEAT unconditional loop begin: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UREPEAT^N Description: ~~~~~~~~~~~~ Exactly the same as WHILE .T. Example: ~~~~~~~~ REPEAT nKey:=InKey(0) UNTIL nKey<>K_ENTER ... Enter key pressing ignore K_ENTER. Source file is Object.ch !seealso: EXITIF LOOPIF ENDWHILE '#################################################################################### !short:LOOPIF conditional loop begin ^BLOOPIF conditional loop begin: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^ULOOPIF^N Description: ~~~~~~~~~~~ If the expresion is true, the LOOP is performed. Example: ~~~~~~~~ REPEAT nKey:=InKey(0) LOOPIF nKey==K_ENTER DO CASE CASE nKey==K_UP ... CASE nKey==K_DOWN ... OTHERWISE ... ENDCASE UNTIL nKey==K_ESC ... All pressed keys are handled without K_ENTER, the loop is finished after pressing of th ESC key. Source file is Object.ch !seealso: REPEAT UNTIL EXITIF ENDWHILE '#################################################################################### !short:EXITIF conditional loop exit ^BEXITIF conditional loop exit: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UEXITIF^N Description: ~~~~~~~~~~~~ If the expresion is true, the EXIT command is performed. Example: ~~~~~~~~ REPEAT nKey:=InKey(0) EXITIF nKey==K_ENTER or nKey==K_ESC DO CASE CASE nKey==K_UP ... CASE nKey==K_DOWN ... OTHERWISE ... ENDCASE ENDREPEAT ... All pressed keys are handled, the loop is finished after pressing of the ESC key or the Enter key. Source file is Object.ch !seealso: REPEAT UNTIL LOOPIF ENDWHILE '#################################################################################### !short:UNTIL conditional repeat until loop end ^BUNTIL conditional repeat until loop end: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UUNTIL^N Description: ~~~~~~~~~~~~ If the expresion is true, the loop is finished otherwise the looping is continued. Source file is Object.ch !seealso: REPEAT LOOPIF EXITIF ENDWHILE '#################################################################################### !short:ENDREPEAT unconditional repeat loop end ^BENDREPEAT unconditional repeat loop end: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UENDREPEAT^N Description: ~~~~~~~~~~~~ in conection with REPEAT command can cause the unlimited loop. Example: ~~~~~~~~ REPEAT EndLessProcedure() ENDREPEAT Source file is Object.ch !seealso: REPEAT EXITIF LOOPIF ENDWHILE '#################################################################################### !short:RETURNIF conditional function exit ^BRETURNIF conditional function exit: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^URETURNIF^N ^UWITH^N Description: ~~~~~~~~~~~~ If a value of is true, the loop is finished with command RETURN Example: ~~~~~~~~ FUNCTION Test(x) RETURNIF x==nil WITH false //nothing to test //the test text RETURN true Source file is Object.ch !seealso: BREAKIF EXITIF LOOPIF '#################################################################################### !short:RETURN UPDATE function exit, for switch set ^BRETURN UPDATE function exit, for switch set: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^URETURN^N ^UUPDATE WITH^N Description: ~~~~~~~~~~~~ The variable is temporary stored and after it the is assigned the if diferent from NIL and the temporary stored is restored by RETURN command. Example: ~~~~~~~~ FUNCTION MySet(New) STATIC Old RETURN Old UPDATE WITH New Rewriting this code in standard clipper: FUNCTION MySet(New) STATIC Old LOCAL pom:=Old IF New<>NIL Old:=New END RETURN pom Source file is Object.ch !seealso: RETURNIF BREAKIF EXITIF LOOPIF '#################################################################################### !short:FILL EMPTY variable is filled if empty ^BFILL EMPTY variable is filled if empty: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UFILL EMPTY^N ^U:=^N [, ^U:=^N ] Description: ~~~~~~~~~~~~ If the expresion Empty() is true the is assigned the . This is performed for all variables and their values. Example: ~~~~~~~~ FILL EMPTY A:=11, B:=22, C:=33 can be rewritten: IF EMPTY(A) A:=11 END IF EMPTY(B) B:=22 END IF EMPTY(C) C:=33 ENDIF Source file is Object.ch !seealso: "DEFAULT" "STORE VALUE" '#################################################################################### !short:DEFAULT variable is filled with default value if it's value is NIL ^BDEFAULT variable is filled with default value if it's value is NIL: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UDEFAULT^N ^U:=^N [, ^U:=^N ] Description: ~~~~~~~~~~~~ If the variable == NIL, the variable is assigned the . This is performed for all variables and their values. Example: ~~~~~~~~ DEFAULT A:=11, B:=22, C:=33 can be rewritten: IF A==NIL A:=11 END IF B==NIL B:=22 END IF C==NIL C:=33 ENDIF Source file is Object.ch !seealso: "FILL EMPTY" "STORE VALUE" '#################################################################################### !short:STORE VALUE variable is stored the default value if it's value <> NIL ^BSTORE VALUE variable is stored the default value if it's value <> NIL: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^USTORE VALUE^N ^UINTO^N [, ^UINTO^N ] Description: ~~~~~~~~~~~~~ If the expresion <> NIL, then the variable is assigned the . This is performed for all variables and their values. Example: ~~~~~~~~ STORE VALUE xxx INTO A, yyy INTO B, zzz INTO C can be rewritten: IF xxx==NIL A:=xxx END IF yyy==NIL B:=yyy END IF zzz==NIL C:=zzz ENDIF Source file is Object.ch !seealso: "FILL EMPTY" "DEFAULT" '#################################################################################### !short:SET ERRORS FILE error file name set ^BSET ERRORS FILE error file name set: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^USET ERRORRS FILE^N [^UTO^N] Description: ~~~~~~~~~~~~ The Object.lib library has corrected Error.sys to output the error message to the file set with SET ERRORS command too. It is convenient to quiet study of reason of program abort. If the file doesn't exist it is created, if exists the messges are apended to its end. Source file is Object.ch !seealso: ob_funct.ngo:SetErrFile '#################################################################################### !short:SET LASTKEY key code for the LasteKey() function set ^BSET LASTKEY key code for the LasteKey() function set: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^USET LAST KEY^N [^UTO^N] Description: ~~~~~~~~~~~~ This preprocessor command is transformed to SetLastKey() function call. The code is set so the LastKey() function call returns the value, till the next keypress or redefinition by SET LAST KEY command (or SetLastKey() function). Source file is Object.ch !seealso: ob_funct.ngo:SetLastKey '#################################################################################### !short:SET QUICKESC sets if the ESC key should exit the menu or no ^BSET QUICKESC sets if the ESC key should exit the menu or no: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^USET QUICKESC^N [^UTO^N] Function: ~~~~~~~~ This command is preprocessored to function call SetQuickEsc(). If is true the Esc keypressing causes immediate menu exit, if it is true the ESC keypressing causes the one menu level return. Source code is in Object.ch !seealso: ob_funct.ngo:SetQuickEsc ob_class.ngo:Menu '#################################################################################### !short:SET DIALOG enable / disable dialog line output ^BSET DIALOG enable / disable dialog line output: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^USET DIALOG^N [^UTO^N] Function: ~~~~~~~~~ This command is preprocessored to function call SetDialog(). If the is true the dialog line output is enabled, if false it is disabled. Source code is in Object.ch !seealso: ob_funct.ngo:SetDialog ob_class.ngo:Menu '#################################################################################### !short:CLEAR KEYBOARD cleares the keyboard queue ^BCLEAR KEYBOARD cleares the keyboard queue: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UCLEAR KEYBOARD^N Function: ~~~~~~~~~ The same as original CLEAR TYPEAHEAD, but more readable form. Source code is in Object.ch !seealso: '#################################################################################### '!short:SKIP DELETED search for first undeleted database record ^BSKIP DELETED search for first undeleted database record: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^USKIP DELETED^N Function: ~~~~~~~~~ The same as function SkipDeleted(). Source code is in Object.ch !seealso: ob_funct.ngo:SkipDeleted '#################################################################################### '!short:REFRESH ROW current View object row refresh ^BREFRESH ROW current View object row refresh: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UREFRESH ROW^N Function: ~~~~~~~~~ The same as function RefreshRow(). Source code is in Object.ch !seealso: ob_funct.ngo:RefreshRow '#################################################################################### '!short:REFRESH TABLE current View object refresh ^BREFRESH TABLE current View object refresh: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UREFRESH TABLE^N Function: ~~~~~~~~~ The same as function RefreshTable(). Source code is in Object.ch !seealso: ob_funct.ngo:RefreshTable '#################################################################################### !short:NET CREATE database cretion in network environment ^BNET CREATE database cretion in network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET CREATE^N [^UFROM^N ] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command CREATE FROM..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetCreateFrom c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET USE database open in a network environment ^BNET USE database open in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET USE^N [^UVIA^N ] [^UALIAS^N ] ; [^UNEW^N] [^UEXCLUSIVE^N] [^USHARED^N] [^UREADONLY^N] ; [^UINDEX^N ] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper USE..., command with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetDbUseArea c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET INDEX ON index file creation in a network environment ^BNET INDEX ON index file creation in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET INDEX ON^N [^UTO^N ] [^UUNIQUE^N] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~ It is a network version of clipper command INDEX ON..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetIndexOn c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET SET INDEX index file open in a network environment ^BNET SET INDEX index file open in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET SET INDEX TO^N ^UNET SET INDEX TO^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~ It is a network version of clipper command SET INDEX TO..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetSetIndex c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET APPEND BLANK blank record append in a network environment ^BNET APPEND BLANK blank record append in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET APPEND BLANK [^UIN^N ,[]] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command APPEND BLANK, with following enhancements: 1.Clause IN ,: command APPEND... is performed in workarea with active index . After this command may be unlocked current record in workarea. All other settings are unchanged. (i.e. RecNo(), set order to..., RLock(), select, ...) 2.Clause SEEK : command APPEND... is performed for all this records, that will be founded with seek in required workarea. 3.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 4.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 5.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetDbAppend c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET DELETE record deleted mark in a network environment ^BNET DELETE record deleted mark in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET DELETE^N [^UIN^N ,[]] ; [ [^UFOR^N ] [^UWHILE^N ] [^NNEXT^N ] ; [^URECORD^N ] [^UREST^N] [^UALL^N] [^UCONTINUE^N] [^URETURN^N ] ^UNET DELETE^N [^UIN^N ,[]] ; [^USEEK^N ] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command DELETE..., with following enhancements: 1.Clause IN ,: command DELETE is performed in workarea with active index . After this command may be unlocked current record in workarea. All other settings are unchanged. (i.e. RecNo(), set order to..., RLock(), select, ...) 2.Clause SEEK : command DELETE is performed for all this records, that will be founded with seek in required workarea. 3.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 4.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 5.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetDbDelete c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET RECALL deleted marked record recall in a network environment ^BNET RECALL deleted marked record recall in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET RECALL^N [^UIN^N ,[]] ; [ [^UFOR^N ] [^UWHILE^N ] [^NNEXT^N ] ; [^URECORD^N ] [^UREST^N] [^UALL^N] [^UCONTINUE^N] [^URETURN^N ] ^UNET RECALL^N [^UIN^N ,[]] ; [^USEEK^N ] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command RECALL..., with following enhancements: 1.Clause IN ,: command RECALL is performed in workarea with active index . After this command may be unlocked current record in workarea. All other settings are unchanged. (i.e. RecNo(), set order to..., RLock(), select, ...) 2.Clause SEEK : command RECALL is performed for all this records, that will be founded with seek in required workarea. 3.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 4.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 5.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetDbRecall c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET REPLACE extended network storing a data info database file ^BNET REPLACE extended network storing a data info database file: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET REPLACE^N f1:=v1 [,fN:=vN] [^UIN^N ,[]] ; [ [^UFOR^N ] [^UWHILE^N ] [^NNEXT^N ] ; [^URECORD^N ] [^UREST^N] [^UALL^N] [^UCONTINUE^N] [^URETURN^N ] ^UNET REPLACE^N f1:=v1 [,fN:=vN] [^UIN^N ,[]] ; [^USEEK^N ] [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is the network version of clipper command REPLACE with following enhancements: 1.Clause IN ,: command REPLACE is performed in workarea with active index . After this command may be unlocked current record in workarea. All other settings are unchanged. (i.e. RecNo(), set order to..., RLock(), select, ...) 2.Clause SEEK : command REPLACE is performed for all this records, that will be founded with seek in required workarea. 3.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 4.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 5.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetRLock c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET RLOCK record lock before write atempt in a network environment ^BNET RLOCK record lock before write atempt in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET RLOCK^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command RLOCK, with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetRLock c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET FLOCK database file lock before write atempt in a network environ ^BNET FLOCK database file lock before write atempt in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET FLOCK^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command FLOCK, with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetFLock c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET ERASE database file delete in a network environment ^BNET ERASE database file delete in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET ERASE^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command ERASE..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetFErase c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET REINDEX reindex of databases in a network environment ^BNET REINDEX reindex of databases in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET REINDEX^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command REINDEX..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetReIndex c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET PACK pack of database in a network environment ^BNET PACK pack of database in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET PACK^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command PACK..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetPack c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET ZAP zap of database in a network environment ^BNET ZAP zap of database in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET ZAP^N [^UCONTINUE^N] [^URETURN^N ] Function: ~~~~~~~~~ It is a network version of clipper command ZAP..., with following enhancements: 1.Network enhancement: If command fails, the user is given an Alert about it and he is to decide the next step: - repeat the failed command - continue even if the command failed, and when the CONTINUE clause was used - break of the program with a question if the user realy wants to break the program 2.CONTINUE clause: If set the user has the possibility to continue after a network error occured. This can be checked by NetErr(), which is after a network error set to true, when also the CONTINUE clause is used. 3.RETURN clause: is to use when is the continue clause used too. If it is used and after an failed command user wants to continue, the RETURN false command is performed to immediate break of a failed function. This enhancements are a strong tool for a programmer, but this library has better capabilities to handle the database in a network environment, see the objects of Dbf and View classes for a high level network data handle. Source code is in Object.ch a Object3.prg !seealso: ob_funct.ngo:NetZap c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET UNLOCK unlock of database record in a network environment ^BNET UNLOCK unlock of database record in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET UNLOCK^N [] Function: ~~~~~~~~~ It is a network version of clipper command UNLOCK..., the COMMIT command is performed and then UNLOCK []. Source code is in Object.ch !seealso: "NET RLOCK" c_dbf.ngo:Dbf c_view.ngo:View '#################################################################################### !short:NET CLOSE close of database in a network environment ^BNET CLOSE close of database in a network environment: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Syntax: ~~~~~~~ ^UNET CLOSE^N [] Function: ~~~~~~~~ It is a network version of clipper command CLOSE..., the NET UNLOCK [] is performed and then CLOSE []. Source code is in Object.ch !seealso: "NET UNLOCK" "NET RLOCK" c_dbf.ngo:Dbf c_view.ngo:View ' 'תתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתתת eof (c)JHK תתתתתתתתתתתתתתת '