-- MySQL dump 10.11
--
-- Host: localhost    Database: peg_erp
-- ------------------------------------------------------
-- Server version	5.0.84-community-nt

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `q80`
--

DROP TABLE IF EXISTS `q80`;
CREATE TABLE `q80` (
  `nr01` bigint(10) NOT NULL default '0',
  `p01` char(50) NOT NULL default '',
  `p04` char(150) NOT NULL default '',
  `p03` char(250) NOT NULL default '',
  `p05` char(1) NOT NULL default '',
  `p02` char(6) NOT NULL default '',
  `p06` char(150) NOT NULL default '',
  `p07` char(6) NOT NULL default '',
  `p30` longtext,
  `remdate` date NOT NULL default '0100-01-01',
  `remtime` char(10) NOT NULL default '',
  `remuser` char(30) NOT NULL default '',
  `remfdate` date NOT NULL default '0100-01-01',
  `remftime` char(10) NOT NULL default '',
  `remfuser` char(30) NOT NULL default '',
  `remguc` char(30) NOT NULL default '',
  PRIMARY KEY  (`nr01`),
  KEY `p01` (`p01`),
  KEY `p02` (`p02`),
  KEY `remdate` (`remdate`,`remtime`),
  KEY `remguc` (`remguc`)
) ENGINE=InnoDB DEFAULT CHARSET=greek;

--
-- Dumping data for table `q80`
--

LOCK TABLES `q80` WRITE;
/*!40000 ALTER TABLE `q80` DISABLE KEYS */;
INSERT INTO `q80` VALUES (1,'GETDATA() & FIELDS TYPES','Fields type','','','GEN','getdata(), initrec(), initvar()','W3','One Pegasus Database may have fields of the following types:\r\nPragmatic fields types:\r\nThe pragmatic fields are that ones with values saved in database.\r\nC (character): Saves in string the specific length defined from the field length.\r\nN (numeric): Saves numbers. The field length defines the total length; means if there are decimals counts also the comas. If for example, you have a field, with the length 5 and with 2 decimals, means that the max number can save is 99.99\r\nThe N type fields can be displayed to you as ratio, and for this is enough to write inside the field image:\r\nR:10, text1, text2, .....\r\nWhere 10= the height field in pixels (size of fonts), and text1, text2, ... are the messages (numbers) corresponding to the values 1, 2, \r\nFor example: For the page number we set the numeric field size 10. Inside the icon field we write:\r\nR:10, Men, Women\r\nThis way, the fields take the value 1 for men and 2 for women. It is recommended that for initial values to use one of these two values (1 or 2)\r\nD (date): The date has a specific and constant size 8. The date type fields get as initial value or by default settings, the current date. If you want to be empty or no valid date, then as initial value use the function ctod(\'0\')\r\nI (memo): Sting variable size (text inside). Always defined with length 10\r\nL (logical): Get the values .t. or .f. always defined with length 1. In addition, you have to define always field as get, in order to appear as check boxes\r\nVirtual fields types:\r\nThe virtual fields types are the ones with value is not saved in database but are used to display to the user data from saved fields. Also, are used in screens that are not corresponding to databases.\r\nRequires always an initial value that defines both the content and the fields type. It is recommended into these fields to define also the browse value.\r\nV (variable): Their contents are according to the initial value. Requires always an initial value that defines also the content and the field type (n, c, d)\r\nT (text): Manage the text (same as the memo type fields)\r\nE (logical): Same functions as the Logical ones (with check box)\r\nX Type Fields\r\nPegasus Language is using also the X type fields (teXts) that are saving a text for each record. These texts are saved in the folder defined in system parameters (X-Type path). Usually, this folder is _memos.\r\nFor each field and each database there is one subfolder named as it is defined in initial field value. For this reason, you have to check this value is unique.\r\nWe recommend you to use the terminology <database<field> for example etfp30\r\nInside this subfolder, the texts are created have the names:\r\nt<nr01 up to 16>.dbx\r\nFor example t01.dbx\r\nThese fields are automatically updated with the function repldata() and it is activated with the initvar()\r\nAre not influenced by replfld(). Here you may use the functions pegmemore() and pegmemowr().\r\n','2005-01-20','14:41:09','dias','0100-01-01','','',''),(2,'GETDATA() & PICTURES','Field images','','','GEN','','W3','Inside this text are described all fields images may be used both in screen and functions (for example transform() )\r\n------------------------------------------------------------------------------\r\nPicture Codes\r\n-----------------------------------------------------------------------------\r\nSay\r\n------------------------------------------------------------------------------\r\n@B Display numbers left-justified | X Display DB after negative numbers\r\n@C Display CR after positive numbers | Z Display zeros as blanks\r\n@D Display date in SET DATE format | (Enclose negative numbers in parents\r\n@E Display date in British format | ! Convert alpha characters to upper\r\n@R Insert non-template characters |\r\nA Display digits for any data type | ! Convert alpha character to upper\r\nN \" | $ Display dollar sign instead of\r\nX \" | leading space in a numeric\r\n9 \" | * Display asterisk instead of\r\n# \" | leading space in a numeric\r\nL Display logical as \"T\" or \"F\" | . Specify a decimal point position\r\nY Display logical as \"Y\" or \"N\" | , Specify a comma position\r\n------------------------------------------------------------------------------\r\nGet\r\n------------------------------------------------------------------------------\r\n@A C Allow only alpha characters\r\n@B N Display numbers left justified\r\nC N Display CR after positive numbers\r\nD D,N Display dates in SET DATE format\r\nE D,N Display dates with day and month inverted\r\nindependent of the current DATE Setting,\r\nnumeric with comma and period reverse\r\nK All Delete default text if first key is not a cursor key\r\nR C Insert non-template characters in the display but do not\r\nsave in the Get variable\r\nS<n> C Allows horizontal scrolling within a Get. <n> is an integer\r\nthat specifies the width of the region\r\nX N Display DB after negative numbers\r\nZ N Display zero as blanks\r\n( N Display negative numbers in parentheses with leading spaces\r\n) N Display negative numbers in parentheses without leading spaces\r\n! C Convert alphabetic character to upper case\r\n------------------------------------------------------------------------------\r\nGet Picture Template Symbols\r\n-------------------------------------------------------------------------\r\nA Allow only alphabetic characters\r\nN Allow only alphabetic and numeric characters\r\nX Allow any character\r\n9 Allow digits for any data type including sign for numeric\r\n# Allow digits, signs and spaces for any data type\r\nL Allow only T, F, Y or N\r\nY Allow only Y or N\r\n! Convert alphabetic character to upper case\r\n$ Display a dollar sign in place of a leading space in a numeric\r\n* Display an asterisk in place of a leading space in a numeric\r\n. Display a decimal point\r\n, Display a comma\r\n-------------------------------------------------------------------------\r\n','2005-01-20','14:41:24','dias','0100-01-01','','',''),(3,'PRFORM() TIP 1','Variables you may use in Printout Browsing view','','','TIPS','prform(), printfrm()','W3','Inside browsing view of the printout class (_v) you may use the below variables. These variables are valid also for printing with printfrm()\r\n_f_forms (n) = The total main forms will be printout on each page\r\n_port_land (n) =1 portrait printout (default), =2 landscape printout\r\n_wwidth (n) = the page width in pixels. If it is 0, then gets the windows settings value (initial value = 0)\r\n_whight (n) = the page height in pixels. If it is 0, the gets the windows settings value (initial value = 0)\r\n_pdraft (n) = If it is 1 and the printer driver allows it, performs draft printout (initial value = 0)\r\n_wlppage (n) = lines per page (initial value = 66)\r\n_wcprow (n) = columns per page (initial value = 135)\r\n_preview (n) = If it is 1, is displayed on screen the printout preview (initial value = 1)\r\n_pr_kind (n) = If it is 0, displays the printer selection screen. \r\n                     if it is 1 send the command for printing to the printer was defined with the variable _custprin\r\n                     if it is 99 send the printout to file with name  was defined with the variable _custprin\r\n_custprin (c) = the printer name will be activated if _pr_kind is not 0. ATTENTION!! The name should be the same appears in windows -> printers. If it is not installed the printer defined in variable, then appears the printer selection screen.\r\n                  if _pr_kind=99 then it is the file name to crate with printout content. \r\n_pr_tooem (l) = default value is .f.  If it is .t. then the printout is to oem (for dos)\r\n_memolen (n) = the line length used for fields and memo type variables printing.\r\nThe following variables are not used in forms printing with printfrm()\r\nAlso, the variables are defining which printout form will be used for header and footer:\r\n_header (l) : if it is .t. then the form has header. Has to be .t. if is called prform()\r\n_footer (l) : if it is .t. then the form has footer. Has to be .t. if is called prform()\r\n_headfrm (c) : The name of header printout form. Usually is <form>+\'_h\' (_form the name of the main form)\r\n_footfrm (c) : The name of footer printout form. Usually is <form>+\'_f\' (_form the name of the main form)\r\nPrintout Sub footers\r\nThe printout can have sub footers, according to the one or more fields value. For this, you have to make the following settings:\r\n_subexp (c) = the syntax is setting up the sub footers (for example: \"str(p01,10)\")\r\n_subfrm (c) = the printout form used when sub footer changes.\r\n_formlines (n) = the total lines number from the main printout form. If you define it, then change page for each sub footer.\r\n\r\nVariables used in Pegasus language and updated while form printing:\r\npage (n) = page number is printing. The first page has the value 1\r\nfpage (n) = the main forms number from the printout page. The first main printout form has as value 1. When fpage becomes equal or bigger then _f_forms , is printing the footer and then change the page.\r\n','2005-05-18','20:05:26','dias','0100-01-01','','',''),(4,'PRFORM() TIP 4','Printout form definition','','','TIPS','','W3','While printout form settings, for each content will be printed we have to define:\r\nLine = the line will be printed the content\r\nColumn = the column will be printed the content.\r\nPegasus transforms automatically the line and the column in pixels according to the width and length of the paper and according to the lines and the columns we have settled (the variables _wwidth, _whigh,_wlppage, _wcprow of the browsing view)\r\nType = the type defines the content of the next field \"Syntax\"\r\nT (Title): Is printing exactly was it is written to the Syntax\r\nE (Syntax): The syntax contains one arithmetic syntax, which has the variables and the fields of the file\r\nF (Field): The syntax defines the field of the file\r\nI\' (fuNction): The syntax contains some Pegasus function\r\nI` (Memo): The syntax contain field or variable of memo type. Pegasus will start to print from that line all the memo lines (the variable _memolen set up the line length in characters that will be printed from the memo)\r\nSyntax= the content will be printed\r\nCondition = One condition which is setting if will be printed the content. If has no value then the content will be printed continuously.\r\n\r\nPrinting Line\r\nWhen printing each scheme starts to print from the line 0. The line 0 is the line ends the previous scheme. This way, he header starts from the beginning. It has to be printed in the end of one empty line, to which the main printing scheme will start to be printed. In addition, for each printing scheme it starts from the line 0 (is the one to which remain the printing from the previous printing scheme), etc.\r\n\r\nFor example\r\nHEADER\r\n0-----------------------\r\n1 Header. Our header is using 5 lines (from 0 until 4)\r\n2 Have to be printed also to the line 5 and the column 0 the empty string (line=5, column=0, type=T)\r\n3 for being ready the main printing scheme will start from there.\r\n4----------------------\r\nMAIN PRINTING SCHEME\r\nThe main printing scheme in order to print one line needs to have to the line 0 the command to print the fields we want and to the line 1 column 0 to print the empty string as well as the next line to be ready for printing.\r\nFOOTER\r\nIn addition, the footer starts from the line 0 (there where the last printing scheme will stop printing)\r\nIf we want to print to a certain line something (useful observation in cases of invoices) we use the function printtext()\r\nAll the print group functions, as lines, count the line as 0 the one from which will start printing.','2005-01-20','17:16:05','dias','0100-01-01','','',''),(5,'-11. OS ERRORS','Description of OS ERRORS','','','TBL','','W3',' -------------------------------\r\n Error    Description\r\n Number\r\n -------------------------------\r\n  1       Invalid function number\r\n  2       File not found\r\n  3       Path not found\r\n  4       Too many open files  (no handles left)\r\n  5       Access denied\r\n  6       Invalid handle\r\n  7       Memory control blocks destroyed\r\n  8       Insufficient memory\r\n  9       Invalid memory block address\r\n 10       Invalid environment\r\n 11       Invalid format\r\n 12       Invalid access code\r\n 13       Invalid data\r\n 14       Reserved\r\n 15       Invalid drive was  specified\r\n 16       Attempt to remove the  current directory\r\n 17       Not same device\r\n 18       No more files\r\n 19       Attempt to write on  write-protected diskette\r\n 20       Unknown unit\r\n 21       Drive not ready\r\n 22       Unknown command\r\n 23       Data error (CRC)\r\n 24       Bad request structure length\r\n 25       Seek error\r\n 26       Unknown media type\r\n 27       Sector not found\r\n 28       Printer out of paper\r\n 29       Write fault\r\n 30       Read fault\r\n 31       General failure\r\n32       Sharing violation\r\n33       Lock violation\r\n34       Invalid disk change\r\n35       FCB unavailable\r\n36       Sharing buffer overflow\r\n 37-49    Reserved\r\n 50       Network request not supported\r\n 51       Remote computer not listening\r\n 52       Duplicate name on network\r\n 53       Network name not found\r\n 54       Network busy\r\n 55       Network device no longer exists\r\n 56       Network BIOS command limit exceeded\r\n 57       Network adapter hardware error\r\n 58       Incorrect response from network\r\n 59       Unexpected network error\r\n 60       Incompatible remote adapter\r\n 61       Print queue full\r\n 62       Not enough space for  print file\r\n 63       Print file deleted (not enough space)\r\n 64       Network name deleted\r\n 65       Access denied\r\n66       Network device type incorrect\r\n67       Network name not found\r\n68       Network name limit exceeded\r\n69       Network BIOS session limit exceeded\r\n70       Temporarily paused\r\n71       Network request not accepted\r\n72       Print or disk redirection paused\r\n73-79    Reserved\r\n 80       File already exists\r\n 81       Reserved\r\n 82       Cannot make directory entry\r\n 83       Fail on INT 24H\r\n 84       Too many redirections\r\n 85       Duplicate redirection\r\n 86       Invalid password\r\n 87       Invalid parameter\r\n 88       Network device fault\r\n','2014-06-02','10:18:52','tesae','0100-01-01','','',''),(6,'ENVIROMENT PEGASUS CLASSES','Περιγραφή τάξεων περιβάλλοντος Πήγασου','','','GEN','','W3','Κάθε ενέργεια του Πήγασου πρέπει να έχει τις τέσσερεις τάξεις περιβάλλοντος που περιγράφονται παρακάτω (επιλογών, βοήθειας, λεξικών και πλαισίων). Σημειώστε ότι στον κωδικό του χρήστη ορίζουμε τις 4 αυτές τάξεις οι οποίες θα ενεργοποιούνται κατά την είσοδό του στην εφαρμογή. Ομως όταν ενεργοποιείται μία νέα ενέργεια θα πρέπει να κάνουμε αλλαγή των τάξεων αυτών. \r\n\r\nΤάξεις Επιλογών : Ορίζουν τα menu της εφαρμογής. Ολες οι συναρτήσεις των menu αναφέρονται στην τρέχουσα τάξη επιλογής. Η μεταβλητή menufle έχει τό όνομα της τρέχουσα τάξης επιλογών. Η κάθε τάξη επιλογών έχει όνομα men+<base> (π.χ. menetf) Για κάθε τάξη επιλογών υπάρχει το αρχείο της και ένα δείκτης με όνομα i1<ονομα τάξης> (π.χ. i1menetf)\r\n\r\nΤάξεις Βοήθειας : Είναι τα παράθυρα βοήθειας που εμφανίζονται στην εφαρμογή. Στις συναρτήσεις που υπάρχει όρισμα \"κωδικός βοήθειας\" αναφέρεται στην τρέχουσα τάξη βοήθειας. Η μεταβλητή _newhelp έχει τό όνομα της τρέχουσα τάξης βοήθειας. Η κάθε τάξη βοήθειας έχει όνομα hel+<base> (π.χ. heletf).\r\n \r\nΤάξεις Λεξικών : Είναι τα μηνύματα που εμφανίζονται στην εφαρμογή. Οι συναρτήσεις που αναφέρονται σε κωδικό λεκτικού - μηνύματος, αναφέρονται στην τρέχουσα τάξη λεξικών. Η μεταβλητή messfle έχει τό όνομα της τρέχουσας τάξης λεξικών. Η κάθε τάξη λεξικών έχει όνομα dic+<base> (π.χ. dicetf).\r\n\r\nΤάξεις Πλαισίων : Πολλές συναρτήσεις του Πήγασου αναφέρονται στον κωδικό του πλαισίου που θα χρησιμοποιήσουν για την δημιυργία πλαισίου εμφάνισης. Ο κωδικός αυτός αναφέρεται στην τρέχουσα τάξη πλαισίου.  Η κάθε τάξη πλαισίου έχει όνομα box+<base> (π.χ. boxetf).\r\n\r\nΓια την αλλαγή των ενεργών τάξεων μπορείτε να χρησιμοποιήσετε την μέθοδο zzzp01. Ενα παράδειγμα φαίνεται παρακάτω : \r\n\r\n#### Ενεργοποίηση των τάξεων περιβάλλοντος για την βάση atf\r\nPUBVARS(\'ZZZV01\')\r\nP_VAL(@ZZZ_AMES, \"\'DICATF\'\")\r\nP_VAL(@ZZZ_AMEN, \"\'MENATF\'\")\r\nP_VAL(@ZZZ_AHEL, \"\'HELATF\'\")\r\nP_VAL(@ZZZ_ABOX, \"\'BOXATF\'\")\r\nDOPEG(\'ZZZP01\', 0)\r\nRELVARS(\'ZZZV01\')\r\n\r\n#### εκτέλεση της ενέργειας διαχείρισης της βάσης\r\nDOPEG(\'ATFP00\', 1)\r\n\r\n#### επαναφορά των κύριων τάξεων περιβάλλοντος\r\nPUBVARS(\'ZZZV01\')\r\nP_VAL(@ZZZ_AMES, \"\'DICTES\'\")\r\nP_VAL(@ZZZ_AMEN, \"\'MENTES\'\")\r\nP_VAL(@ZZZ_AHEL, \"\'HELTES\'\")\r\nP_VAL(@ZZZ_ABOX, \"\'BOXTES\'\")\r\nDOPEG(\'ZZZP01\', 0)\r\nRELVARS(\'ZZZV01\')\r\n\r\n##RETURN','2002-10-01','10:34:24','tesae','0100-01-01','','',''),(7,'PEGASUS CLASSES','Pegasus Classes','','','GEN','','W3','The Pegasus Classes (except the ones described in environment Pegasus classes) are:\r\nButton Bars Classes: Set up the button bars will be used as well as in the initial menu (from the user settings) but also the corresponding setting of getdata()\r\nPrintout Forms Classes: Are the classes defining the application printout forms. Are activated with the functions printfrm() and prform(). Complete description you will find in prform()\r\nScreens Classes: The screen Classes define the corresponding screens for databases (for example etf_d or the screen class of the database etf). In addition, we may have screen classes that define screens do not describe the structure of one database, but are used from user to enter the searching data. These screen classes should have the name starting from _ (underscore). If for the screen classes corresponding to databases we can have only ONE for each database, the screen classes are not related to a database can be ten for each case. For example, there is only etf_d not also etf_d1, and so on, but we may have _02_d, _02_d1, _02_d2, _02_d3, _02_d4, _02_d5, _02_d6, _02_d7, _02_d8, and _02_d9.\r\nThe screens classes are called with getdata(), but are used from both initvar() and initrec()\r\nMore details about screen classes you will find in getdata()\r\nVariables Classes: Contain the variables you want to be activated and used in application. The variable of each class are activated with pubvars() and remain active until application exit (or the action exit if was activated with dopegobj()), or until will be deactivated with relvars()\r\nKeys Classes: Activated from cpegbrose() (see the corresponding definition). Each keys class describes the buttons will be displayed in the down side of the screen browsing view and the actions will execute.\r\nATTENTION!!! Only one button for each keys class will define the exit from browsing view (has not a valid value for the task will execute and 0 to the corresponding field - 0=Exit). If you want to execute one task and after to close the screen, that in the and of the action you should use closeit()\r\nMethods Classes: Describe the commands and functions are executing. Are activated from many Pegasus functions taking as parameters methods. The main functions calling the methods are dopeg() and dopegobj()\r\n','2005-01-20','14:41:29','dias','0100-01-01','','',''),(8,'PEGASUS ENVIRONMENT','Description of Pegasus Environment','','','GEN','','W3','Each Pegasus action needs the 4th environment classes described below (selections-menu, help, dictionaries and boxes). Please notice that in user code we define these 4 classes will be activated from application entry. However, when is activated a new action we have to make changes to these four classes.\r\nMenu Classes: Defines application\'s menu. All menu functions are reporting to the current menu class. The variable menufle has the name of the current menu class. Each menu class has the name men+<database> (for example menetf). For each menu class there is one file and one index named i1<menu class name> (for example i1menetf)\r\nHelp Classes: Are the help screens appears in application. To the functions where there is the definition \"help code\" is reporting to the current help class. The variable _newhelp has the name of the current help class. Each help class has the name hel+<database> (for example heletf).\r\nDictionaries Classes: Are the messages appears in application. The functions reporting to dictions-message code refers to the current dictionaries class. The variable messfle has the name of the current dictionaries class. Each dictionaries class has the name dic+<database> (for example dicetf).\r\nBoxes Classes: Many Pegasus functions are referring to the box code where will be used in order to create the display box. This code is reporting to the current box class. Each box class has the name box+<database> (for example boxetf).\r\nIn order to change the active classes, you may use the method zzzp01. To give you an example:\r\n#### Activate the environment classes for the database atf\r\nPUBVARS(\'ZZZV01\')\r\nP_VAL(@ZZZ_AMES, \"\'DICATF\'\")\r\nP_VAL(@ZZZ_AMEN, \"\'MENATF\'\")\r\nP_VAL(@ZZZ_AHEL, \"\'HELATF\'\")\r\nP_VAL(@ZZZ_ABOX, \"\'BOXATF\'\")\r\nDOPEG(\'ZZZP01\', 0)\r\nRELVARS(\'ZZZV01\')\r\n#### Execute the database management task\r\nDOPEG(\'ATFP00\', 1)\r\n#### Recall the main environment classes\r\nPUBVARS(\'ZZZV01\')\r\nP_VAL(@ZZZ_AMES, \"\'DICTES\'\")\r\nP_VAL(@ZZZ_AMEN, \"\'MENTES\'\")\r\nP_VAL(@ZZZ_AHEL, \"\'HELTES\'\")\r\nP_VAL(@ZZZ_ABOX, \"\'BOXTES\'\")\r\nDOPEG(\'ZZZP01\', 0)\r\nRELVARS(\'ZZZV01\')\r\n##RETURN\r\n','2006-05-25','10:34:23','dias','0100-01-01','','',''),(9,'STANDARD FILES & DBASES','Description of the main Pegasus files and databases','','','GEN','','W3','The standard files used from Pegasus are:\r\nsets.dbf, sets.dbt = describe the system parameters\r\narxepon.dbf = contain the printout titles\r\nThe standard databases used from Pegasus are:\r\nu01 = Application\'s help screens\r\nuse = Application\'s users\r\np08 = System history\r\np24 = Users history\r\nPegasus and DIAS are using all the databases with the name starting from p (p01, p02, ....) and also the screens classes from _00_d to _00_d9, from _01_d to _01_d9, _02_d, from _0a_d to _0a_d9 and from _0b_d to _0b_d9 , for this reason it is recommended not to use or create such as these ones.','2005-01-20','14:41:40','dias','0100-01-01','','',''),(10,'GETDATE()','Select date from the calendar','getdate(_date, _prompt, _min, _max, _top, _left, _orel)','D','DATE','date(), time()','W3','Use to: Displays one calendar from where user selects one date.\r\n\r\nArguments\r\n   _date (d): The date is starting the calendar. If it is = ctod(\'0\') then it gets the date()\r\n   _prompt (c) : Optional. The title of window. If nil then \'Select a Date\' appears\r\n   _min, _max (d) : Optional. Minimum and Maximum date user can select. If it is nil then user can select any date. \r\n                   It can be = nil. \r\n   _top, _left (n) : Optional. Top, Left coordinates of date window. If = nil the window is centered\r\n   _orel (o) : Optional. If it is<>nil, then _top and _left are relative to _orel coordinates.\r\n\r\nReturns:\r\nThe date was selected from user\r\nExample:\r\np_val(@_np01, \"getdate( np01) \")\r\n','2007-01-08','18:49:54','dias','0100-01-01','','',''),(11,'GETDATA() TIP 2','Display Browse screen','','','TIPS','','W3','While creates one screen class, except the fields you may have and one or more browse for other databases.\r\nFor example, inside client screen to be displayed the records about the contacts we had with.\r\nFor this, you have press, inside screen designer, right click and to select \"new browse\"\r\n\r\nHere you define:\r\nName: the browse name. Automatically, with name o + <name> you refer to object (for example with the functions refrit() ).\r\nSequence: should be from -499 to -400\r\nLine, Column: the display place from left up side of box will be created inside the screen.\r\nLength: the screen width (browse)\r\nHeight: the screen height\r\nFile: the file name will look for. The name can be placed inside inverted commas (for example \'a01\') or one variable, for temporary files cases (for example p_temp)\r\nDescription: Is the database description class will design the browse. The name can be inside inverted commas (for example \'a01_d\') or one variable (for example p_desc)\r\nCondition: the condition should be respected from all records will be displayed (pay attention not to insert inverted commas in syntax) for example p00=etf->nr01\r\nIndex No. : The index suite used to search.\r\nSearch value: the value used to search the first record (for example. etf-&gtnr01)\r\nIf you don\'t mention the index number and the search value then will be displayed the current record. In this case, before using the function getdata() to setup that he file has the proper classification so will show you the right record.\r\nDouble-click Method: The method name will be executed if the user performs double-click on one record (not necessary to be activated).\r\n\r\nOne example for display record from the clients database etf using the screen class which has the Browse inside the database a01\r\n### I open the database a01 and find the 1st record I want to be displayed.\r\ndbopen(\'a01\', \'a01_d\', .f.)\r\ndborder(\'a01\', \'a01_d\', \'p00\')\r\nseek_var(etf-&gtnr01)\r\ninitrec(\'etf\', \'etf_d\', .f.)\r\ngetdata(\'etf\', \'etf_d\', .t., 10, .t., 1)\r\nreleasvar(\'etf_d\')\r\n\r\n','2005-01-20','16:48:56','dias','0100-01-01','','',''),(12,'PRFORM() TIP 5','Select with a button a value from a browse screen','','','TIPS','','W3','Many times we want to insert in a browsing view one button to give to the user the possibility of choosing from one database the records wants to send for printing.\r\n\r\nThis can be made if in the browsing view you create one line (for each button you want to have) with the following data:\r\nTitle = the button title\r\nVariable = [but] (you mention it as it is written, without empty spaces)\r\nInitial Value = the action that will be executed\r\n\r\nFor example:\r\np_val(@_les, \"sgetsfld(\'s06\', \'s06_d\', \'p01\', \'p01\', _les, \'.t.\', _les, 100, 10, 520, 780, 3, .t.)\") + refrit(o_les)\r\nLine, Column = the place will be displayed\r\n\r\nATTENTION!!!\r\nThe variables used in one browsing view have also their Object with a name that looks like o<variable> for example _les and o_les\r\n','2005-01-20','17:16:55','dias','0100-01-01','','',''),(13,'AADD()','Create a new element of the array with the given value','aadd(_array, _val)','U','ARRAY','array()','B','Create a new element of the array with the given value\r\nUse to: Create a new element of the array with the given value Use to: Create a new element of the array with the given value.\r\nParameters:\r\n_array: the array where the value will be inserted.\r\n_val: the value to be inserted.\r\nExamples:\r\np_val (@_anarr, \"array (0)\")\r\naadd (_anarr, \"10\")\r\naadd (_anarr, \"20\")\r\nIn the above commands was created one array with two places and values 10, 20 (in sequence).\r\n\r\n\r\n','2005-01-20','14:34:35','dias','0100-01-01','','',''),(14,'ARRAY()','Create onearray with specific dimensions','array(_dim)','A','ARRAY','aadd()','B','Use to: Activate an array\r\nParameters:\r\n_dim : The total places of the array\r\nReturns the new array\r\nExample:\r\np_val(@_anarr, \"array(0)\")\r\naadd(_anarr, \"10\")\r\naadd(_anarr, \"20\")\r\nWith the above commands was created one array with two places and the values 10, 20 in sequence.\r\n','2005-01-20','14:34:48','dias','0100-01-01','','',''),(15,'FCLOSE()','Close one binary file','fclose(_han)','L','BFILE','fopen(), fread(), fwrite(), fcreate()','B','Close one Binary file\r\nUse: Close one binary file and in the same time opens it\r\nParameters:\r\n_file (c) : the file name\r\n_mode (n) : sets up the options of the application to the file. If you have not given this setting then it is considered that you have given the value 0. The values may have are:\r\n0 : you may write and read the file\r\n1 : you may only read the file\r\n2 : the file is hidden\r\n4 : is it a system file\r\nReturns one number according to the file administrator. This value is used to set up the file. If it is not possible to create the file, returns -1\r\nExamples\r\n### Creates the test.asc and writes\r\np_val(@_han, \"fcreate(\'test.asc\')\")\r\n##IF _han=-1\r\nmsgalert(\'The file was not created\')\r\n##RETURN\r\n##ENDIF\r\nfwrite(_han, \'This is the content of this file\')\r\nfclose(_han)\r\n','2005-01-20','14:34:58','dias','0100-01-01','','',''),(16,'FCREATE()','Creates one binary file','fcreate(_file, _mode)','N','BFILE','fopen(), fread(), fclose(), fwrite()','B','Creates one Binary file\r\nUse to: Creates a binary file and in the same time opens it\r\nParameters:\r\n_file (c) : the file name\r\n_mode (n) : sets up the options of the application to the file. If you have not given this setting then it is considered that you have given the value 0. The values may have are:\r\n0 : you may write and read the file\r\n1 : you may only read the file\r\n2 : the file is hidden\r\n4 : is it a system file\r\nReturns one number according to the file administrator. This value is used to set up the file. If it is not possible to create the file, returns -1\r\nExamples\r\n### Creates the test.asc and writes\r\np_val(@_han, \"fcreate(\'test.asc\')\")\r\n##IF _han=-1\r\nmsgalert(\'The file was not created\')\r\n##RETURN\r\n##ENDIF\r\n\r\nfwrite(_han, \'This is the content of this file\')\r\nfclose(_han)','2005-01-20','14:35:05','dias','0100-01-01','','',''),(17,'FOPEN()','Opens one binary file','fopen(_file, _mode)','N','BFILE','fcreate(), fclose(), fwrite(), fread()','B','Opens one binary file\r\nUse to: Open a Binary file for administration.\r\nParameters:\r\n_file (c) : The file name\r\n_mode (n) : Set up the options you may have for the file you have opened. If missing, consider that have taken the value zero (0). The other values may have are:\r\n0: Read only\r\n1: Write only\r\n2: Read and Write\r\nTo these values, you may expose one from the following settings about how to share the file on network:\r\n16 : the other users cannot see it in the same time\r\n32 : the other users may write only\r\n48 : the other users may read it only\r\n64 : the other users may have complete right to use.\r\nIf, for example _mode=2+16=18 then you may read and write the file even all the users cannot use it until will be closed.\r\nReturns one number corresponding to file administrator. If returns -1, then the file didn\'t open because appeared one error.\r\nExample\r\n### Opens the test.asc and writes\r\np_val(@_han, \"fopen(\'test.asc\', 2)\")\r\n##IF _han=-1\r\nmsgalert(\'Didn\'t open the file\')\r\n##RETURN\r\n##ENDIF\r\n','2005-01-20','14:35:12','dias','0100-01-01','','',''),(18,'FREAD()','Reads from a binary file','fread(_han, @_buffer, _len)','N','BFILE','fopen(), fcreate(), fwrite()','B','Reads from one Binary file\r\nUse to: Read a string from a binary file\r\nParameters:\r\n_han (n) : The file administrator (returned from fopen() or fcreate() )\r\n_buffer (c) : One empty string with so many bytes - characters - as must read\r\n_len (n) : The total number of characters has to read\r\nReturns the total number of the characters read. If the number is smaller than _len or 0, then the file has finished or appeared a problem while reading.\r\nExample\r\n### Opens the test.asc and reads it by 10 Bytes up to the end. For each 10 bytes, runs the method ascp010\r\np_val(@_han, \"fopen(\'test.asc\')\")\r\n### 10\r\np_val(@_buf, \"space(10)\")\r\np_val(@_len, \"fread(_han, @_buf, 10)\")\r\n##IF _len=10\r\ndopeg(\'ascp010\')\r\n##GO 10\r\n##ENDIF\r\nfclose(_han)\r\n','2012-07-04','10:07:59','tesae','0100-01-01','','',''),(19,'FWRITE()','Writes to a binary file','fwrite(_han, _buffer)','N','BFILE','fopen(), fclose(), fread(), fcreate()','B','Writes to a Binary file\r\nUse to: Write a string to a binary file\r\nParameters:\r\n_han (n) : the administrator file\r\n_buffer (c) : the string will write\r\nReturns the total number of Bytes - characters - where written. If it is smaller then the length of _buffer or 0 then it is possible that the disk is full or the file has occur an error.\r\nExamples\r\n### Opens the test.asc and writes\r\np_val(@_han, \"fopen(\'test.asc\', 2)\")\r\n##IF _han=-1\r\nmsgalert(\' Didn\'t open the file\')\r\n##RETURN\r\n##ENDIF\r\nfwrite(_han, \'This is the last content of this file\')\r\nfclose(_han)','2005-01-20','14:35:25','dias','0100-01-01','','',''),(20,'BMPADJUST()','Adjusts the image to the windows dimensions','bmpadjust(_bmpob, _type)','C','BMP','bmpzoom()','W3','Adjust the image to the window dimensions.\r\nUse to: Into an image type field it changes the way it appears so the images is adjusted to the window dimensions you have set up.\r\nParameters:\r\n_bmpob: The image object. If the field has name, for example pimage, the object is opimage\r\n_type : if it is .t., then takes the entire respective window\r\nReturns an empty string\r\nExample\r\nBmpabjust (opimage, .t.)\r\n\r\n','2005-01-20','14:35:32','dias','0100-01-01','','',''),(21,'BMPCLOSE()','Closes one object created with bmpopen()','bmpclose(_bmpobj)','C','BMP','bmpopen()','W3','Closes one object created with bmpopen()\r\nUse to: Close an object created with bmpopen()\r\nParameters:\r\n_bmpobj (o) : the object will close\r\nReturns one empty string','2005-01-20','14:35:38','dias','0100-01-01','','',''),(22,'BMPLOAD()','Loads to an image object ane new image of BMP type','bmpload(_bmpobj, _file)','C','BMP','','W3','Loads to an image object one new image of bmp type\r\nUse to: To icon type fields we may change the image from the screen using bmpload()\r\nParameters:\r\n_bmpobj : The image object\r\n_file : The file will be loaded\r\nReturns an empty string\r\nExample\r\nbmpload (opimage, \'..\\bmp\\test1.bmp\')\r\nrefrit(opimage)\r\n','2005-01-20','20:32:20','dias','0100-01-01','','',''),(23,'BMPOPEN()','Displays one image of BMP type to a window','bmopen(x, y, _file, _odlg)','O','BMP','bmpclose()','W3','Displays one image of bmp type to an window\r\nUse to: Display one image in one window.\r\nParameters:\r\n_x (n) : the display line\r\n_y (n) : the display column\r\n_file (c) : the image file name\r\n_odlg (o): the window\'s Object\r\nReturns the object creates.\r\n','2005-01-20','14:35:50','dias','0100-01-01','','',''),(24,'BMPZOOM()','Makes zoom to a BMP file','bmpzoom(_obmp, _poso)','C','BMP','bmpadjust()','W3','Makes zoom to a bmp file\r\nUse to: Make zoom the image in/out using +/ - inside icon type fields\r\nParameters\r\n_obmp : The image object\r\n_poso : The zoom percentage\r\nReturns an empty string\r\nExample\r\nbmpzoom(opim, -10)\r\n','2005-01-20','20:32:04','dias','0100-01-01','','',''),(25,'CDOW()','The week day corresponding to a date','cdow()','C','DATE','day(), month(), dow()','B','The weekday corresponding to a date\r\nUse to: Return the weekday corresponding to the date _date as string (in English)\r\nParameters:\r\n_date (d): is one valid date.\r\nReturns the day is corresponding to the date _date\r\nRemarks: The weekday is returned in English, with capitals and small letters like Monday. The bigger word returned from this function is Wednesday which has length 9 characters. If insert empty date returns one empty string.\r\nExamples:\r\n?DATE() &&returns 08/14/89\r\n?CDOW(DATE()) &&returns Monday','2005-01-20','14:36:04','dias','0100-01-01','','',''),(26,'CMONTH()','The month name corresponding to a date','cmonth(_date)','C','DATE','month(), date(), day(), cdow(), dow()','B','The month name corresponding to a date\r\nUse to: Return the name of the month as a string (in English).\r\nParameters:\r\n_date (d): The date of which will return the month.\r\nReturns the month name.\r\nExamples:\r\n? DATE () && returns the current date.\r\n? CMONTH (DATE ()) && returns the current month.\r\n','2005-01-20','14:36:11','dias','0100-01-01','','',''),(27,'CTOD()','Transform one string to date','ctod(_chr)','D','DATE','dtoc(), dtos(), ?QUERY?CFPP020','B','Use to: Transform a string to date.\r\nParameters:\r\n_chr: One string syntax that predefines the date. The SPACE (8), \'0\', \"\", or \"//\" may be used to display no valid dates.\r\nReturns a date\r\nExample:\r\np_val(@_dt, \"ctod(\'0\')\")\r\n### Activates one variable with the value of an empty date.\r\np_val(@_dt, \"ctod(\'01/01/2000\')\")\r\n### The variable _dt takes the value 01/01/2000\r\nTo the screen class we may insert to the fields from type D (date) as initial value ctod (\'0\') if we want it\'s to have the empty date.','2016-06-23','14:18:30','tesae','0100-01-01','','',''),(28,'DATE()','Returns the system date','date()','D','DATE','ctod(), dtoc(), dtos()','B','Use to: Return the system date.\r\nParameters:\r\nNone\r\nReturns a date.\r\nExample:\r\nInitialize the variable with the system date:\r\np_val(@_dt, \'date()\')()\')\r\n\r\n','2005-01-20','14:36:38','dias','0100-01-01','','',''),(29,'DAY()','Returns from a date the month day as a number','day(_date)','N','DATE','date(), month(), dow(), cdow()','B','Use to: Return from a date the month day as number\r\nParameters:\r\n_date (d) : The date from will return the day as number\r\nReturns numeric\r\nExamples:\r\n? DATE () && for example returns 02/07/89.\r\n? DAY (DATE ()) && returns 07.','2005-01-20','14:36:50','dias','0100-01-01','','',''),(30,'DOW()','Returns from a date the weekday as a number','dow(_date)','N','DATE','day(), month(), date(), cdow()','B','Use to: Return from a date the weekday as number. For Sunday returns the value 1 and for Saturday returns the value 7.\r\nParameters:\r\n_date (d) : The date from will return the day as number .\r\nReturns numeric\r\nExamples:\r\n? DATE() && returns for example 09/09/89.\r\n? CDOW() && returns Saturday.\r\n? DOW() && returns 7.\r\n','2005-01-20','14:36:57','dias','0100-01-01','','',''),(31,'DTOC()','Transform ane date to string','dtoc(_date)','C','DATE','dtos(), date(), dow()','B','Use to: Transform one date to string to be displayed in screen and printout\r\nParameters:\r\n_date (d) : The date will transform\r\nReturns a string\r\nExample:\r\np_val(@_tit, \"\'Printout Date: \' + DTOC(date())\")\r\nATTENTION!!!\r\nIf we want to transform one field of type D to string, in index syntax definition (in one screen class), we have to use dtos() in staid of dtoc()','2005-01-20','14:37:03','dias','0100-01-01','','',''),(32,'DTOS()','Transforms in data classes one date to string shape appropriate for complex indexes','dtos(_date)','C','DATE','dtoc(), date()','B','Use to: Transform a date to string that can be used as part of one complex index.\r\nParameters:\r\n_date : The date will transform.   \r\nReturns a string.\r\nRemark:\r\nWhile creating a complex index with one date type field in Pegasus language, it is recommended to use this function.\r\nExample:\r\nFUSE(\'test\', .T.)\r\nINDEX_ON(p01+dtos(p02),\'testntx\')','2005-01-20','14:37:13','dias','0100-01-01','','',''),(33,'FINDTIME()','Finds the mediation time between two ones','findtime(dt1, tim1, dt2, tim2)','N','DATE','date(), time()','B','Use to: Find out the time interval between two date - times\r\nParameters:\r\ndt1, tim1 : the first time with date and hour (hours: minutes)\r\ndt2, tim2 : the second hour with date and hour (hours: minutes)\r\nReturns (n) time in minutes\r\nExample:\r\nfindtime(date(), \'10:10\', date()+1, \'11:30\')','2011-04-26','18:02:59','tesae','0100-01-01','','',''),(34,'MONTH()','Transform themonth from ane date in number','month(_date)','N','DATE','day(), date(), dow()','B','Use to: Calculate the month from one date\r\nParameters:\r\n_date: any valid date\r\nReturns numeric\r\nExamples:\r\n? DATE() && returns for example 02/07/89\r\n?MONTH(DATE()) && returns 7.\r\n','2005-01-20','14:37:35','dias','0100-01-01','','',''),(35,'YEAR()','Find the year from one date','year(_date()','N','DATE','date(), month(), day()','B','Use to: Find the year from one date\r\nParameters:\r\n_date: is the date we want to transform.\r\nReturns (n) the year of date\r\nExample:\r\n? YEAR (CTOD (\'02/09/1999\')) && returns 1999.\r\n','2006-08-21','13:10:22','dias','0100-01-01','','',''),(36,'ADD_REC()','Adds a new record to a database of xbase file','add_rec()','C','DBPEG','rec_lock(), seek_var(), replfld()','B','Use to: Create a new record to a database or to an xbase file. The new record is locked, so there is no need to be preceded by rec_lock() before being updated.\r\n\r\nReturns an empty string\r\n\r\nExample:\r\naselect(\'etf\')\r\nadd_rec()\r\nreplfld(\'etf\', \'nr01\', \"new_rec(\'etf\')\")\r\nreplfld(\'etf\', \'p19\', \'np19\')\r\nreplfld(\'etf\', \'p21\', \'str(3000000000+nr01,10\r\n','2005-01-20','20:08:25','dias','0100-01-01','','',''),(37,'APPENDFROM()','Appends data from a database one file','appendfrom(_fromfile, _cond, _type, _delmt)','C','DBPEG','copyto(), filetooem(), filetoansi()','B','Use to: Append data from one file to the current database. The appended data will be placed to the end of the database.\r\n\r\nParameters:\r\n_fromfile (c): The file from where the data will be copied. This file has to be closed.\r\n_cond (c): The condition has to be valid for the records will be transferred.\r\n_type (n) : The type of _fromfile\r\n0=xbase file\r\n1=ASCII file where the fields will be written to columns with fixed length\r\n2=ASCII file with data in each line separated by commas and character fields appearing in double quotes. Fields and records can have variable lengths.\r\n4=ASCII file with data in each line separated by commas and character fields appearing in _delmt. Fields and records can have variable lengths.\r\n\r\n_delmt (c) : the character is using if _type=4\r\n\r\nReturns an empty string\r\n\r\nExample:\r\n### Append the clients from file et1\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\nappendfrom(\'et1\', \" \'.t.\' \", 0)\r\ndbclose(\'etf\')\r\n','2005-09-09','11:50:40','dias','0100-01-01','','',''),(38,'ASELECT()','Activates one data file','aselect(_file)','C','DBPEG','fuse(), dbopen(), closefile(), dbclose(), add_rec(), rec_lock()','B','Use to: Place as current the file _file, because many Pegasus functions have tasks into the current file.\r\n\r\nParameters:\r\n_file (c): The data class in witch area you want to activate the file.\r\n\r\nReturns an empty string character suite.\r\n\r\nExamples:\r\na. Suppose the data class \"etf\" which is already open. To activate it we give the command ASELECT(\"etf\")\r\nb. The next example is doing a more complex task:\r\n### Opens the databases etf, t00\r\ndbopen (\'etf\', \'etf_d\', .f.)\r\ndbopen (\'t00\', \'t00_d\', .f.)\r\n### Finds into etf the record 10\r\naselect(\'etf\')\r\nseek_var(10)\r\n### Exposes one record to t00 with data from etf\r\naselect(\'t00\')\r\nadd_rec()\r\nreplfld(\'t00\', \'nr01\', \"new_rec(\'t00\')\")\r\nreplfld(\'t00\', \'p01\', \'etf->p21\')\r\nreplfld(\'t00\', \'p02\', \'etf->p19\')\r\n#### Closes the databases\r\ndbclose(\'etf\')\r\ndbclose(\'t00\')\r\n\r\n','2005-01-20','20:09:43','dias','0100-01-01','','',''),(39,'BOF()','Checks if we are at the beggining of one xbase file','bof()','L','DBPEG','eof(), dbskip(), dbgotop()','B','Use to: Check if was founded the beginning of the file while scrolling up in order to stop. Also, if finds the beginning of one file and bof()=.t., then the file is empty.\r\n\r\nReturns .t. if we reached the beginning of the file.\r\n\r\nExamples\r\n### 1. Scroll up on file to run one task\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndbgobottom()\r\n## 10\r\ndopeg(\'etfp010\')\r\naselect(\'etf\')\r\ndbskip(-1)\r\n##IF bof()=.f.\r\n##GO 10\r\n##ENDIF\r\ndbclose(\'etf\')\r\n### 2. Checks if the file is empty\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndbgotop()\r\n##IF bof()\r\nmsginfo(\'The file is empty\')\r\n##ENDIF\r\ndbclose(\'etf\')\r\n','2005-01-20','20:10:23','dias','0100-01-01','','',''),(40,'CHANSTRU()','Changes the structure of one Pegasus database','chanstru(_file, _desc)','C','DBPEG','reibase(), zapfle()','B','Use to: Change one database structure.\r\n\r\nParameters:\r\n_file (c): The data class will change the structure\r\n_desc (c): The screen class describing the data class.\r\n\r\nATTENTION!!! It is possible not to run correct when has data the Data Class from two known reasons up to now:\r\na. When it is changed one field type (for example, from numeric to string).\r\nb. When the length of one string field decrease and the data class has records with bigger value to that field.\r\nIn case that is not well completed the structure change, the data from your class are founded to the file with the name z_+<temp>.dbf (temp: ordinary number), for example: z_11551.dbf. This is true only if you will not perform in the meantime another structure change effort.\r\n\r\nReturns an empty string character suite.\r\n\r\nExamples:\r\nchanstru(\"etf\",\"etf_d\")','2005-01-20','20:10:59','dias','0100-01-01','','',''),(41,'CLOSEFILE()','Closes one file or a database','closefile(_file)','C','DBPEG','fuse(), dbopen(), dbclose()','B','Use to: Close the database _file or the xbase file _file.\r\n\r\nParameters:\r\n_file (c): The database name or the file name will close.\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\nFUSE (\"etf\",.F.)\r\nOPENNTX(\"etf_d\",\"etf\")\r\n.....\r\n....\r\nCLOSEFILE(\"etf\")\r\n','2005-01-20','20:11:28','dias','0100-01-01','','',''),(42,'COPYTO()','Copies data to another file','copyto(_tofile, _cond, _type, _delmt, _scond)','C','DBPEG','appendfrom()','B','Use to: Copy data from the current database to another database, another xbase file or to an ASCII file.\r\n\r\nParameters:\r\n_tofile (c): The file where will be copied the data. This file has to be closed. ATTENTION!!!! The data already existing to this file will be lost. If you want to add data, then you should use the function appendfrom()\r\n_cond (c): The condition has to be valid for the records will be transferred.\r\n_type (n) : the type of _tofile\r\n0=xbase file\r\n1=ASCII file where the fields will be written to columns with fixed length\r\n2=ASCII file with data in each line separated by commas and character fields appearing in double quotes. Fields and records can have variable lengths.\r\n4=ASCII file with data in each line separated by commas and character fields appearing in _delmt. Fields and records can have variable lengths.\r\n5=table to ODBC. In this case the _delmt=\'ODBCDBE\'. Also the dbf file must have data to OEM \r\n\r\n_delmt (c) : the character will be used if _type=4, \'ODBCDBE\' if type=5\r\n\r\nReturns an empty string\r\n\r\nExample:\r\n### Copy from Clients (etf) to the database A.E. (et1) all the ones have as Fiscal Code =094\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ncopyto(\'et1\', \"p20=\'094\' \", 0)\r\ndbclose(\'etf\')\r\nreibase(\'et1\', \'et1_d\')\r\nIn the end, perform Reindex for et1 because copyto does not update the indexes.\r\n','2009-06-11','20:18:17','dias','0100-01-01','','',''),(43,'CPEGBROWSE()','Manages one database in a table shape','cpegbrowse(_file, _desc, _box, _sit, _restscr, _hlp, _keys, _flag, _cond, _show, _keymeth, _dblmeth, _title, _focmeth)','C','DBPEG','dbopen(), dbclose()','W3','Use to: Manage in a table shape the data from one data class. The columns - fields are defined from screen class.\r\n\r\nParameters:\r\n_file (c): The data class will be managed.\r\n_desc (c) : The screen class will be used\r\n_box (n): The box code (from the active boxes class) that will be activated in sequence selection.\r\n_sit (n): If it is 0, the data class is closed the procedure runs the others. In this case it is displayed also the sequence selection box. If it is 1, then before closing the function, should already open the data class and its indexes, should select the main index and should drive you to the appropriate record of the data class. In the end, you have to close the data class.\r\n              If sit is -1 then the dbf is opened a it is a odbcput() from an ODBC table. \r\n              It used for special purposes of X fields and V fields with browse value for JOIN \r\n\r\n_restrscr (n) : Takes the value 1 (exist for compatibility with MS DOS reasons)\r\n_hlp (n): The help number for selections classification.\r\n_keys (c or a): The keys class will activate.\r\n         \r\n\r\n_flag (n) : Takes the value 1 (exists for compatibility reasons with MS DOS)\r\n_hlp (n) : The help serial number for sequence selection\r\n_keys (c - a) : The keys class activates. It can be an array of parameters of type \r\n                      {_top, _left, _bot, _right, _style, \"_func\", {\'0\'}}\r\n                          _func is a function to executed when user selects a record\r\n               \r\n                IF _sit=-1 then it must be an array\r\n\r\n_flag (n) : Takes the value 1 (exists for compatibility reasons with MS DOS)\r\n_cond (c): The condition has to be respected from the records will display.\r\n\r\nATTENTION!!! For correct usage has to be used with the parameter _sit=1, in order to have already opened the database, select the sequence, found the first appropriate record and the condition to be based on index fields\r\n_show (b) : .t. (Was maintain for compatibility reasons with the version VK4.00 for MS-DOS)\r\nYou may pass over the following parameters:\r\n_keymeth (c): the method is activated when it is pressed any keyboard key except the one is moving the scroll bar (the 4 arrows). It might be missing or have an empty value. The keyboard key is returned to the variable _wlchar (numeric value), so the method can check this variable and according to it to activate.\r\n_dblmeth (c): the method is activated when performing double click procedure. It might be missing or have an empty value. When the user is performing double click, then to the variable _wlchar returns the column number where the mouse if. The method can use this variable.\r\n_title (c): one name displayed in the window title. Please notice that the window title is defined from the screen class _desc.\r\n_focmeth (c): The method is activated when the user selects the brows window. Usually, if _cond has value, means that cpegbrowse () is used to see one part of the file records, _focmeth executes the search of the first line mach.\r\n_style (n): the window type.\r\nTakes the values 1=Strong Black vertical lines, 2=Grey vertical lines, 3=3D view (three-dimensional view), 4=Commas.\r\nDefault value is 3.\r\nReturns the empty string characters suite.\r\nRemarks:\r\nDuring cpegbrowse() running into the array _tit1 are saved the fields titles that are in sequence and can be used for searching (see also the example from machoice() )\r\n\r\nExamples:\r\n1. Manage the records with code from 15 to 100\r\nNEWAREA()\r\nFUSE (\"etf\",.F.)\r\nOPENNTX(\"etf_d\",\"etf\")\r\nSEEK_VAR(15)\r\nCPEGBROWSE (\"etf\",\"etf_d\", 10, 1, 0, 23, \'p01k01\', 1, \'15<=Nr01 .and. nr01<=100\', .f.)\r\nCLOSEFILE(\"etf\")\r\n','2006-07-12','20:18:08','dias','0100-01-01','','',''),(44,'CREATEMP()','Creates temporary file or data class','createmp(_fname,_desc, _isodbc, _dovar, _ctomem)','C','DBPEG','chanstru(), fuse(), reibase()','B','Use to: Create a data class with the structure defined from the screen class. Called while creating temporary data files or databases.\r\n\r\nParameters:\r\n_fname (c): The name of the data class will be created.\r\n_desc (c) : The screen class will be used\r\n_isodbc (l): Optional. Default = .f..  It used if we want to create a temporary dbf file and add data from an ODBC Table. \r\n                                    The fields of type l (logic) created as N:1 and fiels of type X as M:10\r\n_dovar (l): Optional. Default=.f. If it is .t. then creates fields for Variable fields too as below:\r\n                              Type = K => Create L:1 Field or N:1 if(_isodbc)\r\n                              Type = T => Create M:10 Field\r\n                              Type = V => if Decimals>0 Create N:Length:Decimals-1 Field \r\n                              Type = V => if Decimals=0 Create C:Length Field \r\n                              Type = V => if Length=0 Decimals=0 and brwose value starts with = Create C:40 Field \r\n _ctomem (l): Optional. Default = .f., If = .t. and _isodbc=.t. then fields ot C type with length more than 255 created as memo\r\n                               \r\nReturns an empty character suite string.\r\n\r\nExample:\r\nCREATEMP(\"t_tesae\",\"etf_d\")','2015-12-17','10:50:23','tesae','0100-01-01','','',''),(45,'DBCLOSE()','Closes one pegasus database with its indexes','dbclose(_file)','C','DBPEG','dbopen(), dborder()','B','Use to: Close one database with its indexes. It is necessary after the end of the task from database, as well as after closing performs complete update.\r\n\r\nParameters:\r\n_file : The database will be closed\r\n\r\nReturns an empty string\r\n\r\nExample\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndborder(\'etf\', \'etf_d\', \'p20\')\r\nseek_var(\'096929292\')\r\ndbclose(\'etf\')','2005-01-20','20:14:21','dias','0100-01-01','','',''),(46,'DBGOBOTTOM()','Goes to the last record of the current database','dbgobottom()','U','DBPEG','dbgotop(), dbskip(), seek_var()','B','Use to: Move the records index to the last record of the current data class. The move is according to the active index.\r\n\r\nExample:\r\naselect(\'etf\')\r\nset_order(2)\r\ndbgobottom()','2005-01-20','20:15:14','dias','0100-01-01','','',''),(47,'DBGOTO()','Goes to a certain record of the current database','dbgoto(_num)','U','DBPEG','dbgotop(), dbgobottom(), dbskip(), seek_var()','B','Use to: Move the records index to a specific record of the current data class. The move belongs to the active index and has to do with the type of record.\r\n\r\nParameters:\r\n_num (n) : The record number where will go\r\n\r\nExample:\r\naselect(\'etf\')\r\nset_order(2)\r\ndbgoto(10)\r\nset_order(3)\r\ndbgoto(10)\r\nIn both examples goes to the same record.\r\n','2005-01-20','20:15:52','dias','0100-01-01','','',''),(48,'DBGOTOP()','Goes to the beggining of the current database','dbgotop()','U','DBPEG','dbskip(), dbgobottom(), dbgoto(), seek_var()','B','Use to: Go to the first record of the current data class. The move is related to the active index.\r\n\r\nExamples:\r\naselect(\'etf\')\r\nset_order(2)\r\ndbgotop()','2005-01-20','20:16:20','dias','0100-01-01','','',''),(49,'DBOPEN()','Opens one pegasus database','dbopen(_file, _desc, [_mode], [_alias])','C','DBPEG','dbclose(), dborder()','B','Use to: Open a database with its indexes.\r\n\r\nParameters:\r\n_file (c) : the database\r\n_desc (c) : the description class of the screen-database\r\n_mode (l): if is .t. open for multiple usages.\r\n\r\nReturns an empty string\r\n\r\nExample\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndborder(\'etf\', \'etf_d\', \'p20\')\r\nseek_var(\'096929292\')\r\ndbclose(\'etf\')\r\n','2005-01-20','20:16:57','dias','0100-01-01','','',''),(50,'DBORDER()','Defines the sequence index intoa database','dborder(_file, _desc, _field)','N','DBPEG','dbopen(), set_order(), seek_var()','B','Use to: Define the main index sequence, same as set_order(). The difference is that defines it based on field name and not based on the sequence has in screen class. This is an advantage not to keep it in our mind while we change the screen description class of the indexes sequence.\r\n\r\nParameters:\r\n_file (c) : the database\r\n_desc (c) : the description class\r\n_field (c) : the name of the indexed field\r\n\r\nReturn the index sequence\r\n\r\nExample:\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndborder(\'etf\', \'etf_d\', \'p20\')\r\nseek_var(\'096929292\')\r\ndbclose(\'etf\')\r\n','2005-01-20','20:17:48','dias','0100-01-01','','',''),(51,'DBSKIP()','skips to the next record of the current data class','dbskip(_num)','U','DBPEG','dbgotop(), dbgobottom(), dbgoto()','B','Use to: Jump the records index of the current data class.\r\n\r\nParameters:\r\n_num (n) : The total number of records to be skipped. If it is negative, the jump will be backwards. If it is not specified, it will skip to the next record.\r\n\r\nExamples:\r\nThe following method class manages in sequence all the records of the data class etf.\r\nNEWAREA()\r\nFUSE(\'ETF\',\'ETF_D\')\r\nOPENNTX(\'ETF_D\',\'ETF\')\r\n## 10\r\nINITREC(\'ETF\',\'ETF\'_D\',.F.)\r\nGETDATA(\'etf\', \'etf_d\', .F., 10, .T., 1)\r\nREPLDATA(\'etf\',\'etf_d\',.F.)\r\nRELEASVAR(\'etf_d\')\r\nDBSKIP()\r\n##IF EOF()=.f.\r\n##GO 10\r\n##ENDIF\r\nCLOSEFILE(\'etf\')\r\n##RETURN\r\n','2005-01-20','20:18:25','dias','0100-01-01','','',''),(52,'DELIT()','Deletes a record from a database or xbase file','delit(_file)','L','DBPEG','dbskip(), seek_var(), add_rec()','B','Use to: Delete the current record of the data class _file\r\n\r\nParameters:\r\n_file (c) : The data class name where from the record will be deleted.\r\n\r\nReturns .t. if deletion is done, else .f.\r\nIf the _file is the data class of one Pegasus database, then checks if there is the method\r\n_file + _I (integrity method)\r\nIf there is, executes the method part placed between labels ##BEGDEL and ##ENDDEL\r\nTo this method, execute all tasks. The tasks defining that should not be performed the deletion must end with ##RETURN no. In this case, will not be executed the function delit()\r\n\r\nExamples:\r\n1. Delete the record with code 10 from etf\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\nseek_var(10)\r\ndelit(\'etf\')\r\ndbclose(\'etf\')\r\n2. Integrity Method etf_i of the data class etf\r\n##BEGDEL\r\n##IF printfld(\'t01\', \'p01t01\', \'nr01\', etf->p21)<>0\r\nmsgalert(\'There is a transaction made. You cannot delete the record\')\r\n##RETURN no\r\n##ENDIF\r\n##ENDDEL\r\n','2005-01-20','20:19:15','dias','0100-01-01','','',''),(53,'DOWHILE()','Execute a DO WHILE loop in a database','dowhile(_file, _desc, _scond, _cond, _sort, _vseek, _meth, _scmeth)','C','DBPEG','plussum(), givesum()','B','Use to: Execute in one database a massive task using the conditions if and dowhile..\r\n\r\nParameters:\r\n_file (c) : The database that might be closed or opened\r\n_desc (c) : The database screen class\r\n_scond (c) : One string which describes the condition dowhile\r\n_cond (c) : One string which describes the condition if\r\n_sort (c -n): Set up the sequence will see the file. If it is from string type, then it is the field starting with will start the sequence. If it is a numeric field, will declare the suite of sequence.\r\n_vseek : The value used for searching\r\n_meth (c) : The method will run for the similar records\r\n_scmeth (c): The method will run for all the current records. Called to show the task evolution if is too big. Else, is missing.\r\n\r\nReturns an empty string.\r\n\r\nExample:\r\n### For all the clients with Fiscal Code starting with 094 for which is valid p01=4 runs the method etfp010\r\n### The Fiscal Code field is p20\r\ndowhile(\'etf\', \'etf_d\', \"p20=\'094\'\", \'p01=4\', \'p20\', \'094\', \'etfp010\', \'\')','2005-01-20','20:20:00','dias','0100-01-01','','',''),(54,'EDITCELL()','Manages one cell from a browsing view','editcell(_ncol, _edobj, _edped, _pict, _method)','L','DBPEG','editrow(), gotocell()','W3','Use to: Manage one cell from one cpegbrowse (the user changes locally the value of the cell).\r\n\r\nParameters:\r\n_ncol (n) : The serial number of the column\r\n_edobj (o) : The browse object. If you use it trough cpegbrowse, means it is the variable _brobj. If you use it to a browse screen, you have defined the object on screen\r\n_edped (c) : The field name will be managed\r\n_pict (c) : Is the image used to manage. Defines the way are displayed the values. If it is an empty string, follows the default settings.\r\n\r\n_method (c): Optional. If exists then appears the basic\\srch1.bmp and executes _method. IF method RETURN the empty string then stop edit. You can use the variable uVar1 to update the field you edit. \r\n\r\nReturns .t. if the user pressed Enter to save and returns .f. if user pressed Esc\r\n\r\nExample:\r\n#### The manage of the field p01 into the browse with the name brp01 on screen (pay attention to the fact that the browse has the name brp01 and it\'s object has the name obrp01)\r\n##IF editcell( 2, obrp01, \'p01\', \'9,999,999.99\')\r\np_val(@_ptimh, \'p01\')\r\nrefrit(obrp01)\r\n##ENDIF \r\n','2010-07-23','16:47:25','tesae','0100-01-01','','',''),(55,'EDITROW()','Manages a row from a browsing view','editrow(_new, _fromcell, _tocell, _object)','L','DBPEG','cpegbrowse(), editcell(), gotocell()','W3','Use to: Manage one row of browsing view from one cpegbrowse\r\n\r\nParameters:\r\n_new (l) : if it is .t. creates a new row, else manage the current\r\n_formcell (n) : the serial number of the starting column\r\n_tocell (n) : the serial number of the ending column. If it is bigger then the last column, will stop to the last column.\r\n_object (o) : The browse that will activate. If it is missing, activates the current Browse\r\n\r\nReturns .t. if was correct executed\r\n\r\nExample:\r\neditrow(.f., 1, 5)\r\ngotocell(1)\r\n','2005-01-20','20:21:10','dias','0100-01-01','','',''),(56,'EOF()','Checks if we are at the end of a file','eof()','L','DBPEG','bof()','B','Use to: Check if the records index of the current database or xbase file was moved from the last record (has founded the end of data class).\r\n\r\nReturns .t. if reached the end of data class, else returns .f.\r\n\r\nExamples:\r\nManage all the records from one database\r\nNEWAREA()\r\nFUSE(\'ETF\', \'ETF_D\')\r\nOPENNTX(\'ETF_D\', \'ETF\')\r\n## 10\r\nINITREC(\'ETF\', \'ETF_D\', .F.)\r\nGETDATA(\'etf\', \'etf_d\',.F., 10, .T.)\r\nREPLDATA(\'etf\', \'etf_d\', .F.)\r\nRELEASVAR(\'etf_d\')\r\nDBSKIP()\r\n##IF EOF()=.f.\r\n##GO 10\r\n##ENDIF\r\nclosefile(\'etf\')\r\n##RETURN','2005-01-20','20:21:47','dias','0100-01-01','','',''),(57,'FILETOANSI()','Transforms ane xbase file to ANSI','filetoansi(_file, _meth)','C','DBPEG','filetooem(), appendfrom(), copyto(), is_ansi(), is_oem(), toansi(), tooem()','W3','Use to: Transform from OEM to ANSI, in order to be read xbase file from Windows application. It is useful when we want to transfer to Pegasus application data from MS-DOS applications.\r\nATTENTION!!! The function does not see the file indexes. For this reason, if it is a database, after transforming, requires Reindex.\r\n\r\nParameters:\r\n_file : the file will transform\r\n_meth : one method is executed for each record. Usually, displays on screen the task evolution.\r\n\r\nReturns an empty string\r\nExample:\r\n### Copy to Clients one ASCII file (from MS-DOS) and after made its ANSI\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\nappendfom(\'etf.asc\', \'.t.\', 1)\r\ndbclose(\'etf\')\r\nfiletoansi(\'etf\', \'\')\r\nreibase(\'etf\', \'etf_d\')\r\n','2005-01-20','20:22:47','dias','0100-01-01','','',''),(58,'FILETOOEM()','Transforms one xbase file to OEM','filetooem(_file, _meth)','C','DBPEG','filetoansi(), appendfrom(), copyto(), is_ansi(), is_oem(), toansi(), tooem()','W3','Use to: Transform one xbase file to oem file, in order to be read from MS-DOS application. ATTENTION!!! The function does not see the file indexes. For this reason, if it is a database file, requires Reindex after transforming.\r\n\r\nParameters:\r\n_file : the file will be transform\r\n_meth : one method is executing for each record. Usually, displays on screen the task evolution.\r\n\r\nReturns an empty string\r\n\r\nExample:\r\n### Transforms the clients file to oem file and after orders ASCII file.\r\nfiletooem(\'etf\', \'\')\r\nreibase(\'etf\', \'etf_d\')\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\nset_order(2)\r\ncopyto(\'etf.asc\', \'.t.\', 1)\r\ndbclose(\'etf\')\r\n','2005-01-20','20:23:15','dias','0100-01-01','','',''),(59,'FILE_LOCK()','Locks a file','file_lock()','C','DBPEG','fuse(), rec_lock(), replfld()','B','Use to: Lock the current file or the current database, in order to not be changed from other user. The file remains locked until will be closed from application.\r\n\r\nReturns an empty string\r\n\r\nExample:\r\nfuse(\'etf\', .f.)\r\nfile_lock()\r\nThe above instructions are similar with fuse(\'etf\', .t.)\r\n','2005-01-20','20:23:40','dias','0100-01-01','','',''),(60,'FUSE()','Opens one xbase file','fuse(_file, _mode, alias, _via, _readonly)','C','DBPEG','dbopen(), openntx()','B','Use to: Open one xbase file or one Pegasus database\r\n\r\nParameters:\r\n========\r\n      _file (c) : The file will open\r\n      _mode (l) : if it is .t., then the file is opened for restricted use, else for public use. In network environment, it is recommended the value .f.\r\n      _alias (c) : (optional)  the alias name for workarea. \r\n      _via (c) : (optional) Driver name used. If ommited or ==\'\', then DBFNTX (clipper files) used\r\n      _readonly (l) : Optional. If it is .t. file opend for readonly use. If ommitef is = .f.\r\n\r\nReturns an empty string\r\n\r\nExample:\r\nfuse(\'etf\', .f.)\r\nopenntx(\'etf_d\', \'etf\')','2018-10-19','12:17:37','tesae','0100-01-01','','',''),(61,'GETDATA()','Manages into the screen of a database record','getdata(_file, _desc, _new, _hlp, _get, _flag, _bbar, _type, _gettitle, _bmpfile, _initpeg, _keypeg, _eventarray, _defdlg, @_myobj, _corcoor)','L','DBPEG','initrec(), initvar(), repldata(), dovalid()','W3','Use to: Activate into a window (dialog box) the screen class seen from user or/and modify the variables value defined from screen class. Pegasus is giving you the possibility to define screen classes regarding only variables (not related to data class) or related to one data class. Both screen types are called with getdata().\r\nReturns (.T.) if user ends the screen management by pressing the button Submit. If user ends the screen management by pressing the button Cancel or by closing the screen, returns (.F.).\r\n\r\nArguments\r\n==========\r\n       _file (c) : The database related to the screen class. If the screen class is not related to one data class, then it is an empty string.\r\n       _desc (c) : The screen class\r\n       _new (b) : If there is data class, defines if we will manage a new record (.t.) or an old record (.f.). If there is not a data class, we give the value.t.\r\n       _hlp (n) : The help code (from the active help class) that will be displayed.\r\n       _get (l) : if it is .f. then the dialog box is only for view. It hasn\'t buttons (has only the fields, browses, images) without methods to execute. \r\n       _flag (n- a) : Set it equal to 0\r\n                  If it as an array it must have \r\n                  {_centerd(l), _top (n), _left(n), _bottom(n), _right(n), _look_for_permitions(l), _center_to prev, _modal}\r\n                   It defines coordinates of box  and if it will be centered or no. If a coordinate=-1 then the screen class coordinate is used. \r\n                   _look_for_permitions (l) Default=.t. If it is true then function looks and permits to user to change fields on it.  \r\n                   _center_to_prev (l). Default=.f., If it is .t. and _centered=.t. then new window centered to it\'s parent.\r\n                   _modal (l) Default=.t., If it is .f. then the dialog box can be used with current one  \r\n\r\nThe following parameters might be missing or have the space bar value:\r\n       _bbar (c): The Button Bar class will be activated while dialog box management. If it is the empty string, does not activate button bar\r\n\r\n       _type (n): The button bar type (1=to the limit, 2=to the left, 3=to the right, 4 =down side)\r\n\r\n       _gettitle (c): The window title is defined from screen class. Many times, we want to append one more dictions. For this , you should use the parameter _gettitle\r\n\r\n       _bmpfile (c) : One image file of type bmp that will be the window\'s background.\r\n\r\n       _initpeg (c) : One method executed before window display.\r\n\r\n       _keypeg (c) : The method executed when user is pressing one keyboard key, different from arrows. The keyboard key value pressed from user is saved in variable _wlchar that can be used from the method\r\n\r\n       _eventarray (a) : An array of Pegasus Methods executed for events \r\n                        {_dblclick, _leftclick, _rightclick, gotfocus, resize, menu code} \r\n\r\n       _defdlg (o) : It is usually not used. You can use _curwin. In this case the getdata() doesn\'t create a new dialog box but draws it\'s objects into _defdlg. \r\n\r\n       _myobj (o): Optional. If exists passed created object\r\n\r\n       _corcoor (l): Optionla. Default = .t.. If .t.t then corrects coordinates of dialog box to fit into descktop\r\n\r\n\r\nExample:\r\n========\r\n*** User gives customer code (using _05_d screen class)\r\n*** If customer is found, then user change data (using etf_d screen class)\r\n\r\n***Initialize the variables screen\r\nINITVAR(\"_05_d\")\r\n*** if gives value to search, continues\r\n*** else, ends the method\r\n##IF GETDATA(\"\",\"_05_d\",.t.,12,.T., 1)=.f.\r\n     releasvar(_05_d\')\r\n     ##RETURN\r\n##ENDIF\r\n*** opens the data class and its indexes\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\n*** Search for the record mach the value given from user\r\nSET_ORDER(2)\r\n*** If founds, display it\r\n##IF DBSEEK(ncode)\r\n     INITREC(\"etf\",\"etf_d\",.F.)\r\n     GETDATA(\"etf\",\"etf_d\",.F.,13,.t., 1)\r\n     REPLDATA(\'etf\', \'etf_d\', .f.)\r\n##ENDIF\r\nRELEASVAR(\"etf_d\")\r\nRELEASVAR(\"_05_d)\r\n##RETURN\r\n','2019-05-23','15:51:36','tesae','0100-01-01','','',''),(62,'GET_BROWSE()','Simple Browsing view of a data class','get_browse(_file, _desc, _box, _sit, _restscr, _new, _get, _del, _stline, _hlp, _ghlp, _flag)','C','DBPEG','cpegbrowse(), dbopen()','W3','Use to: Manage inside table one data class records. The columns-fields will be displayed are defined from the screen class. The management we can perform with function is a simple one (only options are New Entry, Change and Delete).\r\n\r\nParameters:\r\n_file (c) : the database will manage.\r\n_desc (c) : the screen class will use.\r\n_box (n) : the box (serial number) that will be activated while sequence selection.\r\n_sit (n) : if it is 0, the data class is closed and the function goes to the next ones. In this case appears also the sequence selection box. If it is 1 , then, before the function is closed, should be opened the data class and its indexes, to be done the selection of the main index and to be driven to the appropriate record of data class.\r\n_restscr : always give the value 1 (this definition has to do with compatibility reasons with the version VK4.00 for MS DOS)\r\n_new (n) : If it is 1, displays the corresponding button and allows the records submission. Activated also with the keyboard key Ins\r\n_get (n) : if it is 1, displays the corresponding button and allows the records modify. Activated also with the keyboard key F5\r\n_del (n) : if it is 1, displays the corresponding button and allows the records management. Activated also with the keyboard key Del\r\n_stline (n) : define always the value zero (0) (this definition has to do with compatibility reasons with the version VK4.00 for MS DOS)\r\n_hlp (n) : the help serial number for the sequence selection.\r\n_ghlp (n) : the help serial number for class management\r\n_flag (n) : define always the value 1 (this definition has to do with compatibility reasons with the version VK4.00 for MS DOS)\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\n1.Manage one data class already opened.\r\n### open the data class and its indexes\r\nNEWAREA()\r\nFUSE(\"etf\",.F.)\r\nOPENNTX(\"etf_d\",\"etf\")\r\nSEEK_VAR(15)\r\nGETBROWSE(\"etf\",\"etf_d\",10, 1, 1, 1, 0, 23,30,39)\r\nCLOSEFILE(\"etf\")\r\n2. Manage the same data class. This time, all tasks are taken from the function GETBROWSE(\"etf\",\"etf_d\",10,0,1,1,1,1,23,30,39)\r\n','2005-01-20','20:25:43','dias','0100-01-01','','',''),(63,'GIVEAVG()','Finds the mediate value of a dataclass field and return it to a variable','giveavg(_file, _index, _seekpar, _order, _whilecond, _ifcond, _field, @_var)\n','N','DBPEG','plussum(), givesum(), plusavg()','W3','Purpose: To find the mediate value of the data class field fro the records matches the conditions and to returns it to one variable.\r\nUse to: Same like plusavg(). The difference is that giveavg() returns the results into the variable _var.\r\n\r\nParameters:\r\n_file (c): the data class will be run through.\r\n_index (c): The index name used for searching. If data class is closed, this definition must be an empty string.\r\nNOTICE that the index name of a data class has the shape <field><data class>\r\n_seekpar (c): the value used to search the record sun starting from it\r\n_order (n): if the data class _file is already opened, defines the index sequence that will be activated for searching. If the data class is closed, you give the value 0\r\n_whilecond (c) : the condition showing up to which record will perform searching. Is the condition used to execute the DO WHILE LOOP.\r\n_ifcond (c): the condition should mach the records will participate to sum.\r\n_field (c) : the field name of that will return the mediate value. Needs to be a numeric field.\r\n_var (n) : the variable where will be returned the result\r\n\r\nReturns an empty string.\r\n\r\nExamples:\r\n1. Lets take the data class t01 that has the financial operations, with the fields:\r\np01 (c) : Account (is also the index we will use)\r\np02 (d) : Date\r\np03 (n) : Debit\r\nThe following function\r\ngiveavg(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \'p03\', @_s1))\r\nreturns the mediate value of the account debits 3000000001 up to 31/12/1999 into the variable _s1\r\n2. Into the previous example, we could run, for each operation matches, the method t01p011 that executes a commands multitude for each record.\r\ngiveavg(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \"val(dopeg(\'t01p011\'))\", @_s1)\r\nAfter the execution of the function, the _s1 will have the value 0.\r\nATTENTION!!! When the data class is not already opened, the function giveavg() activates only the index we have defined. For this reason, while using the function like the second example, for entire running of the method for each record, WE SHOULD NOT PERFORME DATA CLASS UPDATE because will not be updated all indexes.\r\n','2005-01-20','20:26:56','dias','0100-01-01','','',''),(64,'GIVESUM()','Returns the field values sum from a data class to a variable','givesum(_file, _index, _seekpar, _order, _whilecond, _ifcond, _field, @_var)','N','DBPEG','plussum(), plusavg(), giveavg()','B','Purpose: To find the values sum of one data class field for the records matches the conditions and to return it to a variable.\r\nUse to: Same like plussum(). The difference is that givesum() returns the result to the variable _var.\r\n\r\nParameters:\r\n_file (c): the data class will be run through\r\n_index (c): the index name will be used for searching. In case that the data class is closed, this definition should be an empty string.\r\nNOTICE that the index name of one data class has the shape <field><data class>\r\n_seekpar (c): the value used to search the record sum starting from it\r\n_order (n): if the data class _file is already opened defines the indexes suite will be activated for searching. If the data class is closed, we give the value 0\r\n_whilecond (c) : the condition showing up to what record will perform searching. Is the condition with which is executed the DO WHILE LOOP.\r\n_ifcond (c): the condition should be valid for all records will take part to the sum\r\n_field (c) : the field name where the value will sum. Should be a numeric field.\r\n_var (n) : the variable where will be returned the result\r\nReturns an empty string.\r\n\r\nExamples:\r\n1. Let\'s take the data class t01 that have the financial operations, with the fields:\r\np01 (c) : Account (is also the index we will use)\r\np02 (d) : Date\r\np03 (n) : Debit .\r\nThe following function\r\ngivesum(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \'p03\', @_s1))\r\nreturns the debits sum of the account 3000000001 until 31/12/1999 into the variable _s1\r\n2. Into the previous example, we could run for each financial operation matches the method t01p011 that executes a commands multitude for each record:\r\ngivesum(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \"val(dopeg(\'t01p011\'))\", @_s1)\r\nAfter the execution of the function, the _s1 will have the value 0.\r\nATTENTION!!! When the data class is not already opened, the function givesumj() activates only the index we have defined. For this reason, while using the function like the second example, for entire running of the method for each record, WE SHOULD NOT PERFORME DATA CLASS UPDATE because will not be updated all indexes.\r\n','2005-01-20','20:27:51','dias','0100-01-01','','',''),(65,'GOTOCELL()','Goes to a certain cell','gotocell(_num, _browse)','C','DBPEG','editrow(), editcell()','W3','Use to: Sends the cursors to the column _num in the browsing view inside the cpegbrose()\r\n\r\nParameters:\r\n_num : The column serial number will go.\r\n_browse : (optional) The browse where will be activated. If missing, is activated to the current browse.\r\n\r\nReturns an empty string\r\n\r\nExample\r\neditrow(.f., 1, 5)\r\ngotocell(1)\r\n\r\n','2005-01-20','20:28:12','dias','0100-01-01','','',''),(66,'GOTOFLD()','Returns the field value of a certain record of data file','gotofld(_file, _field, _gval)','','DBPEG','dbgoto(), printfld()','B','Purpose: Gets from one database or from a simple xbase file, the value of one field, finding one certain record\r\nUse to : Takes data from xbase files. For the data class we use printfld()\r\n\r\nParameters:\r\n_file (c) : The data class or the file where searches to find the value.\r\n_field (c) : The field name of that value will return\r\n_gval (n) : The serial number of the record of that value will return\r\nReturns the value of the field _field from the founded record. If does not find any record, returns a value according to the field type, means 0 if it is an numeric field, an empty string characters suite if it is a string field, and / / if it is a date field.\r\n\r\nRemarks:\r\nThe data class file NOT TO BE already opened before executing the GOTOFLD().\r\n\r\nExample:\r\n1. Let\'s suppose you want the printouts to have the company\'s details on the top, written to the file named ARXERON and with the fields ARO1, ARO2 and ARO3, in its first record.\r\nInside the printout forms, you give the following data:\r\nLine Column Type Field/Title/Expr/teXt/fuNction\r\n0 0 N GOTOFLD(\"ARXERON\",\"AR01\",1)\r\n0 0 N GOTOFLD(\"ARXERON\",\"AR01\",2)\r\n0 0 N GOTOFLD(\"ARXERON\",\"AR01\",3)','2005-01-20','20:30:58','dias','0100-01-01','','',''),(67,'INDEXON()','Creates an index to one xbase file','indexon(_ntxexp, _ntxfle)','C','DBPEG','fuse(), closefile(), seek_var(), file_lock()','B','Use to: Create one index for the current data file. In order to be created one index, the data file should be locked (or to be opened for restricted use with the fuse()).\r\n\r\nParameters:\r\n_ntxexp (c) : The index creation syntax.\r\n_ntxfle (c) : The index file name.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nCreate the index p01test for the file test with the description p01.\r\nFUSE(\"test\",.T.)\r\nIDEXON(\"p01\",\"p01test\")\r\nCLOSEFILE(\"test\")\r\n','2005-01-20','20:31:32','dias','0100-01-01','','',''),(68,'INDEXORD()','Returns the place of the active index','indexord()','N','DBPEG','dbopen(), set_order(), dborder(), seek_var()','B','Use to: While opening one database, the indexes opens with the same sequence from the screen description class. Each time, the searches and the moves are done with the active index.\r\nIf it is necessary to change the active index for one search and to return after that to the previous active index, we will use indexord()\r\n\r\nReturns the place of the active index\r\n\r\nExample\r\n#### change the active index, performing the search and after changes again the current active index with the previous one.\r\naselect(\'etf\')\r\np_val(@_ord, \"indexord()\")\r\nset_order(2)\r\n##IF seek_var(np10)\r\ndopeg(\'etfp010\')\r\n##ENDIF\r\naselect(\'etf\')\r\nset_order(_ord)','2005-01-20','20:43:55','dias','0100-01-01','','',''),(69,'INITREC()','Initializes the screen class variables','initrec(_file, _desc, _new, _truefieds)','C','DBPEG','releasvar(), initvar(), getdata(), repldata()','B','Use to: Initialize the variables from one screen class, giving values from the fields of the current database record. It is necessary to be executed before the screen management with the getdata().\r\nFor each field is defining, the screen class, creates one variable named \"n\" + \"Field name\" and one Object named \"o\" + \"Field name\".\r\n\r\nParameters:\r\n_file (c) : The database name of that record will initialize. The file has to be already opened and to be founded into the record you will manage.\r\n_desc (c) : The screen class will be used.\r\n_new (l) : If has the value .t. it is a new record\r\n_trufields (l) : if it is .t. it initializes only true fields (not the V, K, T). IF ommited assumed =.f.\r\n\r\nReturns an empty string characters suite\r\n\r\nExample:\r\nIs following one Pegasus Project, that reads the first record of the data class \"ETF\"\r\n### opens the data class and its indexes\r\nFUSE(\"ETF\", .F.)\r\nOPENNTX(\"ETF_D\", \"ETF\")\r\n### initializes the variables\r\nINITREC(\"etf\", \"etf_d\", .F.)\r\n### if user performs submit, update\r\n### else update the no value number of it\r\n### data class\r\n##IF GETDATA(\"etf\",\"etf_d\",.F.,10,.T., 1)\r\nREPLDATA(\"etf\",\"etf_d\",.F.)\r\n##ELSE\r\nunnew_rec(\'etf\', nnr01)\r\n##ENDIF\r\n### close the screen class variables\r\nRELEASVAR(\'etf_d\')\r\n##RETURN\r\n','2005-12-22','19:12:58','dias','0100-01-01','','',''),(70,'INITVAR()','Activates thevariables of a screen class','initvar(_desc)','C','DBPEG','releasvar(), initrec(), getdata(), repldata()','W3','Use to: Initialize the variables from one screen class not related to a data class. Notice that this screen class contains ONLY VIRTUAL FIELDS.\r\n\r\nParameters:\r\n_desc (c) : The screen description.\r\n\r\nReturns an empty string characters suite\r\n\r\nExample:\r\nIs following the procedure of variables reading and executing another procedure\r\n### initialize the variables\r\nINITVAR(\"_05_d\")\r\n##IF GETDATA(\"\",\"_05_d\",.F.,10,.T.)\r\nDO_MENU(\"prints\",1,12)\r\n##ENDIF\r\nRELEASVAR(_05_d\")\r\n##RETURN','2005-01-20','20:44:59','dias','0100-01-01','','',''),(71,'MANAGE()','Multi search to a data class','manage(_file, _desc, _logic, _pegfile, _hlp, _abox, _flag, _msgnr)','C','DBPEG','dbopen(), dbclose()','W3','Use to: Complete manage of one data class. Inside Multi search screen, user may select the records want and these to be displayed in sequence.\r\nFor each record matches the conditions defined from user, it is executed the method class an empty string characters suite _pegfile\r\n\r\nParameters:\r\n_file (c) : the database\r\n_desc (c) : the description class will be used\r\n_logic (b) : if it is 1, then while searching criteria creation appears the logical operators. Here should be used the variable _addor that gets values from the data class SETS.DBF that defines the system.\r\n_pegfile (c) : The Pegasus method class you will execute for each record matches the searching criteria.\r\n_hlp (n) : The help class will be displayed into Multi search class.\r\n_abox (n) : The box is used for the Multi search class (to this are displayed the fields of the data class)\r\n_flag (n) : =1 (exist for compatibility reasons)\r\n_msgnr (n) : This parameter might be missing. If is not missing, correspond to one message (from the current messages class). Before executing the search and after were created the search criteria, is displayed the window with the message and the user selects if continue searching or not.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nManage the records of the data class \"etf\"\r\nMANAGE(\"etf\",\"etf_d\",1,\"getelf\",90,109)\r\nThe content of the getelf is the following:\r\nINITREC(\"etf\",\"etf_d\",.F.)\r\n##IF GETDATA(\"etf\",\"etf_d\",.F.,91,.T., 1)\r\nREPLDATA(\"etf\",\"etf_d\",.F.)\r\n##ENDIF\r\n##RETURN\r\n','2005-01-20','20:46:22','dias','0100-01-01','','',''),(72,'MCOL()','One string column of the dictionary class','mcol(num)','N','MSG','mrow(), message()','W3','One string column of the dictionaries class\r\nParameters:\r\n_num (n) : the serial number of the string\r\nReturns numeric\r\nExample:\r\nMCOL(10) &&returns the display column of the message 10','2005-01-20','14:44:40','dias','0100-01-01','','',''),(73,'MESSAGE()','One string message of the dictionary class','message(num, _dictionary_class)','C','MSG','mrow(), mcol()','W3','Use to: returns the diction of the message with the serial number _num from the active dictionaries class\r\n\r\nReturns an empty string characters suite\r\n\r\nParameters:\r\n_num (n) : The serial number-code of the message\r\n_dictionary_class (c): Optional. The filename of dictionary class. Default the current class\r\nExample:\r\nMESSAGE(10) && returns the diction of the message 10\r\n','2009-04-30','13:14:41','dias','0100-01-01','','',''),(74,'MROW()','The diction row of the dictionary class','mrow(_num)','C','MSG','mcol(), message()','W3','Use to: Return the display row of the message with the number _num from the active dictionaries class\r\nParameters:\r\n_num (n) : the message serial number\r\nReturns numeric\r\nExample:\r\nMROW(10) &&returns the display row of the message 10','2005-01-20','14:44:52','dias','0100-01-01','','',''),(75,'NEWAREA()','Creates a new area to open one xbase file','newarea()','C','DBPEG','fuse(), aselect()','B','*** This function exists for compatibility reasons and as well as the fuse() and the dbopen(), before opening one new file executes it entire inside.\r\n\r\nUse to: Activate one new working area to open one new database or one xbase file. Each data class is opened to a new working area. If you tried to open one data class in one old working area, then, automatically was closed the data class was opened in this area.\r\nITS USAGE MUST BE PROCEEDED FROM fuse() in order to avoid unpleasant consequences.\r\n\r\nREMARK: the usage of newarea() it is necessary only if you open the data class using fuse(). It is recommended to use the function dbopen() if you want to open one database.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nNEWAREA()\r\nFUSE(\"etf\",.F.)\r\nOPENNTX(\"etf_d\",\"etf\")\r\n','2005-01-20','20:47:03','dias','0100-01-01','','',''),(76,'NEW_REC()','Updates the counter of a data class','new_rec(_file)','N','DBPEG','initrec(), add_rec(), replfld()','B','Use to: Return the next record serial number of one database. The Pegasus databases save the pragmatic record serial number inside the field NR01. The records counter is saved into the file ???_C (where ??? is the name of the database). The function NEW_REC() returns the next serial number and updates in the same time the counter file.\r\n\r\nParameters:\r\n_file (c) : the data class of that the next serial number will return.\r\n\r\nReturns the next serial number.\r\n\r\nExamples:\r\nLet\'s take the data class \"etf\" with 8 records\r\nNEW_REC(\"etf\") returns 9\r\nNEW_REC(\"etf\") returns 10\r\nUNNEWREC(\"etf\",10)\r\nNEW_REC(\"etf\") returns 10','2005-01-20','20:47:29','dias','0100-01-01','','',''),(77,'OPENNTX()','Opens the indexes of a database','openntx(_desc, _file)','C','DBPEG','fuse(), dbopen()','B','Use to: Activates the indexes of one database, when this was opened with fuse(). When it is opened one database, ALWAYS have to be opened also its indexes to be updated, else will be not performed the files synchronization. For this reason, it is recommended to use the function dbopen() when want to open one database\r\n\r\nParameters:\r\n_desc : the screen class that describes one database\r\n_file : the data file of the database\r\n\r\nReturns an empty string\r\n\r\nExample:\r\nfuse(\'etf\', .f.)\r\nopenntx(\'etf_d\', \'etf\')\r\nThe above parameters are similar to the\r\ndbopen(\'etf\', \'etf_d\', .f.) ones\r\n','2005-01-20','20:48:07','dias','0100-01-01','','',''),(78,'PACKFLE()','Pack (remove the deleted records) of a data class','packfle(_file)','C','DBPEG','zapfle(), reibase()','B','Use to: Removes the deleted records from one file, and so creates free space to the disk.\r\nAfter performing this function execution, requires Reindex using the function REIBASE() (if has to do with a database) or with the function INDEX_ON() (if has to do with a simple file).\r\nThe file or the data class needs to be closed. As long it is running the task, no user is able to use it.\r\n\r\nParameters:\r\n_file (c) : the data class.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nPACKFLE(\"etf\")\r\nREIBASE(\"etf\",\"etf_d\")','2005-01-20','20:48:46','dias','0100-01-01','','',''),(79,'PEGBROWSE()','Composes browsing view for a data class with keybord keys definition from a key class','pegbrowse(_file, _desc, _box, _sit, _restscr, _hlp, _keys, _flag)','C','DBPEG','cpegbrowse()','W3','*** It is recommended the usage of cpegbrowse()\r\nUse to: Manage in table shape the data of one data class. The columns-fields will be displayed are defined from the screen class\r\n\r\nParameters:\r\n_file (c) : The data class will manage.\r\n_desc (c) : The screen description class will be used\r\n_box (n) : The box (its number) will be activated while sequence selection\r\n_sit (n): If it is 0, the data class is closed the procedure runs the others. In this case it is displayed also the sequence selection box. If it is 1, then before closing the function, should already open the data class and its indexes, should select the main index and should drive you to the appropriate record of the data class. In the end, you have to close the data class.\r\n_restrscr (n) : Takes the value 1 (exist for compatibility with MS DOS reasons)\r\n_hlp (n): The help number for sequence selection.\r\n_keys (c): The keys class will activate.\r\n_flag (n) : Takes the value 1 (exists for compatibility reasons with MS DOS)\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\n1.Manage one data class already opened.\r\n### opening the data class and its indexes\r\nNEWAREA()\r\nFUSE(\"etf\",.F.)\r\nOPENNTX(\"etf_d\",\"etf\")\r\nSEEK_VAR(15)\r\nPEGBROWSE(\"etf\",\"etf_d\",10, 1, 0, 23,\'p01k01\',1)\r\nCLOSEFILE(\"etf\")\r\n','2005-01-20','20:49:54','dias','0100-01-01','','',''),(80,'PEGMEMORE()','Reads the contents of one X type field','pegmemore(_path, _nr01)','M','DBPEG','pegmemowr()','W3','Use to: read the content of one x type field\r\n\r\nParameters:\r\n_path : is the folder where can be founded the files with the X-memos.\r\n_nr01 : the nr01 of the record we are interested in\r\n\r\nReturns: The content of memo\r\n\r\nExample:\r\np_val(@_amemo, \"pegmemore(\'etfp30\', 10)\")','2005-01-20','20:50:36','dias','0100-01-01','','',''),(81,'PEGMEMOWR()','Updatea the content of oneof X-memo type field','pegmemowr(_path, _nr01, _memo)','C','DBPEG','pegmemore()','W3','Use to: Update the content of one field of type X\r\n\r\nParameters:\r\n_path : Is the folder where are founded the files with the X-memos.\r\n_nr01 : the nr01 of the record we are interested in\r\n_memo : the new field content\r\n\r\nReturns an empty string\r\n\r\nExample\r\np_val(@_amemo, \"pegmemore(\'etfp30\', 10)\")\r\np_val(@_amemo, \" _amemo + \' changed\' \")\r\npegmemowr(\'etfp30\', 10, _amemo)\r\n','2005-01-20','20:52:00','dias','0100-01-01','','',''),(82,'PLUSAVG()','Mediate value of a data class field','plusavg(_file, _index, _seekpar, _order, _whilecond, _ifcond, _field)','N','DBPEG','giveavg(), plussum(), givesum()','W3','Purpose: To find the mediate value of the data class field from the records matches the conditions\r\nUse to: Return the mediate value of one data class field into screens and printouts. Also, PLUSAVG() gives you the possibility to search through the records or one data class using one index as long as it is active another condition. For example, for one DO WHILE LOOP with IF CONDITION. This attribute we may use together with P_VAL() and dopeg() in order to run complex tasks.\r\n\r\nParameters:\r\n_file (c): the data class will search through.\r\n_index (c): The index name will be used for searching. In case that the data class it is closed, this definition has to be an empty string.\r\nNotice that the index name of one data class has the shape <field><data class>\r\n_seekpar (c): The value with will search the record from that will start the sum.\r\n_order (n-c): If data class _file is already open, starts the index suite will be activated for searching. If the data class is closed, we will give the value 0\r\nIn staid of index suite, we may give the sequenced field of database.\r\n_whilecond (c) : The condition showing up to what record will perform searching. It is the condition with that it is executed DO WHILE LOOP.\r\n_ifcond (c): The condition should mach the records will take part of sum.\r\n_field (c) : The field name of that the mediate value will be calculated. Should be numeric field.\r\n\r\nReturns the mediate value of the _field from the records of the data class _file that matches the condition _ifcond. The returned value is numeric.\r\n\r\nExamples:\r\n1. Let\'s take the data class t01 that has financial operations, with the fields\r\np01 (c) : Account (it is also the index we are going to use)\r\np02 (d) : Date\r\np03 (n) : Debit\r\nThe following function\r\nplusavg(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \'p03\')\r\nreturns the mediate value of the debits for the account 3000000001 until 31/12/1999\r\n2. In the above example, we could run for each operation matches the method t01p011 that execute a tasks multitude for each record.\r\nplusavg(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \"val(dopeg(\'t01p011\'))\")\r\nATTENTION!!! When the data class it is not already open, the function plusavg() activates only the index we define. For this reason, when we use it like in the second example, in order to execute entire method for each record, WE SHOULD NOT RUN THE DATA CLASS UPDATE, as long as in this way will not be updated all the indexes.\r\n','2005-01-20','20:52:34','dias','0100-01-01','','',''),(83,'PLUSSUM()','field value sum of a data class','plussum(_file, _index, _seekpar, _order, _whilecond, _ifcond, _field)','N','DBPEG','givesum(), giveavg(), plusavg()','B','Purpose: To find the sum values of one data class field for the records matches the conditions.\r\nUse to: Return the sum of one data class field value.\r\nAlso, PLUSSUM() has the attribute to search through one data class records using one index al long as it is active one another condition. Means, for one DO WHILE LOOP with IF CONDITION. This we may use it together with P_VAL() and dopeg() in order to run complex tasks.\r\n\r\nArguments\r\n========\r\n         _file (c): the data class will search through.\r\n         _index (c): The index name will be used for searching. In case that the data class is opened, this definition has to be an empty string.\r\nNotice that the index name of one data class has the shape <field><data class>\r\n         _seekpar (c): The value with will search the record from that will start the sum.\r\n         _order (n - c): If the data class _file it is already open, define the index suite will be activated for searching. If the data class it is closed, or we don\'t want to seek a value we give the value 0\r\nInstead of index suite, we may give the database field that it is in sequence.\r\n         _whilecond (c) : The condition showing up to which record will perform searching. It is the condition used by DO WHILE LOOP.\r\n         _ifcond (c): The condition has to mach the records will take part for sum\r\n         _field (c) : The field name of that value will sum. Has to be numeric field.\r\n\r\nReturns the values sum of the _field from the records of the data class _file that matches the condition _ifcond. The returned value is numeric.\r\n\r\nExamples:\r\n========\r\n1. Let\'s take the data class t01 that has financial operations, with the fields\r\np01 (c) : Account (it is also the index we are going to use)\r\np02 (d) : Date\r\np03 (n) : Debit\r\nThe following function\r\nplussum(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \'p03\')\r\nreturns the debits of the account 3000000001 until 31/12/1999\r\n2. In the above example, we could run for each operation matches the method t01p011 that execute a tasks multitude for each record.\r\nplussum(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \"val(dopeg(\'t01p011\'))\")\r\nATTENTION!!! When the data class it is not already open, the function plussum() activates only the index we define. For this reason, when we use it like in the second example, in order to execute entire method for each record, WE SHOULD NOT RUN THE DATA CLASS UPDATE, as long as in this way will not be updated all the indexes.\r\n','2018-09-10','11:51:52','tesae','0100-01-01','','',''),(84,'PRINTFLD()','Finds the contents of a record field from a data class','printfld(_file, _index, _field, _sval)','','DBPEG','sumanfld()','B','Purpose: Takes from one data class one field value, finding one certain record, searching with an index.\r\nUse to: Find the data from many data classes on screen or printouts for the data class we manage. Notice that the record search runs to a index.\r\n\r\nParameters:\r\n_file (c) : The data class where is searching to find the value\r\n_index (c) : The index used for searching.\r\n_field (c) : The field name of that value will return.\r\n_sval : The variable or the value with which will search in data class.\r\n\r\nNOTICE that the name of index file from a data class is created with the following terminology <field name><data class name>. Means, if we have an index into the field P01 of the data class etf and this index name will be p01etf\r\n\r\nReturns the value of the field _field from the founded record. If does not find the record is looking for, returns the corresponding value of the field type, means 0 if it is a numeric field or an empty string characters suite if it is a string field or \"//\" if it is a date field.\r\n\r\nExamples:\r\n1. Let\'s take the Clients screen class where you want to insert the Region Code and to receive automatically the diction.\r\nIf the regions diction there is already in data class PER with the structure:\r\nP1 = Code\r\nP2 = Region Diction\r\nAlso, let\'s say that in Clients data class you have the field POO1 where you insert the region code. Inside the field you will type the diction, define the field value:\r\nPRINTFLD(\"PER\", \"P1PER\", \"P2\", NPOO1)\r\nPER : the data class of regions.\r\nP1PER : the PER data class index from code (P1).\r\nP2 : the region\r\nNPOO1 : the variable saves the code value from the client card (NPOO1).\r\n* NOTICE that the index from field has the shape name < field name > + < file name > (see P1PER).\r\nIn addition, during card management, the fields values from one data class are saved in variables with name shape:\r\n\"N\" + < field name> (see NPOO1).\r\n','2005-01-20','20:54:23','dias','0100-01-01','','',''),(85,'PUBVARS()','Activates the variables from a Variable Class','pubvars(_varfile)','C','DBPEG','relvars(), p_val()','W3','Use to: Initialize the variables defined from the variables class _varfile. The initialized variables are available for all functions until will be revoked from the function RELVARS().\r\n\r\nParameters:\r\n_varfile (c) : The name of the variables data class.\r\n\r\nReturns an empty string characters suite\r\n\r\nExample:\r\n##initialize the variables (C _ncode it is one of its).\r\nPUBVARS(_varfile)\r\np_val(@_ncode, \"SGETAFLD(\'etf\', \'etf_d\', \'vode\', 1, \'.t.\', \' \', 10, 10, 20, 40, 1)\")\r\n##IF_ncode==\"\"\r\n##RETURN\r\n##ENDIF\r\n','2005-01-20','21:01:50','dias','0100-01-01','','',''),(86,'RECFLE()','Restore the deleted records from a data class','recfle(_file)','C','DBPEG','pacfle(), zapfle()','B','Use to : Restore the deleted records from one data class. Notice that this attribute exists only if you didn\'t run the packing task called with the function PACFLE(). Also, should be executed BEFORE running ZAPFLE()\r\nAfter function run, it is recommended to perform the Reindex using the function REIBASE() (if has to do a data class) or using the function INDEX_ON() (for a simple file).\r\nThe file or data class has to be closed. During task running, no usage is possible.\r\n\r\nParameters:\r\n_file (c) : the data class.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nRECFLE(\"etf\")\r\nREIBASE(\"etf\",\"etf_d\")','2005-01-20','21:02:22','dias','0100-01-01','','',''),(87,'REC_LOCK()','Locks the current record','rec_lock()','C','DBPEG','add_rec(), repldata()','B','Use to: Lock the current record of one database or one xbase file. To lock the record is necessary before changing it. Means rec_lock() needs to run before replfld()\r\n\r\nReturns an empty string\r\n\r\nExample:\r\naselect(\'etf\')\r\nrec_lock()\r\nreplfld(\'etf\', \'p01\', \'p01*2\')\r\nrec_unlcok()\r\n','2005-01-20','21:02:48','dias','0100-01-01','','',''),(88,'REC_UNLOCK()','Unlocks the current record','reck_unlock()','C','DBPEG','rec_lock(), replfld()','B','Use to: Unlock the current record of the database or xbase file. After running rec_lock() , one record remain locked until another record will be locked or until will run rec_unlock(). Because in network environment the record has to be unlocked before another user manages it, it is recommended to run rec_unlock().\r\n\r\nReturns an empty string\r\n\r\nExample:\r\naselect(\'etf\')\r\nrec_lock()\r\nreplfld(\'etf\', \'p01\', \'p01*2\')\r\nrec_unlcok()\r\n','2005-01-20','21:03:14','dias','0100-01-01','','',''),(89,'REFRDATA()','Displays the new values for all fields of one getdata()','refrdata(_desc, _initvar, _noarr)','C','DBPEG','getdata(), refrit()','W3','Use to: Display new values for all screen variables during screen management when are made many changes from one method to the screen fields -variables; recommended in staid of refrit() \r\n\r\nParameters:\r\n_desc (c): the screen description class\r\n_initvar (l): Optional. Default=.f. If .t. then resets values to variable (V, K, T) fields from initial value expression. \r\n_novar (a): Optional. Array with variable names (c) that will not be initialized (it used if _initvar=.t.)\r\n\r\nExample:\r\nrefrdata(\'etf_d\', .t., {\'np19\', \'np2\'})\r\n\r\n','2015-11-13','09:18:24','tesae','0100-01-01','','',''),(90,'REIBASE()','Creates or recreates the indexes of one database','reibase(_file,_desc)','C','DBPEG','pacfle(), zapfle(), chanstru()','B','Use to: Recreate the indexes of one data class. The file or data class has to be closed. During task running, no usage it is possible.\r\n\r\nParameters:\r\n_file (c) : the data class.\r\n_desc (c) : the screen class describes the data class.\r\n\r\nReturns an empty string characters suite .\r\n\r\nExample:\r\nREIBASE(\"etf\",\"etf_d\")\r\n','2005-01-20','21:04:33','dias','0100-01-01','','',''),(91,'RELEASVAR()','Releases the variables of a screen class','releasvar(_desc)','C','DBPEG','initrec(), initvar(), getdata(), repldata()','B','Use to: Close from memory the variables already activated-initialized with one from INITVAR(), INITREC(). The variables called with the mentioned functions exists in memory until are closed with RELEASVAR().\r\n\r\nFrom version 3.11 and upper releasvar() releases the objects of screen classe\'s fields. \r\n\r\nParameters:\r\n_desc (c) : the screen class\r\n\r\nReturns an empty string characters suite\r\n\r\nExample:\r\nFollows the project that reads the variables and runs another task.\r\n### initializes the variables\r\nINITVAR(\"_05_d\")\r\n##IF GETDATA(\"\",\"_05_d\",.F.,10,.T.)\r\nDO_MENU(\"prints\",1,12)\r\n##ENDIF\r\nRELEASVAR(_05_d\")\r\n##RETURN','2007-10-11','18:35:16','dias','0100-01-01','','',''),(92,'RELVARS()','Releases the variables of Variable Class','relvars(_varfile)','C','DBPEG','pubvars(), dopeg()','W3','Use to: Revoke the variables defined from the variables class _varfile. These variables has to be already activated with the function PUBVARS(). From the moment were revoked, there are no more available.\r\n\r\nParameters:\r\n_varfile (c) : The name of variables class.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples\r\n##initializes the variables (C _ncode it is one of ).\r\nPUBVARS(\"var01\")\r\np_val(@_ncode, \"SGETAFLD(\'etf\', \'etf_d\', \'vode\', 1, \'.t.\', \' \', 10, 10, 20, 40, 1)\")\r\n##IF_ncode==\"\"\r\n##RETURN\r\n##ENDIF\r\n.....\r\n....\r\nRELVARS(\"var01\")\r\n','2005-01-20','21:05:40','dias','0100-01-01','','',''),(93,'REPLDATA()','Updates the record from one data class with the variables corresponding to its screen class','repldata(_file, _desc, _new, _all, _odbcarea)','C','DBPEG','initrec(), getdata(), releasvar()','W3','Use to: Save the changes done to one record using GETDATA(). After update, unlock automatically the record.\r\n\r\nParameters:\r\n_file (c) : the data class will update.\r\n_desc (c) : the screen description class uses\r\n_new (l) : define if it is a new record (.O.) or an old one (.F.).\r\n_all (l) : Optional. Default=.t. If it is .t. replaces all fields, else it replaces only the fields with \"Special (PIM) Repldata not Update it\" unchecked. \r\n_odbcarea (l) : (optional. Def=.f.). if it is .t. then the work area (_file) created from odbc  with odbcput(). \r\n                      In this case the repldata has special care to fields of type \r\n                      L : because of RDBMS nature on RDBMS are type int(1), but on local use are Logical\r\n                      X : on RDBMS are type longtext, but on local use are text files\r\n                      V : if the browse value is =field, where clause, then it is a field character type                 \r\n\r\n\r\nReturns an empty string characters suite .\r\n\r\nExample:\r\nThe next project reads the current record from a data class and saves the changes.\r\nINITREC(\"etf\",\"etf_d\",.F.)\r\n##IF GETDATA(\"etf\",\'etf_d\",\".F.,13,.T., 1)\r\nREPLDATA(\"etf\",\"etf_d\",.F.)\r\n##ENDIF\r\nRELEASVAR(\"etf_d\")\r\n','2014-06-04','13:49:32','tesae','0100-01-01','','',''),(94,'REPLFLD()','Updates the fieldsofa data class',' replfld(_file, _fld, _exp, _updrem, _pos, _type)','C','DBPEG','repldata()','B','Use to: Fill up the value of one data class field\r\n\r\nParameters:\r\n_file (c) : the data class.\r\n_fld (c) : the field will get the value.\r\n_exp (c) : the value will be given to the field.\r\nReturns an empty string characters suite\r\n_updrem (l): Optional. Default = .t.   If it is .t. then updates fields  (if exist) remdate=date(), remtime=time(), remuser=user code, remchan=.t.. These fields are updated if public variable _remt_on:=1. You can set _remt_on:=0 if you need to update records with no \"rem\" fields to be updated. \r\n\r\n_pos (n): Optional. Default = nil. It is the fieldpos(_fld) value. If itsn\'t nil, replfld() uses this value than compute it. Usefull to big results \r\n_type (c): Optional. Default = nil. It is the FieldInfo(_pos, 1) value (_fld type). If itsn\'t nil, replfld() uses this value than compute it. Usefull to big results \r\n\r\n\r\nExample:\r\nREPLFLD(\"etf\",\"p19\",\"_var1\")\r\n','2016-08-25','18:02:07','tesae','0100-01-01','','',''),(95,'SEEKBROWSE()','Searches into afield in sequence','seekbrowse(_file, _order)','C','DBPEG','seek_var(), cpegbrowse()','W3','Use to: Display the dialog box where user gives the search criteria data during one cpegbrowse().\r\n\r\nParameters:\r\n_file (c) : the database already opened and managed from cpegbrowse\r\n_order (n) : the index suite used for sequence.\r\n\r\nReturns an empty string\r\n\r\nExample:\r\nAfter cpegbrowse() may be called the next method for searching (_tit1 is the array has the titles of the database field in sequence)\r\nP_VAL(@P_thkSOR, \"MACHOICE(2, _TIT1, 1)\")\r\n##IF P_thkSOR<>0\r\nSEEKBROWSE(\'thk\', P_thkSOR)\r\nREFRIT(_BRWIN)\r\n##ENDIF','2005-01-20','21:07:44','dias','0100-01-01','','',''),(96,'SEEK_VAR()','Searche for a record','seek_var(_var)','L','DBPEG','dbopen(), dbskip(), dborder(), set_order()','B','Use to: Find into the active database the record with the value _var , using the active index.\r\n\r\nParameters:\r\n_var : the value used to search.\r\n\r\nReturns .T. if finds the record, else returns .F.\r\n\r\nExamples:\r\n#### opens the Clients database (etf) and define active index the VAT (p20)\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndborder(\'etf\', \'etf_d\', \'p20\')\r\n#### if finds VAT\r\n##IF seek_val(\'094999999\')\r\nsayinfo(150)\r\n##ELSE\r\nsayalert(151)\r\n##ENDIF\r\ndbclose(\'etf\')\r\n','2005-01-20','21:08:14','dias','0100-01-01','','',''),(97,'SETFILTER()','Set a filter for the records of a file','setfilter(_file, _cond)','C','DBPEG','cpegbrowse()','W3','Use to: Set a filter to a database, in order to be public only some records. It is not recommended to use setfilter() , because creates delay while database manage, but to use cpegbrowse (see cpegbrowse() - parameter cond)\r\n\r\nParameters:\r\n_file (c) : the database name has to be already opened\r\n_cond (c) : the condition has to matches the records will be public\r\n\r\nReturns an empty string\r\n\r\nExample:\r\nsetfilter(\'etf\', \'p02=1\')\r\n','2005-01-20','21:08:51','dias','0100-01-01','','',''),(98,'SET_INDEX1()','Activates indexes in one xbase file','set_index1(_indexes)','C','DBPEG','fuse(), seek_var(), setntx()','B','Use to: Activate the indexes of a xbase file will be used for searching\r\n\r\nParameters:\r\n_indexes (c) : the string has the indexes names, separated with commas (,). May see max ten (10) indexes\r\nReturns an empty string\r\n\r\nExample:\r\nfuse(\'test\', .f.)\r\nset_index1(\'test1, test2\')\r\n','2018-10-22','14:10:34','tesae','0100-01-01','','',''),(99,'SET_ORDER()','Activates an index of a data class as main','set_order(_num)','C','DBPEG','seek_var(), dborder(), ordkey(),','B','Use to: Set as main index from an active data class, that one with the sequence _num. The indexes from one data class have the sequence are displayed in screen class, related with. The main index is the one sets the data sequence in a data class. Also, it is the one is activated while searching and move functions (SEEK_var(), dbgotop(), dbskip(), and so on).\r\nNotice that each time we define as main index that one used for the task we run\r\n\r\nParameters:\r\n_num (n) : the index sequence will be activated.\r\nReturns an empty string characters suite\r\n\r\nExample:\r\nOpen the data class \"etf\" and set as main index the 2nd\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\nSET_ORDER(1)\r\n##IF seek_var(50)\r\nsayinfo(160)\r\n##ELSE\r\nsaystop(190)\r\n##ENDIF\r\ndbclose(\'etf\')','2014-04-28','18:12:17','tesae','0100-01-01','','',''),(100,'SGETAFLD()','Select from Help Screen','sgetafld(_file, _desc, _field, _order, _cond, _default, _top, _left, _bot, _right, _type, _pixel, _title, _relative)','','DBPEG','sgesfld(), p_val()','W3','Purpose: Displays the data of one data class in a mass management shape and offers to user the possibility to select a record and from it to return the respective field value. This option it is possible by pressing the keyboard key [Enter] or double click method. It is a very useful function while selecting the values from the help screens during data submission.\r\nUse to: Give the possibility to the user to select the values from help data class in screens class. This way the help screens can be used without limits while data submission.\r\n\r\nParameters:\r\n_file (c): the data class where is searching to find the value\r\n_desc (c): the screen class describes the data class\r\n_field (c): the field name or expression  of that value will return. If it is an expression and starts with a \'*\' then it executes the expression and not returns\r\n_order (n - c) : the index suite followed in sequence. This value cannot be 0. In staid of index suite (numeric) to be the name of the field in sequence (string)\r\n_cond (c): the condition has to matches in order to be activated the function\r\n_default : the value will return in case that was no selection (was pressed the keyboard key <Esc>).\r\n_top,_left,_bot,_right (n): Set the display screen of data.\r\n_type (n): the screen type (default value it is 3)\r\nTakes the values 1=Strong Black vertical lines, 2=Grey vertical lines, 3=3D view (three-dimensional view), 4=Commas.\r\n_pixel (l) : if it is .t. , then the screen will be displayed on pixels, else on lines. If this setting is missing, then by default is on lines.\r\n_title(c): An optional title added to screen classe\'s title\r\n_relative (l) : Optional. If exists and it is .t. the coordinates o dialog box are relative to parent window\r\n\r\n_Type Values Can Be\r\nLINES_NONE            99\r\nLINES_BLACK           1\r\nLINES_GRAY            2\r\nLINES_3D              3\r\nLINES_DOTED           4\r\nLINES_V_BLACK         5\r\nLINES_V_GRAY          6\r\nLINES_H_BLACK         7\r\nLINES_H_GRAY          8\r\nYou can use these style numbers to sgesfld(), sgetafld(), listtable(). \r\nAlse you can use 1000 + style (i.e. 1001, 1003) to create a browse without dialog box. \r\n\r\n\r\nReturns the value of the field _field from the record was selected or from the value_default if no record was selected.\r\n\r\nRemarks:\r\nIn the place of _field in staid of field, can exist entire syntax that has the fields of the file _file.\r\n\r\nExample:\r\nInto the screen class Payment Orders, I want to insert the payment order Status Code (field P1O). I want, if the user inserts the code 0, to be displayed the codes file (EAO) from where to select the status and will be returned the code (field N0001).\r\nInto the column Field Value, to the field I insert:\r\nSGETAFLD(\"KAT\", \"KAT_D\", \"P0001\", 2, \"np10=0\", np10, 10, 10, 21, 50, 3)\r\nReturns the value of the N001 for the record will select. The sequence was done from the 2nd index of data class. If nothing was selected, returns the old value of np10. The function runs only if np10 it is 0.\r\n','2009-02-04','14:20:13','dias','0100-01-01','','',''),(101,'SGETSFLD()','Selects from a Pegasus dBase','sgetsfld(_file, _desc, _field, _order, _sval, _cond, _default, _top,_left,_bot,_right,_type, _pixel, _title, _scond, _cond1, _relative)','','DBPEG','sgetafld()','W3','Purpose: Displays the data of one data class in mass management shape and give to the user the possibility to select one record and from it to return the respective field value. The selection is done by pressing the keyboard key [enter] or double click. The difference from SGETAFLD() is that is not going to the top data class, but to the record settled from _sval. So, is using the active index of the data class, in order to find the first record starting from user will begin searching.\r\n\r\nParameters:\r\n_file (c): the data class name where searches to find the value\r\n_desc (c): the screen class name that describes the data class\r\n_field (c): the field name or expression  of that value will return. If it is an expression and starts with a \'*\' then it executes the expression and not returns\r\n_order (n - c) : the index suite followed in sequence. This value cannot be 0. In staid of index suite (numeric) to be the name of the field in sequence (string)\r\n_sval : the value defines to which record the scroll bar will be active, according to the selected index.\r\n_cond (c) : the condition has to be valid in order to activate the function.\r\n_default : the value will return in case that was not made any selection (was not pressed <Enter> but <Esc>)\r\n_top,_left,_bot,_right (n) : Define the display screen of the data class\r\n_type (n): the screen type (the default value it is 3)\r\n_pixel (l) : if it is .t. , then the screen will be displayed on pixels, else on lines. If this setting is missing, then by default is on lines.\r\n_title (c) : it is the title will be displayed on screen, beside the screen class title\r\n_scond (c): it is the condition has to be valid for the records will be displayed. Has to be according to the sequence field. If the definition is missing, displays all the records.\r\n_cond1 (c) : it is an if condition for records that apperas to browse\r\n_relative (l) : Optional. If exists and it is .t. the coordinates o dialog box are relative to parent window\r\n\r\n_Type Values Can Be\r\nLINES_NONE            99\r\nLINES_BLACK           1\r\nLINES_GRAY            2\r\nLINES_3D              3\r\nLINES_DOTED           4\r\nLINES_V_BLACK         5\r\nLINES_V_GRAY          6\r\nLINES_H_BLACK         7\r\nLINES_H_GRAY          8\r\nYou can use these style numbers to sgesfld(), sgetafld(), listtable(). \r\nAlse you can use 1000 + style (i.e. 1001, 1003) to create a browse without dialog box. \r\n\r\n\r\nReturns the value for the field _field from the selected record, or the default value if no record was selected.\r\nUse to: Give to the user the possibility to select in screen classes values from the data classes. For example to find one client.\r\n\r\nExample:\r\nInto the screen class of client selection, while issue the invoice, the user insert into the client place \"/ \"and the company name. It is displayed the Clients data class starting with the company name was given or similar. When selects, return the client company name.\r\nsgetsfld(\'etf\', \'etf_d\', \'p19\', 2, \'substr(nepon, 2, 40)\', \"nepon=\'/\'\", nepon, 2, 2, 21, 77, 1)\r\nwhere:\r\netf : the clients data class\r\netf_d : the screen class.\r\np19 : the field has the company name into the clients data class.\r\n2 : the index will be activated for searching\r\nepon : the field of screen class where user inserts the searching data\r\nnepon : the variables that have the content of the field epon\r\nNotice that for searching it is used the syntax substr(nepon, 2, 40) because the first character user ywill insert it is \"/ \" (see also the function activate nepon=\'/\')\r\n','2009-02-04','14:20:20','dias','0100-01-01','','',''),(102,'SORTCHOICE()','Select the sequence of a database','sortchoice(descfle, @sorting, @sortfld, _sbox)','C','DBPEG','cpegbrowse(), seekbrowse()','W3','Use to: Displays menu sequence selection for the user. It may perform searching together with seekbrowse()\r\n\r\nParameters:\r\ndescfle : the screen class for which will be done the sequence selection\r\nsorting : the suite for the selected index\r\nsortfld : the sequence field\r\n_sbox : the box code, where user will perform the selection\r\n\r\nReturns an empty string\r\n\r\nexample\r\nP_VAL(@P_thkSOR, \"0\")\r\nsortchoice(\'thk_d\', @p_thksor, @p_thkfld, 2)\r\n##IF P_thkSOR<>0\r\nSEEKBROWSE(\'thk\', P_thkSOR)\r\nREFRIT(_BRWIN)\r\n##ENDIF','2005-01-20','21:12:09','dias','0100-01-01','','',''),(103,'STREPL()','Mass update of a data class','strepl(_file, _desc, _seekpar, _order, _whilecond, _ifcond, _field, _val, _ret)','','DBPEG','dowhile(), plussum()','B','Purpose: Replace the value of one data class field for certain records.\r\nUse to: Perform mass update of the fields.\r\n\r\nParameters:\r\n_file (c) : the data class where will made the changes\r\n_desc (c) : the screen class that defines the data class structure\r\n_seekpar : the first selected record value (means, it is the value used to perform searching seek).\r\n_order (n - c) : define the suite of the index has to be activated for searching. Instead of index suite, we may insert the database field that is in sequence.\r\n_whilecond (c): the condition shows how much is searching in data class. It is the condition runs DO WHILE LOOP.\r\n_ifcond (c) : the condition that has to be valid for the records where will be replaced the field value.\r\n_field (c) : the field of which value will be changed.\r\n_val (c) : the syntax will define the new field value.\r\n_ret : the value will be returned.\r\n\r\nReturns the value of _ret.\r\n\r\nExample:\r\nThe data class of Stock with the fields:\r\np01 = supplier\'s code (the 4th index in data class)\r\ntimh2 = sale price\r\np02 = date of the last buying.\r\nThe following function increase the sale prices of the products from the supplier with the code 2, for the products were bought after 31/12/1999\r\nSTREPL(\"TNV\", \"TNV_D\", \"2\", 4, \"p01=2\",\r\n\"p02<=ctod(\'31/12/1999\')\", \"OEIC2\", \"OEIC2*I.1\", \'\').','2005-01-20','21:12:35','dias','0100-01-01','','',''),(104,'SUMANFLD()','Returns to a variable the field value of one data class','sumanfld(_file,_index,_field,_gval, @_var)','C','DBPEG','printfld()','B','Purpose: Takes from a data class one field value, finds one certain record searching with an index and returns it to a variable. Similar with PRINTFLD(), the only difference is that sumanfld returns the value to a variable.\r\nUse to: Have data from many data classes on screen or in printouts for the data class we manage. The record search follows an index.\r\n\r\nParameters:\r\n_file (c) : the name of the data class where is searching to find the value\r\n_index (c) : the index name used for searching\r\n_field (c) : the field name of which value will be returned\r\n_sval : the variable or the value used for searching the data\r\n_var : the variable will take the returned value\r\nNOTICE that the index file name from a data class it is created using the terminology <field name><data class name>. Means that if we have an index to the field P01 of data class etf, its name will be p01etf\r\n\r\nReturns an empty string\r\nInto the variable _var returns the value of the field _field from the founded record. If does not find the record, returns a value according to the field type, means 0 if it is a numeric field, an empty string characters suite if it is a string field or \"//\" if it is a date field.','2005-01-20','21:13:28','dias','0100-01-01','','',''),(105,'TAKECOND()','Creates searching criteria','takecond(_file, _desc, logic, hlp, _abox, @_scond, @_cond, @_sorting, @_sortfld, @_vseek, @_sortit, @_cotit, _meth)','C','DBPEG','manage(), dowhile()','W3','Use to: Create searching criteria to a database, that can be used from dowhile() to run any task. You may create a screen where user will create the conditions, these are displayed on screen and selects the execution. It is similar with manage(), the only difference is that after searching criteria creation, user cannot see the condition but starts searching.\r\n\r\nParameters:\r\n_file (c) : the database (has to be opened before function runs)\r\n_desc (c) : the screen description class\r\nlogic (n) : if it is 1 activates the menu and/or. Here can be used the variable _andor defined in system parameters\r\nhlp (n) : the help code will be activated\r\n_abox (n) : the box code where will be displayed the searching criteria\r\n_scond (c) : the do while condition it is created\r\n_cond (c) : the if condition it is created\r\n_sorting (n) : the index suite has to be activated\r\n_sortfld (c) : the field it is in sequence\r\n_vseek : the searching syntax\r\n_sortit (c) : the description of dowhile condition\r\n_cotit (c) : the condition\'s description\r\n_meth (c) : the method you call for each condition creation step. Used mainly to display on screen the _cotit and the _sortit (to some variables of type v)\r\n\r\n\r\n*******************\r\n_abox can be array like {_title, _top, _left, _bot, _right, _style, _relative}\r\n                          _title (c) = _title of selection list\r\n                          _top, _left, _bot, _right (n) = List Box coordinates to pixel\r\n                          _style (n) = 1 for full dialog box, 0 for only selection list\r\n                          _relative (l) = if .t. the coordinates are relative to parent window. \r\n*******************\r\n','2005-11-29','15:39:49','dias','0100-01-01','','',''),(106,'UNNEW_REC()','revokes the increase of one data class counter',' unnew_rec(_file, _anr01)','C','DBPEG','new_rec()','B','Use to: Revoke the increase of the counter done to a database. The Pegasus Data Classes saves the pragmatic serial number of the records into the field NR01. The records counter it is saved into the file ???_C (where ??? it is the name of the data class).\r\nThe UNNEW_REC() decrease with one the database counter if this is same with _anr01. If the counter is not equal with _anr01 does not revoke. This is settled because else would exist confusion and revokes for the counter unique.\r\n\r\nParameters:\r\n_file (c) : the file of which the serial number will be decreased\r\n_anrO1 (n) : the serial number that will be revoked.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nLet\'s take the data class \"etf\" with 8 records\r\nNEW_REC(\"etf\") returns 9\r\nNEW_REC(\"etf\") returns 10\r\nUNNEWREC(\"etf\",10)\r\nNEWREC(\"etf\") returns 10\r\n#### submit new record\r\ninitrec(\'etf\', \'etf_d\', .t.)\r\n##IF getdata(\'etf\', \'etf_d\', .t., 10, .t., 1)=.f.\r\nunnew_rec(\'etf\', nnr01)\r\n##ELSE\r\nrepldata(\'etf\', etf_d\', .f.)\r\n##ENDIF\r\nreleasvar(\'etf_d\')\r\n','2005-01-20','21:14:31','dias','0100-01-01','','',''),(107,'ZAPFLE()','Zap one database from its data','zapfle(_file)','C','DBPEG','pacfle(), reibase()','B','Use to: Remove all the records from one data class. After task running, it is recommended to perform a Reindex with the function REIBASE() (if has to do with a data class) or with the function INDEX_ON() (if it is about a simple file)\r\nThe file or the data class has to be closed and during task running no usage it is possible .\r\n\r\nParameters:\r\n_file (c) : the data base.\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\nZAPFLE(\"etf\")\r\nREIBASE(\"etf\",\"etf_d\")\r\n','2005-01-20','21:15:03','dias','0100-01-01','','',''),(108,'CURDIR()','Returns the name of the current directory','curdir()','C','DIR','lchdir()','W3','Returns the name of the current directory\r\nUse to: Return the directory application runs to\r\nExample:\r\np_val(@_disk, \"diskname()\")\r\np_val(@_cdir, \"curdir()\")\r\ndiskchange(\"d:\")\r\nlchdir(\"\\test1\\dir1\")\r\nmsginfo(\'New Directory\')\r\ndiskchange(_disk)\r\nlchdir(_cdir)\r\nmsginfo(\'Previous Directory\')','2005-01-20','14:37:58','dias','0100-01-01','','',''),(109,'CURDRV()','The current Hard drive','curdrv()','C','DIR','newdrv()','W3','Use to: Displays the current hard disk.\r\nExample\r\np_val(@_disk, \"curdrv()\")\r\np_val(@_cdir, \"curdir()\")\r\nnewdrv(\"d:\")\r\nlchdir(\"\\test1\\dir1\")\r\nmsginfo(\'New Directory\')\r\nnewdrv(_disk)\r\nlchdir(_cdir)\r\nmsginfo(\'Previous Directory\')\r\n','2005-01-20','14:38:09','dias','0100-01-01','','',''),(110,'DISKCHANGE()','Changes the project disk','diskchange(_disk)','L','DIR','lchdir(), curdir(), diskname()','W3','Use to: Change the project disk.\r\nParameters:\r\n_disk : the disk name\r\nReturns .t. if the change is successfully, else .f.\r\nExample:\r\n##IF diskchange(\'d:\')\r\nmsginfo(\'Current Disk is D:\')\r\n##ELSE\r\nmsginfo(\'Disk is the same\')\r\n##ENDIF\r\n','2005-01-20','14:38:15','dias','0100-01-01','','',''),(111,'DISKNAME()','Displays the current Disk Name','diskname()','C','DIR','diskchange(), lchdir()','W3','Use to: Display the current disk.\r\nExample:\r\np_val(@_disk, \"diskname()\")\r\np_val(@_cdir, \"curdir()\")\r\ndiskchange(\"d:\")\r\nlchdir(\"\\test1\\dir1\")\r\nmsginfo(\'New Directory\')\r\ndiskchange(_disk)\r\nlchdir(_cdir)\r\nmsginfo(\'Previous Directory\')','2005-01-20','14:38:21','dias','0100-01-01','','',''),(112,'LCHDIR()','Changes Directory','lchdir(_dir)','L','DIR','curdir()','W3','Use to: Change the current directory\r\nParameters:\r\n_dir : the name of the new directory.\r\nReturns .t. id change is successfully , else .f.\r\nExample:\r\nlchdir(\'\\test\\dir1\')\r\n','2005-01-20','14:38:27','dias','0100-01-01','','',''),(113,'MAKEDIR()','Creates a new directory','makedir(_dir)','C','DIR','lchdir()','W3','Use to: Create a new directory on disk\r\nParameters:\r\n_dir : the name of the new directory\r\nReturns an empty string\r\nExample:\r\nmakedir(\'\\test1\')\r\n','2005-01-20','14:38:35','dias','0100-01-01','','',''),(114,'NEWDIR()','Changes the project Directory','newdir(_path)','C','DIR','lchdir()','W3','Use to: Change the current directory\r\nParameters:\r\n_dir : the name of the new directory.\r\nThe difference from lchdir() it is that if _dir it is to another disk, in the same time changes the disk too.\r\nReturns an empty string.\r\nExample:\r\nnewdir(\'d:\\test\\dir1\')','2005-01-20','14:38:42','dias','0100-01-01','','',''),(115,'NEWDRV()','Changes the project drive','newdrv(_drive)','C','DIR','lchdir(), changedrv()','W3','Use to: Change the project drive.\r\nParameters:\r\n_drive : the drive name\r\nReturns an empty string\r\nExample:\r\nnewdrv(\'d:\')\r\n','2005-01-20','14:38:50','dias','0100-01-01','','',''),(117,'COPYFILE()','Copy file','copyfile(_source, _target)','C','FILE','delfile()','B','Use to: Copy the file _source into the file _target.\r\nParameters:\r\n_source (c) : the file will be copied.\r\n_target (c): the new file will create.\r\nReturns the empty string characters suite\r\nExample:\r\nCOPYFILE(\"TESAE1.TXT\",\"TESAE2.TXT\")\r\n','2005-01-20','14:39:22','dias','0100-01-01','','',''),(118,'COPYFILES()','Copy files from a folder to another','copyfiles(_mask, _fromdir, _todir)','C','FILE','copyfile(), delfile(), delfiles()','W3','Use to: Copy files from _fromdir to _todir\r\nParameters:\r\n_mask (c) : one mask that declares the files will be copied\r\n_fromdir (c): the folder where there are the files (needes last \\)\r\n_todir (c): the folder where will be copied the files  (needes last \\)\r\nReturns an empty string characters suite\r\nExample:\r\nCOPYFILES(\"*..TXT\",\"..\\_001\\\", \"..\\_002\\\")\r\n','2014-01-30','13:21:20','tesae','0100-01-01','','',''),(119,'DELFILE()','Delete file','delfile(_file)','C','FILE','copyfile()','B','Use to: Delete one file from disk\r\nParameters:\r\n_file (c) : the file will be deleted.\r\nReturns an empty string characters suite\r\nExample:\r\nDELFILE(\"TESAE1.TXT\")','2005-01-20','14:39:43','dias','0100-01-01','','',''),(120,'DELFILES()','Deletes files from disk','delfiles(_mask)','C','FILE','delfile(), copyfile()','W3','Use to: Delete from disk files mashes with a mask\r\nParameters:\r\n_mask : the mask of the files will be deleted. Follows the ms-dos rules\r\nReturns an empty string\r\nExample:\r\ndelfiles(\'etf*.*\')\r\ndelfiles(\'*.ntx\')','2005-01-20','14:39:49','dias','0100-01-01','','',''),(121,'FILE()','Check the existence of a file','file(_file)','L','FILE','delfile(), copyfile(), set_path(), set_defp()','B','Use to: Examine if there is a file in disk. Searches the current path and the one were defined with set_path() or with set_defp()\r\nParameters:\r\n_file : the file name is searching\r\nReturns .t. if finds the file, else .f.\r\nExample :\r\nFILE(\'test.txt\') if there is the file, returns .O.\r\n','2005-01-20','14:39:57','dias','0100-01-01','','',''),(122,'NEWTEMP()','Returns the name of a temporary file','newtemp(_ext, _pref, _long)','C','FILE','createmp()','W3','Returns (c) a temporary file name without extension. \r\n\r\nArguments\r\n========\r\n    _ext (c) : Default = \'dbf\'. The file extension. \r\n    _pref (c): Default = \'L_\'. The prefix of name\r\n    _long (l): Default = .f.. If .t. then creates long name. \r\n\r\nExamples\r\n========\r\n? newtemp() //L_1doj3\r\n? newtemp(\'dbf\', \'c:\\pegtemp\\R1_\', .t. ) //c:\\pegtemp\\R1_6f57_1341609_1e6b8\r\n? newtemp(\'\', \'\', .t. ) //3bd3_1341609_1e73e','2019-07-29','12:48:05','tesae','0100-01-01','','',''),(123,'ABS()','The absolute value of one number','abs(_exp)','N','MATH','int(), round(), tranchr(), upchr()','B','The absolute value of one number\r\nUse to: Return the numeric value, the absolute value of an numeric syntax\r\nParameters :\r\n_exp (n) : it is the numeric syntax of which the absolute value will be returned\r\nReturns the absolute value of the syntax\r\nExamples:\r\nABS(2-3) && returns 1.\r\nABS(2.3-4.7) && returns 2.4.','2008-06-23','20:01:27','dias','0100-01-01','','',''),(124,'EXP()','Expose function','exp(_num)','N','MATH','','B','Use to: Return the expose function of _num\r\nParameters :\r\n_num : it is the numeric syntax of which the expose will be returned\r\nReturns numeric.\r\nExample :\r\nEXP(4.7) && returns 109.947172\r\n','2005-01-20','14:42:16','dias','0100-01-01','','',''),(125,'GIVEHEX()','The number as Hexadecimal','givehex(_num)','C','MATH','val(), str()','B','Use to: Return the hexadecimal base a number\r\nParameters\r\n_num : the number','2009-09-30','10:56:16','dias','0100-01-01','','',''),(126,'INT()','The integral part of a number','int(_num)','N','MATH','str(), round(), int54()','B','Use to: Remove the decimals figures of one numeric syntax and return the integral part of it.\r\nParameters:\r\n_Num: The number or the syntax will manage.\r\nReturn numeric.\r\nExample :\r\n? INT(4.55) && Returns 4.\r\n? INT(-4.55) && Returns -4.','2005-01-20','14:42:32','dias','0100-01-01','','',''),(127,'INT54()','Rounding a number by  5/4','int54(_num)','N','MATH','int(), str(), round()','W3','Purpose: Rounding a number by 5/4. Means, returns the integral part of that number if the decimal part of it is smaller or equal with 0.5. Else, returns the integral part of the number +1.\r\nUse to: Accountancy calculations.\r\nParameters :\r\n_num (n) : the number we are going to round.\r\nReturns a number.\r\nExamples:\r\nINT54(5.5) && Returns 5\r\nINT54(5.4) && Returns 5\r\nINT54(5.6) && Returns 6\r\n','2005-01-20','14:42:39','dias','0100-01-01','','',''),(128,'LOG()','The logarithmic of a numeric','log(_num)','N','MATH','exp()','B','Useful observation: The numeric syntax <expN> install to the function like y to the type eX=y, where e has the value 2.7183, and x is the number will return.\r\nLOG (_num) is the reverse of EXP (_num). If we use one syntax with value smaller or equal to zero (0) as setting of the function LOG (), will call the numeric overflow (bigger number of figures from the settled one) and the result will appear as one suite of asterisk (*).\r\n\r\nObservations :\r\nExample :\r\n? LOG(8) && return 2.08.\r\nThe logarithm of one number\r\nUse to: Define the natural logarithm of one numeric syntax.\r\nReturns numeric.\r\nRemarks: The numeric syntax <expN> it is replaced in a function, same like y from type eX=y, where e has the value 2.7183 and x it is the number will be returned. The LOG(_num) it is the opposite of EXP(_num). If we are using one syntax with a value smaller or equal with 0 as definition of the function LOG(), will call the numeric overflow (bigger number of figures from the settled one) and the result will be displayed as one suite of asterisk (*).\r\nExample :\r\n? LOG(8) && Returns 2.08.\r\n','2005-01-20','14:42:52','dias','0100-01-01','','',''),(129,'MAX()','Finds the maximum value','max(_val1, _val2)','','MATH','min()','B','Use to: Evaluate which one from two syntax has bigger value\r\nParameters:\r\n_val1, _val2 : are the two syntax, date or numeric type, both from same type\r\nReturns numeric or date.\r\nRemark : If we define 0 as one of the parameters for MAX(), will be returned the other value. If both parameters are same, MAX() will return the first value.\r\nExamples:\r\n? MAX(4.7) && Returns 7.\r\n? MAX(DATE(), CTOD(\'02/02/83\') && Returns the date.','2005-01-20','14:42:59','dias','0100-01-01','','',''),(130,'MIN()','Finds the minimum value','min(_val1, _val2)','','MATH','max(), if()','B','Use to: Evaluate which one from two syntax has smaller value\r\nParameters:\r\n_val1, _val2 : are the two syntax, date or numeric type, both from same type\r\nReturns numeric or date.\r\nRemark : If we define 0 as one of the parameters for MIN(), will be returned the other value. If both parameters are same, MIN() will return the first value.\r\nExamples:\r\n?IEI(4,7) &&Returns 4.\r\n?IEI(DATE),CTOD(\'02/02/83\') &&Returns 02/02/84.','2005-01-20','14:43:08','dias','0100-01-01','','',''),(131,'ROUND()','Round a number','round(_num, _num1)','N','MATH','int(), int54(), str()','B','Use to: Round a number with a certain decimals approximation\r\nParameters :\r\n_num : it is the number to be rounded.\r\n_num1 : it is the decimals figures from the value will be returned. If _num1 it is a negative number, displays the figures number from the left part of comma will round\r\nReturns numeric\r\n\r\nExamples:\r\n? ROUND(9.92362,2) &&Returns 9.91\r\n? ROUND(9.92362,0) &&Returns 10\r\n? ROUND(9.92362,3) &&Returns9.924.\r\n? ROUND(9.92362,-1)&&Returns 10.\r\n','2005-01-20','14:43:18','dias','0100-01-01','','',''),(132,'SQRT()','Square root of a number','sqrt(_num)','N','MATH','exp(), round(), int()','B','Use to: Calculate the square root of a number.\r\nParameters:\r\n_num : it is the number of which we want to calculate the square root. The numeric syntax has to return a positive number. If the syntax has a negative value, the result will be 0.\r\nReturns: numeric\r\nExamples:\r\n? SQRT (9) &&returns 3.00.\r\n? SQRT(-9) &&returns0.00','2005-01-20','14:43:24','dias','0100-01-01','','',''),(133,'EDITMEMO()','Manages one text field (memo) in an autonomic screen','editmemo(@_amem, top, left, bot, right, _memlen, _atit, x, y, _ret, _saveit)','','MEMOS','memoread(), memowrit()','W3','Manages one text field (memo) in a autonomic screen\r\nUse to: Manage inside a screen a variable from memo type or character type as text.\r\nParameters:\r\n_amem (m) : The variable will manage\r\ntop, left(n) : set up the left up limit of the box will create.\r\nbot, right (n) : set up the right down limit of the box will create.\r\n_memlen (n): the length of the text line. If is bigger then the box line of the frame, then become sliding.\r\n_atit (c) : the title will be displayed\r\nx,y (n) : 0 (exists for compatibility reasons with version VK4.00 for MS-DOS)\r\n_ret : the value will return\r\n_saveit : if it is .f. then the new value of the memo will be not updated. If this variable is missing, consider that has value .t.\r\nReturns the value _ret\r\nExample:\r\neditmeno(@np30, 10, 2, 21, 77, 75, \"Observations\" , 0, 0,\'\', .t.)\r\n','2005-01-20','14:43:34','dias','0100-01-01','','',''),(134,'MEMOLINE()','Finds one text line from a text field (memo)','memoline(_memo, _linelength, _linenumber).','C','MEMOS','editmemo(), mlcount(), memoread(), memowit()','B','Finds one text line from a text field (memo)\r\nUse to: Isolate and shape one text line from a text field (memo) or a string.\r\nParameters:\r\n_memo (m) - (c): is the string field or the text field will be used.\r\n_linelength: the line length will be used to shape it.\r\n_linenumber: The line number we want to be returned.\r\nReturns one string\r\nRemark: MEMOLINE () mainly breaks one part of text to one specific number of shaped lines. The total lines number from a text fragment can be found using the function MLCOUNT (). For example, if MLCOUNT () displays that there are 12 text lines, if the text is shaped into 65 characters per line, you may use MEMOLINE () to isolate only the lines 4, 5 and 6.\r\nIf one line has less characters then defined into the function MEMOLINE (), fills up with continues spaces. If the lines number is bigger then the settled, returns one empty string.\r\nExample:\r\nMEMOLINE(text,65,1) && returns the content of the first text line','2005-01-20','14:43:40','dias','0100-01-01','','',''),(135,'MEMOREAD()','Recognises a text file from disk','memoread(_file)','M','MEMOS','memowrit(), editmemo(), memoline(), mlcount()','B','Use to: Read one ASCII file from the disk. Returns the content to a variable to manage it (see also memowrit(), editmemo(), memoline(), and so on)\r\nParameters :\r\n_file : it is the file name will read.\r\nReturns the file content.\r\nRemark: The file we want to read has to be smaller than 32E if we want to place it to a string variable, or smaller then 64E if it is going to place it in a memo field\r\nExample:\r\np_val@_vstring,\"MEMOREAD(\'text.txt\')\")\r\n','2005-01-20','14:43:47','dias','0100-01-01','','',''),(136,'MEMOWRIT()','Writes the content of one text variable (memo) or string variable on disk, in ASCII file type','memowrit(_file, _memo)','L','MEMOS','memoread(), editmemo(), memoline(), mlcount()','B','Use to: Write the content of one string variable on disk.\r\nParameters :\r\n_file (c) : the file name will write. Has to contain the extension and the path.\r\n_memo : the variable name saves the string\r\nReturns .t. if the writing ends successfully, else .f.\r\nExample:\r\nMEMOWRIT(\"text.fil\", charvar)\r\n','2005-09-19','12:30:04','dias','0100-01-01','','',''),(137,'MLCOUNT()','The total lines number from a field or one text variable','mlcount(_memo, _linelength)','N','MEMOS','memoread(), memowrite(), editmemo(), memoline()','B','The total lines number from a field or one text variable.\r\nUse to: Count the number of shaped text lines from a memo field or from a string variable.\r\nParameters :\r\n_memo (m) - (c) : it is the text field name or the string value will take part to sum\r\n_linelength (n) : the line length is searching to shape the text fragment.\r\nReturns the total lines number\r\nRemark Mostly MLCOUNT() it is used to define into MEMOLINE() how many lines will have the text for a specific line length\r\nExample:\r\np_val(@_text1, \"memoread(\'test.txt\')\")\r\np_val(@_lines, \"MLCOUNT(_text1, 65)\")\r\n###the variable _lines takes the total lines number of the text and shape the lines to 65 characters length.\r\n','2005-01-20','14:44:00','dias','0100-01-01','','',''),(138,'MLPOS()','Finds the place of one text line','mlpos(_memo, _linelength, _line)','N','MEMOS','memoread(), memowrit(), memoline(), mlcount()','B','Finds the place of one text line\r\nUse to: Find the relative place of one shaped line inside a string or one memo field\r\nParameters :\r\n_memo (m) - (c) : the string where will search for the relative place.\r\n_linelength (n) : the line length will be used in text shape\r\n_line (n) : the number of the line you want to use in order to find the relative place\r\nReturns numeric.\r\nRemark: this function it is usefully to create the broken MEMOREAD() variables. Returns one numeric value equal with the characters number has the settled line from the top of the text.\r\nExample :\r\n? MLPOS(strin, 65, 15) && Returns the place from where starts the 15th text line','2005-01-20','14:44:10','dias','0100-01-01','','',''),(139,'DO_MENU()','Activates - Executes one selections menu','domenu(_menu, _kind, _hlp, _winobj, _row, _col, _from, _to)','C','MENUS','menus(), makemenu()','W3','Activate one selections menu from the active Menus Attribute.\r\n\r\nArgumentes\r\n_menu (c) : the menu code.\r\n_kind (n) : 0 (exists for compatibility reasons with the version VK4.00 for MS-DOS )\r\n_hlp (n) : the code of the help will be activated.\r\n_winobj (o) : The window objet menu owns to (usually use _curwin)\r\n_row, _col (n) : Coordinates of top left corner of menu (relative to _winobj)\r\n_from (n). Optional. Default=0. It is the menu item sequense from it will start to see\r\n_to (n). Optional. Default=9999999999. It is the menu item sequense until it will see\r\n\r\n\r\nDO_MENU(\"main\", 0,10, _curwin, 100, 100)\r\n\r\n','2017-09-27','15:24:22','tesae','0100-01-01','','',''),(140,'MACHOICE()','Select from one array values','machoice(_box, _array, _kind)','N','MENUS','do_menu(), array(), aadd()','W3','Use to: It Displays a selection List with elements of an array\r\n\r\nParameters :\r\n_box (n - a): If _box is numeric then it is the code of the box where will be displayed the selection. \r\n                   It can be an array like {_title, _top, _left, _bot, _right, _style, _relative}\r\n                          _title (c) = _title of selection list\r\n                          _top, _left, _bot, _right (n) = List Box coordinates to pixel\r\n                          _style (n) = 1 for full dialog box, 0 for only selection list\r\n                          _relative (l) = if .t. the coordinates are relative to parent window. \r\n\r\n_array (a) : the array of which content will display. It\'s elements must be character type\r\n_kind : =1 used for compatibility reasons\r\n\r\n\r\nReturns the line was selected from user or 0 if does not select anything\r\n\r\nExample\r\nThrough cpegbrowse() may activate the following method for searching (_tit1 it is the array has the titles of the database field in sequence)\r\nP_VAL(@P_thkSOR, \"MACHOICE(2, _TIT1, 1)\")\r\n##IF P_thkSOR<>0\r\nSEEKBROWSE(\'thk\', P_thkSOR)\r\nREFRIT(_BRWIN)\r\n##ENDIF\r\n','2005-11-29','15:38:40','dias','0100-01-01','','',''),(141,'MENUS()','Activates one selections class','ΜΕΝus(m_title, _kind)','N','MENUS','do_menu()','W3','*** its usage is not recommended. Exists for compatibility reasons with version VK4.00 for MS-DOS\r\nMENUS() (n)\r\nUse to: Display one menu on screen. Opposite of do_menu when user selects one option, does not execute the action was defined from Selections Class. Just returns the selection number user has made. We use it mainly in \'usage question\' to continue (for example Delete - Cancel)\r\nParameters :\r\nm_title (c) : the menu title-code\r\n_kind (n) : =1 (exists for compatibility reasons)\r\nReturns the selection number. If user press [Esc] (does not select anything) returns 0.\r\nExamples:\r\nMENUS(\"main\",1)','2005-01-20','14:44:33','dias','0100-01-01','','',''),(142,'MSGALERT()','Displays one alert message','msgalert(_str, _title)','U','MSG','msgstop(), sayalert(), saystop()','W3','Use to: Display one message from alert type.\r\nParameters :\r\n_str : the message will display\r\n_title : the screen title\r\nExample\r\nmsgalert(\'Wrong code!\', \'Submit Client\')\r\n','2005-01-20','14:44:59','dias','0100-01-01','','',''),(143,'MSGINFO()','Displays one message in an info screen','msginfo(_str, _title)','U','MSG','msgalert(), msgyesno(), msgstop(), sayalert(), sayinfo(), debMsg()','W3','Use to: Display on screen one info window with a message\r\nParameters :\r\n_str : the message will be displayed.\r\n_title : the screen title\r\nReturns an empty string characters suite.\r\nExamples:\r\nmsginfo(\'Your Client does not have Fiscal Code\', \'Pegasus\')','2008-07-01','11:54:37','dias','0100-01-01','','',''),(144,'MSGSTOP()','Displays one message in stop window','msgstop(_str, _title)','U','MSG','saystop(), msginfo(), msgyesno()','W3','Use to: Display on screen one stop window with a message\r\nParameters :\r\n_str (c) : the message\r\n_title : the window title\r\nReturns nil\r\nExamples:\r\n##IF _ypol<>0\r\nmsginfo(\'The Client has balance and his card cannot be deleted!\', \'Pegasus\')\r\n##RETURN\r\n##ENDIF\r\n','2005-01-20','14:47:57','dias','0100-01-01','','',''),(145,'MSGWAIT()','Screen with wait message','msgwait()','U','MSG','msginfo(), sayinfo(), totrefr()','W3','Use to: Interrupt the application running for a time _seconds. If we want to update one field from a screen, while we run a complex task, we have to create a pause to update. Here we may use msgwait()\r\nParameters :\r\n_str : the message will be displayed\r\n_title : the screen title\r\n_seconds : the time (in seconds) will wait.\r\nReturns nil\r\nExamples:\r\nmsgwait(\'Please wait 5 seconds\', \'Pegasus\', 5)\r\n#### updates the field pp1 while runs a complex task\r\n### 4\r\np_val(@npp1, \"str(nr01,10)\")\r\nrefrit(opp1)\r\nmsgwait(\'\', \'\', 0.00000001)\r\ndopeg(\'pegp01\')\r\n##GO 4','2010-10-29','18:17:05','tesae','0100-01-01','','',''),(146,'MSGYESNO()','Disaplays a screen with the question \"Yes - No\"','msgyesno(_str, _title)','L','MSG','sayyesno(), msginfo()','W3','Use to: Display a screen with the question \"Yes - No. it is usefully for user participation during application\'s run.\r\nParameters :\r\n_str : the message will be displayed\r\n_title : the screen title\r\nReturns .t. if user selects YES, else .f.\r\nExample :\r\n##IF msgYesNo(\'The Client has negative balance. Continue with invoice issue? \', \'Pegasus\')=.f.\r\n##RETURN\r\n##ENDIF','2005-01-20','14:48:18','dias','0100-01-01','','',''),(147,'SAYALERT()','Displays alert screen','sayalert(_strcode, [_titlecode], [_noshow], [_dic])','C','MSG','msgalert(), sayinfo(), saystop()','W3','Use to: Display an alert screen with a message from the active dictionaries class.\r\n\r\nNotice: If public Pegasus variable _pegoutfle is not empty then the message is been written to file _pegoutfle and Pegasus doesn\'t dislpay not message. \r\n\r\nParameters:\r\n_strcode (n - c) : the message code or the message\r\n_titlecode (n - c) : Optional. the message code or the message, will be displayed as title. \r\n_noshow (l): Optional Def=.f.. If .t. then no show window\r\n_dic (c) : Optional Def=nil. The Dictionary class used to find message. If empty the opened dictionary used\r\nReturns an empty string\r\nExamples:\r\nsayalert(19)\r\n','2016-02-24','17:34:15','tesae','0100-01-01','','',''),(148,'SAYINFO()','Displays an info message','sayinfo(_strcode,[_titlecode], [_noshow], [_dic])','C','MSG','msginfo(), saystop(), sayalert(), sayyesno()','W3','Use to: Display an info screen with a message from the active dictionaries class.\r\n\r\nNotice: If public Pegasus variable _pegoutfle is not empty then the message is been written to file _pegoutfle and Pegasus doesn\'t dislpay not message. \r\n\r\nParameters:\r\n_strcode (n - c) : the message code or the message\r\n_titlecode (n - c) : Optional. the message code or the message, will be displayed as title. \r\n_noshow (l): Optional Def=.f.. If .t. then no show window\r\n_dic (c) : Optional Def=nil. The Dictionary class used to find message. If empty the opened dictionary used\r\n\r\nReturns an empty characters suite.\r\nExamples:\r\nsayinfo(19)','2016-02-24','17:34:31','tesae','0100-01-01','','',''),(149,'SAYSOUND()','Activates the sound from a wav file','saysound(_wav, _type)','C','MSG','sayalert(), sayinfo()','W3','Use to: Activate one sound file (wav type)\r\nParameters :\r\n_wav (c) : the file name contains the sound. You have to insert the complete name\r\n_type (n) : define the activate way. May take different values:\r\n0 : activates the sound and wait to finish.\r\n1 : activates the sound and returns without waiting to finish. This way, the program continues running same time with the sound.\r\n2 : If does not find the sound, do not play the alert sound (the beep)\r\n16 : If sound it is already activated, returns without reactivating it.\r\nReturns an empty string\r\nExample:\r\nsaysound(\'..\\sounds\\sound1.wav\', 1)','2005-01-20','14:49:11','dias','0100-01-01','','',''),(150,'SAYSTOP()','Display a stop screen','saystop(_strcode, [_titlecode], [_noshow], [_dic])','C','MSG','msgstop(), sayalert(), sayinfo()','W3','Purpose: Displays a stop screen type with a message from the active dictionaries class.\r\n\r\nNotice: If public Pegasus variable _pegoutfle is not empty then the message is been written to file _pegoutfle and Pegasus doesn\'t dislpay not message. \r\n\r\nParameters :\r\n_strcode (n - c) : the message code or the message\r\n_titlecode (n - c) : Optional. the message code or the message, will be displayed as title. \r\n_noshow (l): Optional Def=.f.. If .t. then no show window\r\n_dic (c) : Optional Def=nil. The Dictionary class used to find message. If empty the opened dictionary used\r\n\r\nReturns an empty string\r\nExamples:\r\n### if user does not insert data, do not submit.\r\n##IF _poso=0\r\nsaystop(10)\r\n##RETURN\r\n##ENDIF','2016-02-24','17:34:48','tesae','0100-01-01','','',''),(151,'SAYYESNO(), SAYNOYES()','Display a question screen with \"Yes - No\"','sayyesno(_strcode, [_titlecode], [_dic])','C','MSG','msgyesno(), sayinfo(), sayalert(), saystop()','W3','Use to: Displays a screen with the message code_num and the question YES - NO, so user participate to application run\r\nParameters :\r\n_strcode (n, c) : the message code or message from the current dictionaries class\r\n_titlecode (n, c) : the message code or message  will be displayed as title. Can be missing\r\n_dic (c) : Optional Def=nil. The Dictionary class used to find message. If empty the opened dictionary used\r\n\r\nReturns .t. if user selects YES, else .f.\r\nExample :\r\n##IF sayYesNo(10)=.f.\r\n##RETURN\r\n##ENDIF','2012-01-30','19:32:45','tesae','0100-01-01','','',''),(152,'CLOSEDDE()','Closes one dde object','closedde(_dde)','C','PEG','newdde(), execdde()','W3','Use to: Close one dde communication started with newdde()\r\nParameters\r\n_dde : the dde content\r\nReturns an empty string\r\nExample\r\nCommunication with Excel\r\np_val(@_ddeob, \"newdde(\'excel\', \'stats.xls\')\")\r\nexecdde(_ddeob, \"testline\")\r\nclosedde(_ddeob)\r\n','2005-01-20','14:49:54','dias','0100-01-01','','',''),(153,'CLOSEIT()','Close one management screen','closeit(_win, _evchk)','C','PEG','refrit(), getdata(), cpegbrowse(), enableevnt()','W3','Closes the _win window. \r\nReturns (c) the emtpy string\r\n\r\nArguments\r\n========\r\n    _win (o) : the screen will be closed.\r\n    _evckh (l): Optional. Default = .f..  If .t. then checks the Eventenbl() of window\r\n\r\n','2015-12-15','10:20:48','tesae','0100-01-01','','',''),(154,'CLOSEPEGAS()','Close the application','closepegasus()','C','PEG','closeit(), quitpegas()','W3','Use to: Ends the application. Used mainly into the first menu, so to exist the selection \"Exit\"\r\nInside the application we may define from the variable _exitpeg one method will run when user tries to close the application (with closepegasus() or from the X of the screen).To this method we may use the variable _doexit and if has the value .t. , then close the application, else not\r\n\r\n','2014-06-30','15:09:00','tesae','0100-01-01','','',''),(155,'DOPEG()','Run a pegasus method','dopeg(_pegfile, _hlp, _beglab, _endlab, _exact)','C','PEG','cpegbrowse(), getdata(), exdopeg()','B','Use to: Run a Pegasus Method. In a Pegasus Method all the Pegasus functions and statements may be called\r\nIf ker_tomem=.t. then loads method to memory for reuse\r\n\r\n\r\nParameters:\r\n     _pegfile (c) or (b) : the Pegasus method name. If _pegafile extension = PEG then it executes the dopegtxt(). If you give a code block, then executes the code block (eval(_pegfile) ). If method name starts with \'=\' then executes command follows the =. \r\n     _hlp (n) : the serial number of the help screen will be displayed if user calls it with right click or with gethelp(). It is an optional field\r\n    _beglab (c): the label of the line from where will start running the method\r\n    _endlab (c): the label of the live up to where will run the method\r\nThe label fields are optional. When exist, possible define one part of the method will run.\r\n\r\n    _exact (l): Optional. Default=.f. Pegasus can execute methods that are to path peg_alternate (side to current directory - _001 - of application) if exists. For example if call \r\ndopeg(\'c:\\pegasus\\elite\\_001\\etfp01\') end exists the file c:\\pegasus\\elite\\peg_alternate\\etfp01.dbf  \r\nthen executes dopeg(\'c:\\pegasus\\elite\\peg_alternate\\etfp01\'). If _exact=.t. then executes dopeg(\'c:\\pegasus\\elite\\_001\\etfp01\')\r\n\r\nAll methods ends with the command ##RETURN or with _endlab if exist\r\n\r\nReturns a value defined from ##RETURN \r\n\r\nIn one Pegasus Method you can use  Pegasus functions and Pegasus Statement.\r\nSee Pegasus Statements Table, for all statements you can use to a Pegasus Method\r\n','2019-08-28','15:47:01','tesae','0100-01-01','','',''),(156,'DOPEGOBJ()','Runs a pegasus method to a new and independent screen','dopegobj(_pegmeth, [_str], [_kind], [_wait])','C','PEG','dopeg(), opennewprj(), opennewobj()','W3','Use to: Same as dopeg(). The difference is that activates a new object to manage the method. \r\nUsed mainly for the first method of a project\r\n\r\nNotice that dopegobj() creates a completely new environment screen, different from the screen called it. Automatically, the environment classes (dictionaries, help, menu, boxes) are the ones responsible with application start, and not the ones have the screen from where was called. For this reason it is recommended to call first the method to change the environment classes (see environment Pegasus classes).\r\nSame, are not active the variables of the screen called it. You should use the appropriate variables into its second parameter\r\n\r\nParameters :\r\n_pegmeth (c) : the method will run\r\n_str (c) : (optional) it is one string that has up to 10 parameters, separated with spaces, that goes to method. The method sees these parameters with the names _par1, _par2, ..... _par10\r\n_kind (c) : (optional). This parameter it is not longer used. Let it empty string.\r\n_wait (l) : (optional) if it is .t., the application waits to close the new screen, else runs independent. If is missing, consider has the value.t.\r\n\r\n\r\ndopegobj() passes to method also the parameter _pegpars. So you can use the _pegpars variable to new method. \r\n\r\nExample\r\ndbopegobj(\'thkp0\')','2009-12-29','19:26:14','dias','0100-01-01','','',''),(157,'EMAIL()','Sends an e-mail','email(_subject, text, to,[_afiles])','C','PEG','sendmail()','W3','Usage : Sends an e-mail using the your default e-mail client. You need the pegmail.exe (it must be to the same folder with peg4obj3.exe). Also must exists the mapi32.dll to windows\\system32 folder (normally it exists)\r\n\r\n\r\nNOTE: To V3.10 and upper use sendmail()\r\n\r\nArguments\r\n_subject (c) : e-mail subject\r\n_text (c) : e-mail message \r\n_to (c) : e-mail address (where you will send the e-mail)\r\n_afiles (a) : array with attached files. This arguments isn\'t nesecery. \r\n\r\nReturns the empty string (\'\')\r\n\r\nExample\r\nemail(\'test\', \'test message\', \'test@pegasus.net.gr\')\r\nemail(\'test\', \'test message\', \'test@pegasus.net.gr\', {\'c:\\autoexec.bat\', \'c:\\config.sys\'})\r\n','2008-06-11','17:46:06','dias','0100-01-01','','',''),(158,'EXECDDE()','Runs a command to a DDE content','execdde(_dde, _command)','C','PEG','newdde(), closedde()','W3','Use to: Run one command to a dde content, that should be called with newdde()\r\n\r\nParameters\r\n_dde : the dde content\r\n_command : the command will run\r\nReturns an empty string\r\n\r\nExample\r\nCommunication with Excel\r\np_val(@_ddeob, \"newdde(\'excel\', \'stats.xls\')\")\r\nexecdde(_ddeob, \"testline\")\r\nclosedde(_ddeob)','2005-01-20','14:51:07','dias','0100-01-01','','',''),(159,'EXECUTE()','Runs an application','execute(_command, _wait, _wintype, _params)','C','PEG','runwin(), winexec(), rDosParam()','W3','Use to: Run one another application in a new screen. Used for Windows or MS-DOS applications\r\nIf you need run an internalMS-DOS command, use RunShell()\r\nReturns (c) an empty string\r\n\r\nParameters\r\n========\r\n          _command (c) : the application will run. Search to find the current path or into the system paths (windows, system)\r\n\r\n          _wait (l) : Optional. Default=.f., if it is.t. , runs the application and waits to complete it. If it is .f. will run the new application while Pegasus application runs too.\r\n\r\n          _wintype (n): Optional. Default = 9. \r\n          Possible values are\r\n          WINDOWS Application\r\n          SW_HIDE =0  \r\n          SW_NORMAL =1  \r\n          SW_SHOWMINIMIZED =2  \r\n          SW_SHOWMAXIMIZED =3  \r\n          SW_SHOWNOACTIVATE =4  \r\n          SW_SHOW =5  \r\n          SW_MINIMIZE =6\r\n          SW_SHOWMINNOACTIVE =7  \r\n          SW_SHOWNA =8  \r\n          SW_RESTORE =9  \r\n          COMMAND LINE Application\r\n          Command Line programm starts in a new shell in the bacground = -1\r\n          Command Line programm starts in a new shell in the forground = -2\r\n\r\n        _params (c): Optional. Default  =\'\'. Parameters of program. Is necessary in case of DOS program. In otherwise parameters can be incluted into command \r\n\r\nRemarks\r\n======\r\nIn case of command prompt applications use _wintype -1 or -2. Otherwise Pegasus cannot wait the end of application execution \r\n\r\nExamples\r\n=======\r\nexecute(\'ne.com\', .t.)\r\nexecute(\'command.com ne.com /c\', .t.)\r\nexecute(\'notepad.exe\', .f.)\r\nexecute(\'zip.exe\', .t., -1, \'c:\\backup\\back.zip c:\\tozip\\*.* -r -p\')\r\n\r\n','2019-06-11','16:04:25','tesae','0100-01-01','','',''),(160,'GETHELP()','Activates one help screen','gethelp(_code, @_memo, _helpclass)','C','PEG','getdata(), ?query?funp1502','W3','Use to: In all functions that create wait-submit projects, Pegasus takes as definition the help code will be call with right click. The function gethelp() may call, without definition, the active help (this way we may have buttons with the action the gethelp(), in order to be displayed the current help). With definition the help code, activates the screen of the respective help, so we may have more help signs.\r\n\r\nParameters :\r\n_code (n): the code of the help screen will be activated.\r\nIf the definition is missing, activates the current help.\r\n\r\n_memo (m) : Optional. If exists then gives to _memo thw content of help. In this case doesn\'t appear the help screen.\r\n\r\n_hlpclass (h): Optional. Default is the help class. If exists then gethel shows the help of _hlpclass\r\n','2019-09-27','13:05:38','tesae','0100-01-01','','',''),(162,'IF()/IIF()','Execute the logical IF THEN ELSE in a line','if(_cond, _ret1, _ret2)','','PEG','seek_var()','B','Use to: Append a mediate selection from two possible syntaxes\r\nParameters :\r\n_cond : is the condition will sum.\r\n_ret1 : is the syntax will be used, if the logical syntax is true.\r\n_ret2 : is the syntax will be used, if the logical syntax is false\r\nReturns same type with _ret1 or with _ret2 (according to that one will be executed).\r\nExample :\r\n###let\'s see the payments repots\r\np_val(@_lektiko, \"IF(PD_IN_FUL, \'yes\', \'NO\')\")\r\n### execute if then else to a line from one method\r\n### if the field p01 has the value 0 , sum with one the variable _s1 , else _s2 sum its content.\r\nif(p01=0, p_val(@_s1, \"_s1 + 1\"), p_val(@_s2, \'_s2 + p01\'))\r\n','2005-01-20','14:25:43','dias','0100-01-01','','',''),(163,'KILLTIMER()','Close the clock created with newtimer()','killtimer(_timer)','C','PEG','newtimer()','W3','Use to: Close the clock\r\n\r\nParameters:\r\n_timer : the clock will be closed\r\n\r\nReturns an empty string','2005-01-20','14:51:33','dias','0100-01-01','','',''),(164,'MAINTITLE()','Change the title of the main screen of the application','maintitle(_title)','C','PEG','','W3','Use to: Change the title from the main screen of the application\r\n\r\nParameters :\r\n_title (c) : the new title\r\n\r\nReturns an empty string\r\n\r\nExample\r\nmaintitle(\'test program\')','2005-01-20','14:51:43','dias','0100-01-01','','',''),(165,'NEWDDE()','Creates a new DDE Object','newdde(_service, _topic, _item)','O','PEG','execdde()','W3','Use to: The DDE is used for communication between applications. For example, Pegasus may call one excel page and make there the updates. Known programs supported from dde service are excel and word\r\n\r\nParameters\r\n_service : is the program will run and has to support the dde server\r\n_topic : the topic of the service will run\r\n_item : (optional) If dde supports items, activates certain item\r\n\r\nReturns the object\r\n\r\nExample\r\nCommunication with Excel\r\np_val(@_ddeob, \"newdde(\'excel\', \'stats.xls\')\")\r\nexecdde(_ddeob, \"testline\")\r\nclosedde(_ddeob) \r\n','2005-01-20','14:52:10','dias','0100-01-01','','',''),(166,'NEWTIMER()','Activates one clock','newtimer(_meth, _time)','O','PEG','killtimer()','W3','Use to: Creates a timer object that execute one method in a certain period. \r\nThe timer is executed into dialog box (or window) is created. So you must create timer into window initialization\r\n\r\nParameters\r\n_meth : the method will be executed\r\n_time : the time that will be counted in seconds/1000\r\n\r\nReturns the object\r\n\r\nObject Methods \r\ndeactivate() : deactivate the timer\r\nactivate() : activate the timer. \r\n\r\nNOTE\r\nIf yοur method has a variable time that executed (because it updates dbases for example) it is suggested to begin it with \r\n_obj:deactivate()\r\n\r\nand finish it with \r\n_obj:activate()\r\n\r\n\r\n\r\nExample\r\np_val(@p_timer, \"newtimer(\'timp01\', 1000)\")\r\n\r\nMethod timp01\r\n----------------------\r\np_timer:deactivate()\r\n\r\nfunction1\r\nfunction2\r\n.....\r\n\r\np_timer:activate()\r\n##RETURN\r\n\r\n','2017-06-26','11:54:08','tesae','0100-01-01','','',''),(167,'NEWWINDOW()','New window like the main application window',' newwindow(_title, @_own, _peg, _init, _left, _ahelp, _menu, _bmpfile, _type, _t, _l, _b, _r)','C','PEG','dopeg(), dopegobj()','W3','Use to: Create a new window with complete functionality, like the main window of the application. Generally, it is called with dopegobj() for being independent.\r\n\r\nParameters\r\n_title (c) : the windows title\r\n_own (o) : the window content\r\n_peg (c) : the method will be executed before window creation\r\n_init (c) : the method will be executed while window creation\r\n_left (c) : the method will be called with left click\r\n_ahelp (n) : the help code\r\n_menu (c) : the code of the menu has the window\r\n_bmpfile (c) : the bmp icon for the window background\r\n_type (n) : the type (1= according to the coordinates, 2=maximized, 3=minimized)\r\n_t, _l, _b, _r (n) : the coordinates in lines and columns (Pegasus will transform its in Pixels)\r\n\r\nReturns an empty string','2005-01-20','14:52:29','dias','0100-01-01','','',''),(168,'OLO_GRAFO()','Transform one amount in diction (message)','olo_grafo(_num, _dec, _dic)','C','PEG','int()','W3','Purpose: Return the value of _num written with letters and in euro.\r\n\r\nUse to: Write the final amounts appears in receipts printouts with letters\r\n\r\nParameters :\r\n_num (n) : the amount will be written with letters.\r\n_dec (n): Optional Def=0. Decimal to use. Olo_grafo Not used decimal digits. If _dec is i.e. 2 then uses the 2 decimals *100 to transform \r\n_dic (c) : Optional Def=nil. The Dictionary class used to find message. If empty the basic\\_001\\dicstd31 (standard messages)\r\n\r\nReturns a string.\r\n\r\nExamples:\r\nolo_grafo(1000)    // one thousand \r\nolo_grafo(1000.10)  // one thousand   (the\r\nolo_grafo(1000.10, 2)  // ten  (uses 2 decimals)\r\n\r\n\r\n','2019-07-01','13:39:49','tesae','0100-01-01','','',''),(169,'PEGBEGIN()','Initialize the vriables','pegbegin()','C','PEG','','W3','Use to: Initialize the public variable; used into the Pegasus begin method.\r\n\r\nReturns an empty string\r\n\r\nAre following the public variables of the application you may modify\r\n_brwin (o) : the current object of the browsing view created with cpegbrowse()\r\n_curwin (o) : the current object Dialog Box created with getdata()\r\n_hlpmen (c) : the code of the menu called with right click. If it is empty, activates the menu settled from application (for example into dialog box Help & Print Screen, in browsing view of the Buttons defined from the keys class) (initial value is the empty string)\r\n_exitpeg (c) : the method is executed when user selects Exit from application (initial value is empty string)\r\n_doexit (l) : Used from the method you define into _exitpeg. If it is.t., returns the Exit, else it is not allowed. With this variable, you may prohibit the exit from application when are not valid some conditions you choose (initial value = .t.)\r\n_remt_on (n) : Define if will be called the TUC technology of Pegasus used to save the time was done every change made. If it is 0 close this project. This variable it is recommended NOT TO BE MODIFIED, except few cases (initial value =1)\r\n_userid (c) : One unique code per user that is also the application user code access or a code created with newtemp(). The variable it is used to create temporary files when needed. Mostly, the preferred terminology is ?_ + _userid (?:one character). Pegasus when close, deletes all the file with name ?_ + _userid.* not to remain temporary files on disk.\r\nuser_pswd (c) : The user access code to Pegasus application.','2005-01-20','14:58:38','dias','0100-01-01','','',''),(170,'P_SUM()','Sum a value to a variable','p_sum(@_var, _value)','N','PEG','p_val()','W3','Use to: Sum in a variable one syntax and return the results\r\n\r\nParameters :\r\n_var : the variable\r\n_value (n): the value to be added to _var\r\n\r\nReturns the new value of _var\r\n\r\nExample\r\np_val(@_val1, \"10\")\r\nmsginfo(p_sum(@_val1, 150))    // _val1=160','2009-12-31','11:41:26','dias','0100-01-01','','',''),(171,'P_VAL()','Assigns a value to a variable',' p_val(@_var,_exp)','C','PEG','pubvars(), relvars(), initrec(), releasvar() , assval(), assobj(), pegvar()','B','Purpose: Give to the variable _var the value of the syntax _exp.\r\n\r\nUse to: Give value to the variables.\r\n\r\nParameters :\r\n_var : the variable of which value will change.\r\n_exp (c): the evaluation syntax of the new value.\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\n#### let\'s take _s1 with value 10\r\nP_VAL(@_s1, \"_s1 + 15\")\r\n#### now has value 25\r\nP_VAL(@_s1, \"0\")\r\n#### now has value 0','2015-12-21','09:47:36','tesae','0100-01-01','','',''),(172,'REFRIT()','Displays the new data of the objecton the screen','refrit(_object)','C','PEG','getdata(), cpegbrowse()','W3','Use to: During application run, create some objects of which content it is modified from method. To be displayed the new content on screen, has to be used refrit()\r\n\r\nObjects can be created are:\r\n_brwin : the current browsing view (from cpegbrowse)\r\n_curwin : the current screen management (dialog - box from getdata)\r\nThe objects corresponding to variables on screen (getdata)\r\n\r\nParameters :\r\n_object : the object will be displayed again.\r\n\r\nExample\r\n##IF getdata(\'etf\', \'etf_d\', .f., 10, .t.)=.t.\r\nrepldata(\'etf\', \'etf_d\', .f.)\r\n##ENDIF\r\nrefrit(_brwin)','2005-01-20','15:02:13','dias','0100-01-01','','',''),(173,'RUNWIN()','Runs another window application','runwin(_command, _wintype)','C','PEG','winexec()','W3','Use to: Run another windows application in another window. The Pegasus Application from was called the new application wait to be closed in order to continue the project.\r\n\r\nParameters :\r\n_command (c) : the new application will run. Searches to find it into the current path or into the system paths (windows, system)\r\n_wintype (n) : Define the way will be activated the new window. The values may take are:\r\n0 : hide(minimize) the current window and activates the new one\r\n1 or 9 : activates the new application into a window with coordinates defined from the new application\r\n2, 6 : Displays the new window minimized\r\n3 : Displays the new window maximized\r\n4, 7, 8 : Activates the new window, but as active let the current one. The new window appears as icon.\r\n5 : Activates the new window to the normal size\r\n\r\nReturns one number shows the snap-shot number corresponding to the new window\r\n\r\nRemarks: If the application you call is an MSDOS one, you may call it by name or using the command.com with the parameter /c (close automatically the execution screen). Same you may run internal commands of MSDOS with command.com\r\n\r\nExamples:\r\nRUNWIN(\'ne.com\')\r\nRUNWIN(\'command.com ne.com /c\')\r\nRUNWIN(\'notepad.exe\')','2005-01-20','15:03:05','dias','0100-01-01','','',''),(174,'SECONDS()','Calculate the time in seconds','seconds()','N','PEG','time()','B','Use to: Display the time as seconds number after midnight\r\n\r\nReturns a string.\r\n\r\nRemarks: SECONDS() it is a simple way to calculate the time was passing. SECONDS() returns like \"secs.hundths\" from 0 to 86399.\r\n\r\nExample:\r\n? SECONDS()','2005-01-20','15:03:47','dias','0100-01-01','','',''),(175,'SET_DEFP()','Defines the current path, to this the application finds the files is looking for','set_defp(_path)','C','PEG','set_path(), file(), fuse()','B','Use to: Define the default path from disk where application manages its data class. Together with SET_PATH defines the paths will search to find its classes\r\n\r\nParameters:\r\n_path (c) : the disk path\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nSET_DEFP(\"c:\\tesae\\_000\")\r\n','2005-01-20','15:04:33','dias','0100-01-01','','',''),(176,'SET_PATH()','Set the path the application will search for files that cannot find in the current path','set_path(_path)','C','PEG','set_defp()','B','Use to: Define the disk path will search for data classes of the application except the default one. The default path it is the one defined with the function SET_DEFP()\r\n\r\nParameters:\r\n_path (c) : the disk path.\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\n### generally, the Printout Forms Classes of one application are placed to a path with name of shape formtes. Before execution, we have to define the path to find it .\r\nSET_PATH(\"formtes\")\r\nprinomad(\'etfo01\', 10, 11, 1)\r\nset_path(\'\')\r\n','2005-01-20','15:05:50','dias','0100-01-01','','',''),(177,'TIME()','The system time','time()','C','PEG','date(), seconds()','B','Use to: Check the system clock and displays the time.\r\n\r\nParameters: None.\r\n\r\nReturns a string.\r\n\r\nExample :\r\n? TIME() && Returns for example 13:15:21.\r\n? SUBSTR(TIME(),1,5) && Returns for example 13:15.\r\n','2005-01-20','15:06:15','dias','0100-01-01','','',''),(178,'TYPE()','One Variable / field type','type(_str)','C','PEG','tostr()','B','Use to: Define the data type of the string syntaxes content we have settled.\r\nParameters:\r\n_str : it is the string will sum. Needs to have a string syntax shape.\r\nReturns a string.\r\n\r\nRemarks: The values returned from the function TYPE() are described below:\r\n\r\nTYPE RETURNED VALUES\r\nC String\r\nD Date\r\nL Logic\r\nN Numeric\r\nM Memo fields\r\nA Table\r\nU Not settled\r\nUE Syntax error\r\nUI Undefined error\r\n\r\nExample :\r\n? TYPE(\"VAL(\'1\')\") && Returns I.','2005-01-20','15:06:52','dias','0100-01-01','','',''),(179,'UNZFILE()','unzips a zip file','unzfile(_zipfile, _folder)','C','PEG','','W3','Use to: Uncompress one file that is in zip format. Used together with getzipfiles()\r\n\r\nParameters\r\n_zipfile (c) : the zip file name\r\n_folder (c) : the folder where the files unzipped\r\n\r\n','2008-10-07','16:01:58','dias','0100-01-01','','',''),(180,'_WAIT()','Waits without doing anything','_wait(_secs)','C','PEG','time(), findtime(), winexec()','W3','Use to: Idle the system for some time\r\n\r\nParameters:\r\n_secs : the seconds will wait\r\n\r\nReturns an empty string\r\n','2006-06-07','11:10:52','dias','0100-01-01','','',''),(181,'WINEXEC()','Executes another application','winexec(_command, _wintype)','N','PEG','runwin()','W3','Use to: execute one another application\r\n\r\nParameters :\r\n_command (c) : the new application will run. Searches to find it into the current path or into the system paths (windows, system)\r\n_wintype (n) : Define the way will be activated the new window. The values may take are:\r\n0 : hide(minimize) the current window and activates the new one\r\n1 or 9 : activates the new application into a window with coordinates defined from the new application\r\n2, 6 : Displays the new window minimized\r\n3 : Displays the new window maximized\r\n4, 7, 8 : Activates the new window, but as active let the current one. The new window appears as icon.\r\n5 : Activates the new window to the normal size\r\n\r\nReturns one number shows the snap-shot number corresponding to the new window\r\n\r\nRemarks: If the application you call is an MSDOS one, you may call it by name or using the command.com with the parameter /c (close automatically the execution screen). Same you may run internal commands of MSDOS with command.com\r\n\r\nExamples:\r\nWINEXEC(\'ne.com\')\r\nWINEXEC(\'command.com ne.com /c\')\r\nWINEXEC(\'notepad.exe\')\r\n','2005-01-20','15:19:47','dias','0100-01-01','','',''),(182,'CAN_PRINT()','Calls the printer to execute a printing','can_prin(_prfile)','L','PRINT','printfrm(), prform()','W3','Use to: When we want to have full control of printing, if successfully or not, when we call the printing functions (printfrm, prform) but first should be closed can_print.\r\n\r\nParameters\r\n_prfile: the printout design will use\r\n\r\nExample\r\nWe want to print the p_temp with a design has the variable p_b05for\r\naselect(p_temp)\r\ndbgotop()\r\nset_path(printfld(\'p13\', \'p01p13\', \'p02\', \'FORMS\'))\r\n## 7\r\n##IF can_print(p_b05for)\r\nprform(p_b05for, p_temp, \'b05_d\', 0,0,0,0,0,1,1)\r\n##ELSE\r\n##GO 7\r\n##ENDIF\r\nset_path(\'\')\r\naselect(p_temp)\r\ndbgotop()\r\n##RETURN\r\nIn old Pegasus versions the can_print didn\'t take the definition and the name of printout form we have been settled to the variable _pr_file. So, we should write\r\np_val(@_pr_file, \"p_b05for\")\r\n##IF can_print()\r\n','2005-01-20','15:20:51','dias','0100-01-01','','',''),(183,'PRFORM()','Prints a Printout Form Class','prform(_form, file, desc, _logic, _conhlp, _abox, _sbox, _hlp, _flag, _scr)','C','PRINT','printfrm()','W3','Use to: Activate the printout of one Printout Form Class. Displays the printout sequence selection box and continue creating the searching criteria. In the end is printing. May be used to complete manage the printout (sequence selection, searching criteria creation, printing), when _sbox has a different value than 0. The opposite case (_sbox=0) the data class is already open and the records index it is placed into the record you want. Also, defines the conditions (the variables scond and cond from the virtual screen of the Printout Form Class). If _sbox=0 , you should already check the printer will be used with CAN_PRINT().\r\n\r\nParameters :\r\n_form (c) : Printout Form Class.\r\n_file (c) : the data class for that will be made the printing\r\n_desc (c) : the screen class defining the data class\r\n_logic (n) : if it is 1, while conditions creation, the user may use also the logical operators (and, or, not, and not). May be called the variable _addor that it is initialized from system (its value it is defined into the file SETS.DBF).\r\n_conhlp (n) : the help code activated while conditions creation.\r\n_abox (n) : the code of the box will be used to create the conditions.\r\n_sbox (n) : the code of the box will be used for sequence selection.\r\n_hlp (n) : the code of the help for printing.\r\n_flag (l) : if it is .t. (or a number) then function creates a dialog box with meters showing the progress. \r\n_scr (b) : it is a block that executed for any printed record. Parameters passed to block are {|nRecordChecked, nRecordPrinted|}. \r\n              If it is a number (0 or 1) no block executed.\r\n      \r\n\r\n*******************\r\n_abox and _sbox can be arrays like {_title, _top, _left, _bot, _right, _style, _relative}\r\n                          _title (c) = _title of selection list\r\n                          _top, _left, _bot, _right (n) = List Box coordinates to pixel\r\n                          _style (n) = 1 for full dialog box, 0 for only selection list\r\n                          _relative (l) = if .t. the coordinates are relative to parent window. \r\n*******************\r\n\r\nReturns an empty string characters suite.\r\n\r\nNOTE!\r\n********\r\nYou can initializearray If _pr_idarr (a) and set value\r\n{_memo, _row, _col, _font, _linesize, _newpage, _trans_line}\r\nIt prints the memo to firt page. If _newpage=.t. then it prints the _memo to a page and starts the printout to net page. \r\nIF _trans_line=.t. then prints odbctrans(_line). It is usefull for memos with esc commands.\r\n\r\n\r\n\r\nExamples:\r\n1. PRFORM(\"etf01\",\"etf\",\"etf_d\",1,123,190,130,132, 0)\r\nPrints the Printout Form Class etf01 of the data class etf.\r\n2.Prints in sequence to different files.\r\n### check if the printer is ready, and if it not\r\n### stops.\r\n##IF CAN_PRINT()=.F.\r\n##RETURN\r\n##ENDIF\r\n##Printing the first file. Without control screen\r\nNewarea()\r\nfuse(\'etf,.F.)\r\nopenntx(\'etf_d\',\'etf\')\r\nprform(\'etf01\',\'etf\',\'etf_d\',0,0,0,0,0,1,0)\r\nclosefile(\'etf\')\r\n##Printing the second file. Display the control screen\r\nNewarea()\r\nfuse(\'atf,.F.)\r\nopenntx(\'atf_d\',\'atf\')\r\nprform(\'atf01\',\'atf\',\'atf_d\',0,0,0,0,0,1,1)\r\nclosefile(\'atf\')\r\n','2009-04-08','14:55:50','dias','0100-01-01','','',''),(184,'PRINOMAD()','Slects the Printout from a group and activates the corresponding Printout Form Class','prinomad(_promad,_aboxn,_anhlp,_flag)','C','PRINT','prform(), prinfrm()','W3','Use to: Activate the printout selection from a group and manage its execution.\r\n\r\nParameters :\r\n_promad (c) : the printouts group\r\n_aboxn (n) : the code of the box with printouts selection.\r\n_anhlp (n) : the code of the help will be displayed.\r\n_flag (n) : if it is, then starts printing only if the user belong to the users group for which was created the selected Printout Form Class\r\n\r\nReturns an empty string characters suite\r\n\r\nExamples:\r\nPRINOMAD(\"etfom01\", 10, 90, 1)','2005-01-20','15:23:34','dias','0100-01-01','','',''),(185,'PRINTBITMAP()','Prints a BMP file in a Printout','printbitmap(_at, _al, _bfle, _mx, _my, _adj)','C','PRINT','printtext(), printline(), printbox()','W3','Use to: Print one bmp file from a printout form\r\n\r\nArguments\r\n========\r\n    _at, _al (n) : row, column of image top - left corner. Pegasus transforms automatically the coordinates in Pixels\r\n    _bfle (c) : the file name\r\n    _mx (n) : the icon width in pixels (optional)\r\n    _my (n) : the icon length in pixels (optional)\r\n    _adj (l) : if it is .t. resize the icon to _mx, __my. If _mx, _my are missing, then prints the icon as it is\r\n\r\nExample\r\nprintbitmap(10, 10, \'..\\bmp\\tesae.bmp\', 3600, 1200, .t.)','2018-04-10','16:17:32','tesae','0100-01-01','','',''),(186,'PRINTBOX()','Prints a Box','printbox(_at, _al, _ab, _ar)','C','PRINT','printline(), printtext()','W3','Use to: Print one box into printout forms\r\n\r\nParameters:\r\n_at, _al (n) : the left upper limit of the box\r\n_ab, _at (n) : the right down limit of the box\r\nThe coordinates are in lines and column, and Pegasus transform to pixels\r\n\r\nReturns an empty string\r\n\r\nExample\r\nprintbox(10, 10, 25, 70)\r\n\r\n','2005-01-20','15:24:40','dias','0100-01-01','','',''),(187,'PRINTFRM()','Prints a Printout Form Class for a record',' printfrm(_frm, _chkp,_chgdev,_ret)','','PRINT','prform()','W3','Use to: Print one Pegasus Printout Form Class without header, footer and sub footer. Used for forms printing (for example Submission Request form the client\'s data).\r\n\r\nParameters:\r\n_frm (c) : The printout form class that defines the printing in lines.\r\n_chkp (n) : if it is one, displays the control box of the printer. If it is 0 start printing. In this case, should run before can_print()\r\n_ chgdev (n) : If it is 0 sends the printing to the current peripheral, else to the printer.\r\n_Ret : the value will be returned\r\n\r\nReturns the value _ret\r\n\r\nRemarks: See prform tip1 for the variables may have the browsing view of the printout form.\r\n\r\nExample :\r\nPrinting the form settled from the printout form class b0101.\r\nprintfrm(b0101, 1, 1, \'\')\r\n','2005-01-20','15:25:36','dias','0100-01-01','','',''),(188,'PRINTLINE()','Prints a line','printline(_at, _al, _ab, _ar, _style, _width, _color)','C','PRINT','printbox(), printtext()','W3','Use to: Print one line in the printout forms\r\n\r\nParameters :\r\n_at, _al (n) : the left upper limit of the line\r\n_ab, _at (n) : the right down limit of the line\r\n_style (n): Optional. Default = 0. Values for style are \r\n               SOLID=0, DASH=1, DOT=2, DASHDOT=3, DASHDOTDOT=4, NULL=5, INSIDEFRAME=6, \r\n_width (n): Optional. Default=1. It is in pixels\r\n_color (n): Optional. Default=0 (for black). It is the RGB code of color\r\nThe coordinates are in lines and columns, and Pegasus transforms its in pixels.\r\n\r\nReturns an empty string\r\n\r\nExample\r\nprintline(10, 10, 25, 70)\r\nprintline(10, 1, 10, 130) && horizontal line\r\nprintline(10, 10, 60, 10) && vertical line\r\n\r\n','2014-11-25','12:36:29','tesae','0100-01-01','','',''),(189,'PRINTTEXT()','Prints a text to a specific place','printtext(_at, _al, _astr, _afon)','C','PRINT','printline(), printbox()','W3','Use to: For some printouts are taken parametrically the line and the column of one content. In these cases, we use printtext() the printout designs\r\n\r\nArguments\r\n*************\r\n_at, _al : the coordinates (column, line) will be printed the text. Pegasus transforms automatically the coordinates into Pixels\r\n_astr : the text will be printed\r\n_afon : the code of the font will be used\r\n\r\nReturns an empty string\r\n\r\nExample\r\nprinttext(10, 10, \'This is a test\', 1)\r\n','2011-06-27','10:14:39','tesae','0100-01-01','','',''),(190,'ABSCHR()','Transforms a string in capital letters with the corresponding keybord keys','abschr(_str, _nochar)','C','STR','clearchr(), gr2Latin()','B','Use to: Transform a string into capital letters with the corresponding keyboard keys, means the characters I,L correspond all to L; m, M correspond to M, and so on. It is used when we want searches with unique characters, no matter if Latin or not, small or capitals.\r\n\r\nParameters :\r\n_str : the string will transform\r\n_nochars : it is optional. If exist, declare the characters do not take part of the new string\r\n\r\nReturns the new string\r\n\r\nExamples\r\nmsginfo( abschr(\'aaaaa?ce\') )\r\nreturns ABGDEZHU\r\nmsginfo( abschr(\'a-a-a-a-a-?-c-e\', \'-=+/\') )\r\nreturns ABGDEZHU\r\n\r\nSQL\r\n===\r\nPegasus creates SQL Command peg_abschr() too, with same arguments but not exists optional argument\r\n','2016-05-16','11:06:54','tesae','0100-01-01','','',''),(191,'ALLTRIM()','Removes all the spaces from the beggining and the end of a string','alltrim(_str)','C','STR','trim(), rtrim(), strtran(), at(), rat() , getstr(), pegtrim()','B','Use to: remove the spaces from a string.\r\n\r\nParameters :\r\n_str (c): the string. If it isn\'t string, transforms it to string\r\n\r\nReturns a string has not leading and trailling spaces.\r\n\r\nExample :\r\n? alltrim(\" test string \")\r\n## Returns \"test string\")','2013-07-02','18:41:22','tesae','0100-01-01','','',''),(192,'ASC()','The ASCII value of a character','asc(_exp)','N','STR','chr(), str()','B','Use to: Define the ASCII value of the first character from a string.\r\n\r\nParameters :\r\n_exp (c) : the character of which ASCII value will return.\r\n\r\nReturns the numeric value corresponding to ASCII code of the character\r\n\r\nExamples:\r\n?ASC(\"q\") &&Returns113.\r\n?ASC(\"4\") &&Returns 52\r\n','2005-11-25','17:48:18','dias','0100-01-01','','',''),(193,'AT()','Finds the place of a string inside another string','at(_str1, _str2)','N','STR','substr(), rat()','B','Use to: Defines the place inside a string there is a certain characters suite\r\n\r\nParameters :\r\n_str1 (c) : the characters suite is looking for.\r\n_str2 (c) : the string inside is searching\r\n\r\nReturns the place where is founded _str1 inside _str2. if does not find it, returns zero (0).\r\n\r\nRemark: Returns the first place founded the characters suite inside the string\r\n\r\nExample:\r\nproverb:=\"Ohe family that prays together stays together\" ,\r\nAT(\"ays\", proverb)       //Returns 19.\r\nAT(\"ch\", \"the character type is chr\')  //Returns 5, the first place from left founded the character\r\n','2014-03-26','14:00:52','tesae','0100-01-01','','',''),(194,'CHR()','Transforms a number to the corresponding ASCII','chr(_num)','C','STR','asc(), str(), substr()','B','Use to: Transform a decimal value in the correspondent ASCII. May be used to send follow control and escape to peripherals.\r\n\r\nParameters :\r\n_num : the decimals from a character is <expN>.\r\n\r\nReturns an ASCII character\r\n\r\nExample:\r\nThe following command append to the variable p_chr the characters Enter and New Line, means that changes the line.\r\np_val(@p_chr, \"p_chr + chr(13) + chr(10)\")','2005-01-20','15:35:57','dias','0100-01-01','','',''),(195,'CLEARCHR()','Removes characters from a string','clearchr(_str, _nochars)','C','STR','strtran()','B','Use to: Remove a characters suite from a string\r\n\r\nParameters :\r\n_str : the string\r\n_nochars : the characters will be removed\r\n\r\nReturns the new string\r\n\r\nExamples\r\np_val(@_str, \"IOP-920/09&00\")\r\np_val(@_str, \"clearchr(_str, \'/&*-=+\')\r\nThe new value of _str is\r\nIOP9200900\r\n','2005-01-20','15:36:40','dias','0100-01-01','','',''),(196,'IS_ANSI()','Checks if a string is ANSI','is_ansi(_str)','L','STR','is_oem(), toansi(), tooem(), filetooem(), filetoansi()','W3','Use to: The strings opened with windows applications are ANSI and the one opened with MS-DOS applications are IAI. Many times, when we want to transfer data from one environment to another, we have to transform these data (from ANSI to IAI and reverse).\r\nis_ansi checks if a string is ANSI.\r\n\r\nParameters :\r\n_str : the string will check\r\n\r\nReturns .t. if it is ANSI, else .f.\r\n','2005-01-20','15:37:12','dias','0100-01-01','','',''),(197,'IS_OEM()','Checks if a string is OEM','is_oem(_str)','C','STR','is_ansi(), tooem(), toansi()','W3','Use to: The strings opened with windows applications are ANSI and the one opened with MS-DOS applications are IAI. Many times, when we want to transfer data from one environment to another, we have to transform these data (from ANSI to IAI and reverse).\r\nis_oem checks if a string is OEM.\r\n\r\nParameters :\r\n_str : the string will check\r\n\r\nReturns .t. if it is OEM, else .f.\r\n','2005-01-20','15:37:39','dias','0100-01-01','','',''),(198,'LEN()','The length of a string / Array','len(_char)','N','STR','substr(), str(), strtran()','B','Use to: define the characters number from a string or the total places of one array\r\n\r\nParameters :\r\n_char (c) : is the string of which will return the length\r\n\r\nReturns a string.\r\n\r\nExample :\r\n? LEN(\"Hello!\") && Returns 6.\r\np_val(@_ar, \'array(10)\')\r\nlen(_ar) && Returns 10','2005-01-20','15:39:21','dias','0100-01-01','','',''),(199,'LTRIM()','Removes the left spaces from a string','ltrim(_char)','C','STR','alltrim(), rtrim(), trim()','B','Use to: Display a string removing any space can proceed.\r\n\r\nParameters :\r\n_char : the string will manage.\r\n\r\nReturns a string.\r\n\r\nRemark Mostly, LTRIM() it is used to remove spaces proceed when the application displays STR() of one numeric syntax.\r\n\r\nExamples:\r\n? \"Step \" + str(1,10) && Returns Step- (the dashes (-) are used to make visible the spaces)\r\n? \"Step\" + LTRIM(STR(1, 10)) && Returns Step 1.\r\n','2005-01-20','15:41:07','dias','0100-01-01','','',''),(200,'RAT()','Checks the existence of a string inside another starting from the right','rat(_str1, _str2)','N','STR','at(), substr(), strtran(), trim()','B','Use to: Find one characters suite inside a string, last time (else first from right side) was displayed, and return from where started.\r\n\r\nParameters :\r\n_str1 : is the characters suite is looking for.\r\n_str2 : is the string where searches.\r\n\r\nReturns first from right side place where there is _str1 inside _str2.\r\n\r\nRemark: If the searching string cannot be founded, the function RAT() returns 0. RAT() is the same with AO(), only that RAT() is searching back, starting from right side\r\n\r\nExample :\r\np_val@string,\"\'I will live my life with my loving wife\'\")\r\nTO string\r\n?RAT(\"ife\",string) &&Returns 37.\r\n','2005-01-20','15:42:01','dias','0100-01-01','','',''),(201,'REPLICATE() / REPL()','REPLICATE syntax','replicate(_str, _num)','C','STR','substr(), at(), rat()','B','Use to: Create one string replicating another one.\r\n\r\nParameters :\r\n_str : it is to where will be replicated.\r\n_num : is the number shows how many times will be replicated_str.\r\n\r\nReturns a string.\r\n\r\nRemark: If we define a numeric syntax having the value 0 will return an empty string. The mediate length of one replication is 64E inside a memo field and 32E inside a string variable.\r\n\r\nExample :\r\n?REPLICATE(\"=\",10) &&Returns==========','2005-01-20','16:15:03','dias','0100-01-01','','',''),(202,'SPACE()','Creates strings with space variables','space(_num)','C','STR','repl(), substr(), str()','B','Use to: Fill up one string with a settled number of space characters. Usefully while we initialize the string variables.\r\n\r\nParameters :\r\n_num : the space characters will be placed inside the string, maximum is 46E.\r\n\r\nReturns a string or space bar\r\n\r\nExample:\r\np_val(@_var1, \"space(10)\")\r\n','2005-01-20','16:15:43','dias','0100-01-01','','',''),(203,'STR(), GRSTR()','Transform a number to a string','str(_num1, _num2, _num3)','C','STR','strzero(), strsp()','B','Use to: Transform one numeric syntax to a string\r\n\r\ngrstr() assumes returns the string with , as decimal symbol\r\n\r\nParameters:\r\n_num1: is the numeric syntax we want to transform.\r\n_num2 : is the total characters number (counts the blanks spaces in front and in the end, the symbols, the decimals and one predefined place) witch will be placed to the string. If the num2 is smaller then the number length, returns asterix (****)\r\n_num3: is the total decimals number. This setting is optional. If missing, the string will not have decimals and the results will be displayed from the absolute value of the number.\r\n\r\nReturns a string\r\n\r\nRemarks: If you change the settings for STR () _num2 and _num3, the limit length of the string will have 10 places and 0 decimals.\r\nIf you set up less characters to this one, will be printed only some asterix (*****).\r\nIf you set up less decimals to this one then result will have the absolute value of the number.\r\n\r\nExample:\r\nLet\'s take the variable _val with the value 109.10\r\n? STR(_val) &&Returns 109.10\r\n? STR(_val,10,0) &&Returns 109\r\n? STR(_val,2) &&Returns **\r\n','2019-06-20','11:48:31','tesae','0100-01-01','','',''),(204,'STRTRAN()','Transforms a string replacing a part from it with another','strtran(_str, _str1, _str2).','C','STR','str(), substr(), at(), rat(), tranchr()','B','Use to: Replace the _str1 with the _str2 each time finds it in _str\r\n\r\nParameters :\r\n_str (c) : the string will be modified.\r\n_str1 (c) : the string will be replaced with _str3\r\n_str2 (c) : the string will replace the _str2\r\n\r\nReturns a string.\r\n\r\nExample :\r\n? strtran(\"to be or not to be\", \"be\", \"compute\")\r\n### Returns \"to compute or not compute\"\r\n','2008-06-23','20:01:05','dias','0100-01-01','','',''),(205,'STRZERO()','Transform a number to astring with specific leeding zeros','strzero(_num1, [_num2], [_num3])','C','STR','str(), substr()','B','Use to: Transform a numeric syntax to a string. The difference from str() it is that the result has a specific zero figures number\r\n\r\nParameters :\r\n_num1 : is the numeric syntax we want to be transformed.\r\n_num2 : is the total characters number (counts the blanks spaces in front and in the end, the symbols, the decimals and one predefined place) witch will be placed to the string. If the num2 is smaller then the number length, returns asterix (****)\r\n_num3: is the total decimals number. This setting is optional. If missing, the string will not have decimals and the results will be displayed from the absolute value of the number.\r\n\r\nReturns a string\r\n\r\nexample:\r\nLet\'s take the variable _val with the value 109.10\r\n? STRZERO(_val, 7) &&Returns 0109.10\r\n? STRZERO(_val,5,0) &&Returns 00109\r\n? STRZERO(_val,2) &&Returns **','2005-01-20','16:18:53','dias','0100-01-01','','',''),(206,'SUBSTR()','Finds a part of a string','substr(_str1, _num2, _num2)','C','STR','str(), at(), rat()','B','Use to: Isolate one part of a string.\r\n\r\nParameters :\r\n_str1 (c) : it is the string from where will isolate a part of\r\n_str2 (c) : it is the place from where will take the part of the string. If the number it is negative, the place is on right side.\r\n_num2 (n) : it is the characters number will be isolated. If the number is bigger then the number of the characters remain, will be returned all the characters were isolated.\r\n\r\nReturns a string.\r\n\r\nExample :\r\nLet\'s take the variable dickens with the value \"And a hearty good morning to you sir!\"\r\n? SUBSTR(dickens,14,4) && Returns \"good\"\r\n? SUBSTR(dickens,-4,3) && Returns \"and\".\r\n','2005-01-20','16:19:22','dias','0100-01-01','','',''),(207,'TOANSI()','transform a string to ANSI','toansi(_str)','C','STR','tooem()','W3','Use to: The strings opened with windows applications are ANSI and the one opened with MS-DOS applications are IAI. Many times, when we want to transfer data from one environment to another, we have to transform these data (from ANSI to IAI and reverse).\r\nThe function toansi()transforms one string to ansi, means to a Windows compatible type\r\n\r\nParameters\r\n_str : the string will transform.\r\n\r\nReturns the new string\r\n\r\nExample\r\ntoansi(_achr)','2005-01-20','16:19:52','dias','0100-01-01','','',''),(208,'TOOEM()','Transform a string to OEM','tooem(_str)','C','STR','toansi(), isoem(), isansi()','W3','Use to: The strings opened with windows applications are ANSI and the one opened with MS-DOS applications are IAI. Many times, when we want to transfer data from one environment to another, we have to transform these data (from ANSI to IAI and reverse).\r\nThe function tooem() transforms one string to oem, means to a MS-DOS compatible type\r\n\r\nParameters\r\n_str : the string will transform.\r\n\r\nReturns the new string\r\n\r\nExample\r\ntooem(\'aaaa\')\r\n','2005-01-20','16:20:22','dias','0100-01-01','','',''),(209,'TOSTR()','Transform a variable to string','tostr(_str, _view, _odbc)','C','STR','str(), val(), ctod()','W3','Use to: Transform one syntax to string.\r\n\r\nParameters :\r\n    _str : the syntax will be transformed. If the syntax value it is logic, then the value returned defines from the true string and the false string of system parameters.\r\n    _view (l): Optional, Default=.f.  If .t. then the numeric values returned with , as decimal symbol if ker_grdec=.t.\r\n    _odbc (l): Optional. Default =.f., If .t. then returns \r\n                         spec_char(_ret) for character variables \r\n                         odbcdtos(_ret, .t.) for date variables. \r\n                         pegtrim(str(_ret)) for numeric variables\r\n  It is usefull for SQL queries usage. \r\n\r\n\r\nExample\r\nmsginfo( tostr( \'date()\') )\r\nmsginfo( tostr( \'p10=10\') )\r\n','2016-07-20','10:32:40','tesae','0100-01-01','','',''),(210,'TRANCHR()','Transform a string','tranchr(_string, _nochar, _array1, _array2)','C','STR','abschr()','W3','Use to: Transform one string to a new one, according to what define _array1, _array2\r\n\r\nParameters :\r\n_str : the string will transform\r\n_nochars : optional definition. If there is, declare the characters will not be used from the new string\r\n_array1 : one array with the characters will be transformed\r\n_array2 : the array with the correspondence of the transformed characters\r\n\r\nReturns the new string\r\n\r\nExamples\r\n_ar1={\'1\', \'2\', \'3\', \'4\')\r\n_ar2={\'a\', \'b\', \'c\', \'d\')\r\nmsginfo( tranchr(\'1234\', \'\', _ar1, _ar2) )\r\nreturns abcd\r\n_ar1={\'aAaA\', \'bBaA\', \'cC\', \'dDaA\')\r\n_ar2={\'a\', \'b\', \'c\', \'d\')\r\nmsginfo( tranchr(\'ab,cd-aaa/\', \'-/\', _ar1, _ar2) )\r\nreturns AB,CDABD','2005-01-20','16:23:03','dias','0100-01-01','','',''),(211,'TRANSFORM()','Transform a string according to a picture','transform(_val, _pict)','C','STR','str(), strzero()','B','Use to: Transform one value to a shape was defined from the icon _pict. Generally it is used to transform the display of numeric fields\r\n\r\nParameters :\r\n_val : the value of which display will be transformed. May be numeric or string\r\n_pict (c) : the icon will define the display way\r\nReturns one string that have the value _val with the shape _pict\r\nThe _pict may take the following values:\r\n@B : Displays the numbers left oriented\r\n@C : Displays one CR after positive numbers\r\n@D : Displays one date in a defined way\r\n@E : Displays one date in British format\r\n@X : Displays one DB after negative numbers\r\n@Z : Displays the zero as empty space\r\n@( : Displays the negative numbers inside parentheses\r\n@! : Transforms the characters in capitals\r\nAlso, may be used the characters:\r\nA : Displays a letter\r\n? : Displays any character\r\n9 : Displays a number\r\n. : Define the point to number\r\n, : define the comma to number\r\n\r\nExamples:\r\ntransform(19000, \'9,999,999\') && 19,000\r\ntransform(19000, \'9,999,999.99\') && 19,000.00\r\n','2005-01-20','16:26:57','dias','0100-01-01','','',''),(212,'TRIM()/RTRIM()','Removes empty spaces from a string','trim(_str)','C','STR','alltrim(), ltrim()','B','Use to: Remove all the empty spaces from a string\r\n\r\nParameters:\r\n_str : it is the string from where we want to remove the empty spaces\r\n\r\nReturns a string.\r\n\r\nExample :\r\n? fname + \" \" + Iname\r\nTim Brown\r\n? TRIM(fname) + \" \" + Iname\r\nTim Brown\r\n','2005-01-20','16:28:29','dias','0100-01-01','','',''),(213,'UPCHR()','transform a string to capitals','upchr(_str)','C','STR','abschr()','W3','Use to: Mainly for strings are not influenced of the existence of small or capital letters\r\n\r\nParameters\r\n_str : the string will transform.\r\n\r\nReturns the new string\r\n\r\nExample\r\nmsginfo( upchr(\'abcd\') ) && returns ABCD\r\n','2005-01-20','16:29:00','dias','0100-01-01','','',''),(214,'UPPER()','Transforms a string to capitals','upper(_str)','C','STR','upchr()','B','Use to: Transform one string to capital letters. It is valid only for Latin letters. To transform also Greek characters, you should use upchr()\r\n\r\nParameters :\r\n_str : the string will transform.\r\n\r\nReturns the new string\r\n\r\nExample\r\nmsginfo(\'abcde\') returns ABCD\r\n','2005-01-20','16:37:50','dias','0100-01-01','','',''),(215,'VAL()','Transform a string to a number','val(_str)','N','STR','str(), strzero()','B','Use to: Transforms one string to numeric\r\n\r\nParameters :\r\n_str : the string will be transformed\r\n\r\nReturns numeric\r\n\r\nRemark : VAL() deny all the characters finds after the 2nd decimal or any character. For example, VAL(\"123dfs\") will see 123.\r\n\r\nExample :\r\n? VAL(\"4\") && Returns 4.\r\n? 123 + VAL(\"232sdc#@) && Returns 355.\r\n','2014-11-03','13:53:11','tesae','0100-01-01','','',''),(216,'GETDATA() TIP 1','Display an image to screen class','','','TIPS','getdata(),  bmpadjust(), bmpload(), bmpzoom()','W3','While creating one screen class, you may add an icon\r\n\r\nHere you have to define\r\nLine, column: The left up limit of the icon\r\nLength, Height: The icon dimensions to pixels\r\nIcon: The initial value of the icon (can be one variable or one icon, for example nph01 or \'..\\bmp\\ph.bmp\')\r\nThe icons must be from bmp type.\r\nName: The name of the icon. The program creates automatically the object with the name o + <name> for example\r\nname = php01\r\nobject = ophp01\r\nThe object may be used from the functions bmpadjust(), bmpload(), bmpzoom()\r\n1=public : has to be 1 to activate the icon\r\n1=Adjust : if it is 1 then the icon will be adjusted to the screen appears, else, it is displayed to its original size\r\nSequence: the sequence has to be from -799 until -700\r\n','2005-01-20','16:47:28','dias','0100-01-01','','',''),(217,'PRFORM() TIP 2','Defines the printout and search conditions','','','TIPS','prform()','W3','In one Pegasus Printout, you may define except the sequence also the condition (not be displayed anymore to user the screen for sequence selection and create searching criteria), just using the following variables :\r\ncond (c): the condition for the records will be printed\r\nscond (c): the condition for the dowhile loop\r\nsorting (n): the sequence suite will be used\r\nsorfld (c) : the sort file. It may be used in staid of sorting. It is not necessary to define both variables (sorting, sortfld), but only one.\r\ngseek (l)= .t.\r\nvseek : the seek value\r\n_no_cond (n) =1 (not to be displayed the create searching criteria screen)\r\nPrinting the sub footer\r\nThe printing may have sub footer, according to the value of one or more fields. For this, you have to define:\r\n_subexp (c) = the syntax defines the sub footers (for example \"str(p01,10)\")\r\n_subfrm (c) = the printout form will be printed when sub footer changes\r\n_formlines (n) = the total lines number printed on main form. If you don\'t define it, the page will be changed for each sub footer.\r\n','2005-01-20','17:14:31','dias','0100-01-01','','',''),(218,'PRFORM() TIP 3','Printnig using the Temporary file','','','TIPS','prform()','W3','Into the virtual screen of one printout design, we may define special variables used from Pegasus to create a temporary file with the records you want, put its in a temporary sequence with an ordinary index and print its.\r\n\r\nThe variables we may modify are:\r\n_crttmp (l) : if it is.t. it is activated the temporary file attribute\r\n_tmp_scond (c) : the condition do while that will be valid for the temporary file printout.\r\n_tmp_cond (c) : the condition is defining what records from the temporary file will take part of printout\r\n_tmp_meth (c) : it is one method that it is activated to create the temporary file. If was not defined, the temporary file it is created with the records defined from the variables cond and scond (see tip1), means with the records will be printed directly.\r\n_tmp_name (c) : if you define the method, then you have to define too also the name of the temporary file will be created. You can use the _prtmp temporary file name\r\n_tmp_ntx (c) : the temporary index syntax that settles the sequence used for printout\r\n\r\nExample\r\nWe define for the accounts operations file (t01) the following:\r\nsorting=3\r\n_no_cond\r\nscond=\"p02<=_dt\"\r\ngseek=.t.\r\nvseek=_df\r\ncond=\"p07=1000 .or. p07=1100\"\r\n_crtmp=.t.\r\n_tmp_ntx=\"p05\"\r\nWill be printed the records defined from the conditions (complete period condition) with a sequence by Justification','2005-04-22','18:43:46','dias','0100-01-01','','',''),(219,'FUNEND()','Closes a dialog box that has opened with getdata()','funend(_ret, _adlg)','U','PEG','getdata()','W3','Use to: May be used into the buttons of ONE screen, replacing the constants \"Submit\" \"Cancel\". Closes the dialog box and Returns to getdata the _ret\r\nParameters :\r\n_ret (l) : the value will return\r\n_adlg (o) : the object of the dialog box. Generally, the variable _curwin saves the current dialog box.\r\n','2005-01-20','14:24:23','dias','0100-01-01','','',''),(220,'GETGRAPH()','Creates a graph','getgraph(_type, _title, _subtitle, _xlabel, _ylabel, _yar1, _xar1,  _xtit1,...., _xar6, _xtit6)','C','GRAPH','','W3','Usage : Creates a graph and user can manage it and print it\r\n\r\nArguments : \r\n\r\n_type (n) : The initial graph type\r\n                1=Bar, 2=Line, 3=Points, 4=Pie\r\n_title (c) : The main title of graph\r\n_subtitle (c) : The subtitle\r\n_xlabel (c) : The title of x axes\r\n_ylabel (c) : The title of y axes\r\n_yar1 (a) : Array with values for y axes\r\n_xar1 (a) : The first Array with values for x -axes\r\n_xtit1 (c) : The Title of first x - axes\r\n_xar2 (a) : The second Array with values for x -axes\r\n_xtit2 (c) : The Title of second x - axes\r\n_xar3 (a) : The third Array with values for x -axes\r\n_xtit3 (c) : The Title of third x - axes\r\n_xar4 (a) : The forth Array with values for x -axes\r\n_xtit4 (c) : The Title of forth x - axes\r\n_xar5 (a) : The fifth Array with values for x -axes\r\n_xtit5 (c) : The Title of fifth x - axes\r\n_xar6 (a) : The sixth Array with values for x -axes\r\n_xtit6 (c) : The Title of sixth x - axes\r\n\r\nExamples :\r\ngetgraph(1, \"Test\", \"Real graph test\", array1, _array2, \"first x values\", _array3, \"Second x values\")\r\n\r\n','2006-05-10','17:32:05','dias','0100-01-01','','',''),(221,'GETDATA() & INTEGRITY','Integrity','','','GEN','','W3','With a screen class you can have a integrity method. The method\'s name is the same with screen class if you replace the _d eith _i.\r\nFor example screen class etf_d has the integrity method etf_i.\r\nThe function getdata() if this function exists executes it when you close the dialog box with OK button.\r\nIt executes the\r\n##BEGNEW, ##ENDNEW department of method for new records and\r\n##BEGCHAN, ##ENDCHAN department of method for old records\r\nIf method close with a ##RETURN no statement then the getdata doesn\'t close.\r\nExample of a method\r\n##BEGNEW\r\n##IF printfld(\'inv\', \'pnoinv\', \'nr01\', npno)<>0\r\nmsginfo(\'There is the same code. You cannot save it\')\r\n##RETURN no\r\n##ENDIF\r\n##ENDNEW\r\n','2005-01-20','20:33:08','dias','0100-01-01','','',''),(222,'GETDATA() & FIELDS SEQUENSE','Change of field sequence in a screen','','','TIPS','','W3','When showing a screen with getdata() the field sequence (tab) is determined from their \'sequence\' in the description class\r\n\r\nYou may give the management in a specific object in the screen with:\r\n<object>:setfocus()\r\n\r\nexample\r\nyou want to give (after a procedure) the management to p01 field (variable np01, object op01)\r\nyou write:\r\nop01:setfocus()\r\n','2005-01-20','17:21:03','dias','0100-01-01','','',''),(223,'MSGGET()','Read a variable','msgget(_title, _message, @_var)','L','MSG','msginfo(), msgalert()','W3','use: Displays a screen where user can modify the content of a variable\r\nArguments  : \r\n_title (c) : the tittle message\r\n_message (c) : The message\r\n_var : the variable\r\n\r\nReturns : .t. if user presses OK, .f. otherwise\r\nexamples:\r\nmsgget(\'Εκτύπωση Ετικετών\', \'Δώστε το πλήθος\', @p_plit)\r\n','2005-01-20','14:47:36','dias','0100-01-01','','',''),(224,'GETFILE()','User selects one file','getfile(_mask, _title, _defmask, _indir, _save, _def)','C','FILE','curdir(), lchdir(), delfile()','W3','Use to: Activate an windows screen file selections\r\nParameters :\r\n_mask (c) : (optional) the mask will define the files will see the user. If you want,  user selects from different file types, then should have the shape, for example: \"Dbase|*.db? |Indexes|*.ntx\". Initial Value is \'*.*\'\r\n\r\n_title (c) : (optional) the window title. Initial Value is \'Select a File\'\r\n\r\n_defmask (n) : (optional) if was defined on _mask more then one file type, here it is defined the default one. \r\n\r\n_indir (c) : (optional) the directory where will start searching. \r\n\r\n_save (l): (optional) if it is .t. , then will be displayed also the SAVE AS. This definition is optional. The initial value it is .f.\r\n\r\n_def (c): optional. IF exists and user not selects file, returns _def\r\n\r\nExample\r\np_val(@_file, [getfile(\"Xbase|*.dbf|Text Files|*.txt\", \"Select a file\", 1)])','2018-09-06','17:36:29','tesae','0100-01-01','','',''),(225,'EXISTONE()','Checks if exist records with a condition','existone(_file, _index, _seekpar, _order, _whilecond, _ifcond, @_recnr)','L','DBPEG','givesum(), giveavg(), plusavg(), plussum()','W3','Objective : Checks if exists to a dBase records with a condition. \r\n\r\nUsage  : It usually used to Integrities Checks. \r\n\r\nArguments : \r\n_file (c): The data class will be searched\r\n_index (c): The index name it will be used. In case the _file is allready opened this argument must be the empty string (\'\').\r\nIMPORTANT : the  index name of a data class is  <field><data class>\r\n_seekpar (c): The value will be used to seek.\r\n_order (n - c): If data class is allready opened this argument shows the index order. It can be a number (order) or a string (indesed field name). If _order=0 and _index=\'\' then the file is opened and serial searcing will be used \r\n_whilecond (c) : The do while condition. \r\n_ifcond (c): The if condition\r\n_recnr (n): Optional. If exists then function returns the recno() of record found\r\n\r\nReturns : .t. if it\'ll find at least a record that satisfies the conditions. Otherwise .f.\r\n\r\nExample\r\n##IF existone(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\")\r\nsayalert(190)\r\n##RETURN\r\n##ENDIF \r\n\r\nYou can use the plussum for the same example like this\r\n##IF plussum(\'t01\', \'p01t01\', \"\'3000000001\'\", 0, \"p01==\'3000000001\'\", \"p02<=ctod(\'31/12/1999\')\", \'1\')>0\r\nsayalert(190)\r\n##RETURN\r\n##ENDIF \r\n\r\nBut in this case it run all the records that satisfies the conditions. The existone() stop searching when it finds one appropriate record, so it is faster .\r\n\r\n','2014-10-21','12:44:55','tesae','0100-01-01','','',''),(226,'PEGINT.DLL','Executes a Pegasus Method to Internet (from explorer)','Pegint.dll?method|par1|par2.....','U','INT','dopeg(), mainhtml(), showmainhtml()','I1','Objective : Executes a Pegasus Method to Internet (to a web server from an explorer) with pipeline passing parameters. You can call from an html page (with a link or a submit as action to a form) and execute a Pegasus Method on the Server. This method can create an html output and go on.\r\n\r\nUsage  : It is the main part of a Pegasus For Internet Application\r\n\r\nArguments : \r\nmethod (c): The pegasus method that will be executed from Web Server when you call this page. \r\nPegasus Methods for Internet ara text files with an extention .peg \r\nPar1, par2 ...(c) : are the parameters that your html page passes to Pegasus Method. \r\nPegasus methot will assign these parameters to internal variables _par1, _par2 .....\r\nYou can use to 20 parameters with pipeline passing. \r\n\r\nExample: \r\n\r\nThe following example shows the name of a customer to Internet.\r\n\r\npegint.dll?show|10\r\n\r\nmethod show.peg \r\n--------------------------\r\n##VAR _nr01=val(_par1)\r\n### the variable _nr01 assigns the 1st parameter. We want a numeric value show we use va()\r\n\r\nmainhtml(\'show.htm\')\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndborder(\'etf\', \'etf_d\', \'nr01\')\r\nseek_var( _nr01)\r\nReplLabel(\'[name]\', p19)\r\ndbclose(\'etf\')\r\nshowmainhtml()\r\n##RETURN\r\n','2004-03-06','12:22:21','tesae','0100-01-01','','',''),(227,'GETNEWFORM() *','Displays the form for a new Pegasus database record','GETNEWFORM(file, _desc, _submit)','','INT','','I1','use: Displays the form for a new Pegasus database record\r\n\r\nParameters:\r\nfile(c) : The database file\r\n_desc(c) : The database description file\r\n_submit(l): If .t. the functions puts automatically the submit and reset buttons, otherwise (.f.) you must provide them (with html() function)\r\n\r\nYou can have list selections if you give as opicture to a field\r\nM: <file>, <desc>, <tit>, <fld>, <order>\r\n<file> : data class\r\n<desc> : Screen Class\r\n<tit> : The field used to give titles to list\r\n<fld> : The field used to give values to list\r\n<order> : The order of data class to show it. \r\n\r\nIF you use ODBC to see tables then \r\n  <file> : table\r\n  <order> : order by selection list\r\n\r\nIF <order> isn\'t numeric then use odbc. \r\n\r\nExample of Picture \r\nM: a01, a01_d, p01, nr01, 1\r\n\r\nExample: \r\nnewform(\"POST\", \"pegint.dll?updnew\", \'Pegasus\')\r\ngetnewform(\'c01\', \'c01_d\')\r\nendform()\r\n','2005-07-20','16:11:09','dias','0100-01-01','','',''),(228,'SAYFORM()','Show the contents of the current database record','SAYFORM(_file, _desc, _memolen, _color, _isodbc)','','INT','','I1','use: to show the contents of the current database record\r\n\r\nParameters:\r\n_file (c) :  The database name (must already be open). \r\n_desc (c) : The screen class will be used to show the record\r\n_memolen (n) : (Optional) width of memo fields (if ommited = 80)\r\n_color (c) : (Optional), A string used for color. It must be html coded. If ommited then the standard page color used. \r\n_isodbc (l) : (Optional), If it is .t. then the data class is an RDBMS and the _file is a table o RDBMS. \r\n                  In case of _isodbc=.t., Pegasus translate data types internally. \r\n                  If ommited .f. is default value (dbf Data Class)\r\n\r\n\r\nExample : \r\naselect(\'c01\')\r\n##IF seek_var(10)\r\nsayform(\'c01\', \'c01_d\')\r\n##ENDIF\r\n\r\n','2005-12-22','18:29:09','dias','0100-01-01','','',''),(229,'REPLDATA()','replace the data of database record','repldata(_file, _desc, _new)','C','INT','varrepldata()','I1','use : to replace the data of database record. the values are the ones given by the user inside a file form\r\n\r\nParameters:\r\n_file(c) : The database file\r\n_desc(c) :  The database description file\r\n_new(l)  : If  .t. creates a new record, otherwise (.f.) replaces the data of the current record\r\n\r\nNOTICE!!! In Pegasus for Internet its use is like the repldata() function for Windows. The difference is that in internet sees url variables passed by the mehod of the previous html andnot the variables with \'n\' in front of their field name.\r\n\r\nExample:\r\nFor an html form with fields\r\np01, p02, p03 witch calls the method that calls repldata() it will replace the database fields p01, p02, p03 with the values of the form fields (WITH THE SAME NAME).','2005-01-20','22:18:02','dias','0100-01-01','','',''),(230,'GETOLDFORM() *','Displays a form where user can modify data of the current record','GETOLDFORM(file, _desc, _submit, _color, _isodbc)','','INT','','I1','Creates a form (to html) where user can modify the data of the current record. \r\n\r\nParameters:\r\nfile (c) : The database file\r\n_desc (c) : The Screen Class\r\n_submit (l): (Optional) If .t. the functions puts automatically the submit and reset buttons, otherwise (.f.) you must provide them (with html() function)\r\n_color (c): (Optional) A string that defines color for fields (html coded). \r\n_isodbc (l) : (Optional) If .t. then th data class is RDBMS (via ODBC). \r\n\r\nYou can have list selections if you give as opicture to a field\r\nM: <file>, <desc>, <tit>, <fld>, <order>\r\n<file> : data class\r\n<desc> : Screen Class\r\n<tit> : The field used to give titles to list\r\n<fld> : The field used to give values to list\r\n<order> : The order of data class to show it\r\n\r\nIF you use ODBC to see tables then \r\n  <file> : table\r\n  <order> : order by selection list\r\n\r\nIF <order> isn\'t numeric then use odbc. \r\n\r\nExample of Picture \r\nM: a01, a01_d, p01, nr01, 1\r\n\r\r\nExample:\r\naselect(\'c01\')\r\nnewform(\"POST\", \"pegint.dll?updold\", \'Pegasus\')\r\ngetoldform(\'c01\', \'c01_d\')\r\nendform()\r\n\r\n','2005-12-22','18:47:56','dias','0100-01-01','','',''),(231,'NEWFORM() *','Creates a new form in screen','NEWFOEM(method, instr, name)','','INT','','I1','use : Creates a new form in screen\r\n\r\nParameters\r\nmethod : Form type\r\ninstr  : The instruction to be executed\r\nname   : Her name\r\n\r\nExample:\r\nnewform(\"POST\", \"pegint.dll?updnew\", \"Pegasus\")\r\n','2005-01-21','02:45:24','dias','0100-01-01','','',''),(232,'ENDFORM() *','','','','INT','','I1','*******************\r\nENDFORM()\r\n*******************\r\nΤέλος της φόρμας\r\n\r\n','2004-03-06','12:14:16','tesae','0100-01-01','','',''),(233,'BEGPREFORMAT() *','','','','INT','','I1','*******************\r\nBegPreFormat()\r\n*******************\r\nέναρξη preformat\r\n\r\n','2004-03-06','12:14:07','tesae','0100-01-01','','',''),(234,'ENDPREFORMAT() *','','','','INT','','I1','*******************\r\nEndPreformat()\r\n*******************\r\nΤέλος Preformat \r\n','2004-03-06','12:14:19','tesae','0100-01-01','','',''),(235,'SAYSTR()','Displays an alphanumeric on screen','saystr(_str, _newline, _bold, _under, _ital)','','INT','','I1','use: to display an alphanumeric on screen\r\n\r\nparameters\r\n_str : Το αλφαριθμητικό \r\n_newline : Αν μετά θα αλλάξει γραμμή\r\n_bold    : Αν είναι bold\r\n_under   : Αν είναι underline\r\n_ital    : Αν είναι italic\r\n\r\nExample:\r\nsaystr(\"My Name is John\", .t., .t., .f., .f.)\r\nsaystr(str(10, 5), .f., .f., .f., .f.)\r\n\r\n','2005-01-20','21:41:49','dias','0100-01-01','','',''),(236,'MESSAGE() *','Returns a message','MESSAGE(number)','','INT','','I1','use : to return a message from the messag file, This file is diceng.peg, unless you define another when calling pegint.dll\r\n\r\nparameters:\r\nnumber : Message line, Each line in the message file is a message\r\n\r\n','2005-01-21','02:47:34','dias','0100-01-01','','',''),(237,'PEGBROWSE() *','Display a browse of a file','pegbrowse(_file, _desc, _method, cond, scond, sorting, vseek, atype, anr01, lines, _brmeth)','','INT','','I1','use: to displays a browse of a file\r\n\r\nParameters:\r\n_file : The data fileto be browsed\r\n_desc : The description of the data file\r\n_method : The method to be called for each record toshow\r\ncond : The if condition for the records to be shown\r\nscond : DO WHILE condition\r\nsorting : The index with which we will see the file\r\nvseek : The first value to start seeking\r\natype : The type of the seek value\r\nanr01 : The NR01 value for the first value to show\r\nlines : the number of lines to show\r\n_brmeth : The method to be called when the user selects next records\r\n\r\nWhen the user selects next page,Pegasus executes the _brmeth method passing 6 parameters. These parameters are recalled by getbrparameters() functions. \r\n\r\nExample:\r\n showfir.peg method\r\n##VAR p_co=\'.t.\', p_sco=\'.t.\', p_sort=1, p_vsekk=\'\', p_type=\'\'\r\nmakecond(\'c01_d\', @p_co, @p_sco, @p_sort, @p_vsekk, @p_type)\r\npegbrowse(\'c01\', \'c01_d\', \'getold\', p_co, p_sco, p_sort, p_vsekk, p_type, val(_parameters), 10, \'showrest\')\r\n##RETURN\r\n\r\nbellow we have showrest.peg method(when the user selects next page)\r\n\r\ngetbrparameters(_par1)\r\npegbrowse(\'c01\', \'c01_d\', \'getold\', _par1, _par2, val(_par3), _par4, _par5, val(_par6)+1, 10, \'showrest\')\r\n\r\n##RETURN\r\n\r\nParameters passes from pegbrowse() to herself are:\r\n\r\n_par1 : If condition for the records to show\r\n_par2 : DO WHILE condition\r\n_par3 : Index order with which we will see the file\r\n_par4 : The first seek value\r\n_par5 : Type of seek value\r\n_par6 : Value of NR01 of the last record shown\r\n\r\nnote that all parameters are alphanumeric','2005-01-21','02:43:51','dias','0100-01-01','','',''),(238,'SAYHREF()','Create a link','sayHref(_link, _text)','','INT','','I1','use: to create a link\r\n\r\nParameters\r\n_link(c) : The address to link\r\n_text(c) : Text to show\r\n\r\nΠαράδειγμα : \r\nsayHref(\'http://www.tesae.com\', \"Visit TESAE\")\r\n','2005-01-20','21:46:06','dias','0100-01-01','','',''),(239,'SAYMAIL()','Creates a link to an email','saymail(_text, _email)','','INT','','I1','use: to create an email link\r\n\r\nParameters\r\n_text : Το κείμενο που θα εμφανιστεί\r\n_email : Το e-mail στο οποίο θα γίνει η επικοινωνία\r\n\r\nExample: \r\nsaymail(\'Contact TESAE\', \'sales@tesae.gr\')\r\n','2005-01-20','21:43:40','dias','0100-01-01','','',''),(240,'SAYLINEBREAK()','Creates empty lines','saylinebreak(_lines)','','INT','','I1','use : to create empty lines\r\n\r\nParameters:\r\n_lines(n) : The number of empty lines\r\n\r\nExample:\r\nsaylinebreak(2)','2005-01-20','21:44:47','dias','0100-01-01','','',''),(241,'BACKGROUND() *','Inserts Bachground to an html','background(file)','C','INT','','I1','use: defines a background image\r\n\r\nparameters\r\nfile(c) : the image file\r\n\r\nexample: \r\nbackground(\'http://www.tesae.com/images/back1.jpg\')\r\n','2005-01-20','21:33:53','dias','0100-01-01','','',''),(242,'VARIABLE()','Returns the value of a html form field','variable(anfld)','C','INT','mainhtml(), showmainhtml()','I1','*********************************\r\nvariable(anfld)\r\n*********************************\r\n\r\nDescription : Use this function into a pegasus method to find the values of form files that called the method. \r\nReturns : The value of field allways as string. \r\n\r\nExample :\r\nvariable(\'p02\')','2004-03-06','12:24:53','tesae','0100-01-01','','',''),(243,'GETBRPARAMETERS() *','Displays records per page','GETBRPARAMETERS(_brfile)','','INT','','I1','use : displays records per page. Each pagedisplays a specific number per records defined by the method. For the next page to \'know\' the conditions used by the first pegbrowse(), a set of parameters is passed from a pegbrowse() to another. This set of parameters is written in a temp file with the name of whoch the next method is called\r\ngetbrparameters() Takes these parameters.\r\n\r\nThis temp file has the name B<nnn> where nnn is a number created from counts.dbf and must exist in aplications directory.\r\n\r\nExample:\r\nΜέθοδος showfir.peg\r\n##VAR p_co=\'.t.\', p_sco=\'.t.\', p_sort=1, p_vsekk=\'\', p_type=\'\'\r\nmakecond(\'c01_d\', @p_co, @p_sco, @p_sort, @p_vsekk, @p_type)\r\npegbrowse(\'c01\', \'c01_d\', \'getold\', p_co, p_sco, p_sort, p_vsekk, p_type, val(_parameters), 10, \'showrest\')\r\n##RETURN\r\n\r\nBellow we see showrest.peg (the method to be called when user selects next page)\r\n\r\ngetbrparameters(_par1)\r\npegbrowse(\'c01\', \'c01_d\', \'getold\', _par1, _par2, val(_par3), _par4, _par5, val(_par6)+1, 10, \'showrest\')\r\n\r\n##RETURN','2005-01-21','03:15:35','dias','0100-01-01','','',''),(244,'SAYSUBMIT()','Creates a submit button','saysubmit(_prompt, _message)','','INT','','I1','use: Creates a submit button\r\n\r\nparameters:\r\n_prompt : Ο τίτλος του κουμπιού\r\n_message : Το κείμενο δίπλα από το κουμπί\r\n','2005-01-20','21:40:02','dias','0100-01-01','','',''),(245,'SAYRESET()','Creates a reset button','sayreset(_prompt, _message)','','INT','','I1','use: to create a reset button\r\n\r\nParameters\r\n_prompt : Ο τίτλος του κουμπιού\r\n_message : Το κείμενο δίπλα από το κουμπί\r\n\r\n','2005-01-20','21:42:39','dias','0100-01-01','','',''),(246,'GETCONT() *','Displays the creation screen for a criteria search','GETCOND(_desc, _method)','','INT','','I1','use: to Display the creation screen for a criteria searc \r\n\r\nParameters:\r\n_desc : The database description file\r\n_method : The method to execute when user selects search\r\n\r\nNOTICE, in method you must first call the makecond() function which takes the variables created in the screen and creates the search conditions of the database.\r\n\r\nFor better understanding view the following files:\r\ngetquery.peg, showfir.peg, showrest.peg','2005-01-20','22:04:04','dias','0100-01-01','','',''),(247,'HTML() *','Writes an Html command','html(command)','','INT','','I1','use : to write an html command\r\n\r\nparameters:\r\ncommand(c): the html command\r\n\r\nExample:\r\nhtml(\'<center><b>some text</b></center>\')\r\n','2005-01-20','22:10:59','dias','0100-01-01','','',''),(248,'FREEBROWSE()','Shows records from a pegasus dbases','freebrowse(_file, _desc, _method, cond, scond, sorting, vseek, atype, anr01, lines, @recs, @lastnr, @paramfle)\r','C','INT','inssubarea(), findsubarea()','I1','Shows record from a Pegasus dBase, using a pegasus method to manage the records. \r\n\r\nFreebrowse1() is same as Freebrowse(). The differense is the 6th argument. To freebrows1() you give the indexed field name. To freebrowse() you give the order of indexed key. \r\n\r\n_file (c) : The data file it will search. \r\n_desc (c) : dBase Screen Class\r\n_method (c) : Method will be executed for any record\r\ncond (c) : IF condition for records \r\nscond (c) : DO WHILE condition\r\nsoring (c) : The sorting order \r\nvseek (c): SEEK value. \r\natype (c) : seek value Type\r\nanr01 : The nr01 value from it will start. \r\nlines : The records it will show\r\n@recs : Records it found\r\n@lastnr : The last nr01 it founds\r\n\r\np_val(@p_sort, \"\'p01\'\")\r\np_val(@p_vsekk, \" \'\'\")\r\np_val(@p_sco, \" \'.t.\' \")\r\np_val(@p_type, \"\'c\'\")\r\np_val(@_max, \'10\')\r\np_val(@p_lnr, \'10\')\r\n\r\nfindsubarea(\'<!--begsub2-->\', \'<!--endsub2-->\', @p_sub1)\r\nfreebrows1(\'a01\', \'a01_d\', \'faq001\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub1)\r\n','2004-03-06','12:54:31','tesae','0100-01-01','','',''),(249,'MAINHTML()','Define the htmlto be used for the result','mainhtml(_htmlname)','C','INT','showmainhtml(), repllabel(), replselect(),','I1','use: to define the main html (variable _manahtml (c) )  to be used to show the results\r\n\r\nParameters:\r\n_htmlname (c) : Html file name\r\n\r\nReturns an empty string\r\n\r\nExample:\r\nmainhtml(\'test.htm\')\r\nReplLabel(\'[name]\',  _namepar)\r\nshowmainhtml()\r\n','2019-04-24','14:31:39','tesae','0100-01-01','','',''),(250,'SHOWMAINHTML()','Shows the html created','showmainhtml()','C','INT','mainhtml(), repllabel(),','I1','use: to show the created html. Is usually one of the last called functions in a method\r\n\r\nReturns an empty string\r\n\r\nExample:\r\n\r\nmainhtml(\'test.htm\')\r\nReplLabel(\'[name]\',  _namepar)\r\nshowmainhtml()\r\n','2005-01-20','21:38:57','dias','0100-01-01','','',''),(251,'REPLLABEL()','Replaces a label inside an html','repllabel(_label, _value)','C','INT','mainhtml(), showmainhtml()','I1','Use : inside main hml we use to show the our results, exists labels which will be replacedwith the proper value. repllabel is the one that replaces the valuesείναι αυτή που αντικαθιστά τις τιμές. \r\nIt shoud be used before mainhtml()\r\n\r\nParameters:\r\n_label (c) : The label o bereplaced\r\n_value (c) : he new value\r\n\r\nExample:\r\n##VAR _usernr=val(_par1)\r\nmainhtml(\'test.htm\')\r\nrepllabel(\'[name]\', printfld(\'etf\', \'nr01etf\', \'p19\', _usernr) )\r\nshowmainhtml()\r\n\r\n\r\n\r\n\r\n\r\n','2005-01-21','03:19:03','dias','0100-01-01','','',''),(252,'DELLABEL()','Deletes A Label from main html','dellabel(_label)','C','INT','repllabel(), findsubarea()','I1','Usage : Deletes a label from main html\r\n\r\nParameters\r\n_label (c): The label it will delete\r\n\r\nExample: \r\nmainhtml(\'test.htm\')\r\n##IF _testvar=1\r\nrepllabel(\'[name]\', _myname)\r\n##ELSE\r\ndellabel(\'[name]\')\r\n##ENDIF\r\n\r\nshowmainhtml()','2005-01-20','21:34:19','dias','0100-01-01','','',''),(253,'FINDSUBAREA()','Finds a section of a page','findsubarea(_label1, _label2, @_subarea)','C','INT','delsubarea(), inssubarea(),','I1','Usage : Finds a section of the main html (variable _manahtml (c) ) which is between two labels. Used in conjuction with freebrowse() to repeat a subsection many times (e.g. show the results of a search)\r\n\r\nParameters: \r\n_label1 (c) : The label that defines the beggining of the subsection\r\n_label2 (c) :  The label that defines the end  of the subsection\r\n_subarea : The variable to store the section\r\n\r\nExample:\r\n\r\nfindsubarea(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\nfreebrowse(\'a01\', \'a01_d\', \'apps01\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub)\r\n\r\nPart of method apps01 \r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublabel(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublabel(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublabel(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2019-04-24','14:29:40','tesae','0100-01-01','','',''),(254,'INSSUBAREA()','Inserts an alphanumeric in a subsection','inssubarea(_subarea, _newsubarea)','C','INT','findsubarea(), delsubarea()','I1','use: Inserts in main html (variable _manahtml (c) )  an alphanumeric above a subsection\r\n\r\nParameters:\r\n_subarea (c) : The subsection\r\n_newsubarea (c) : The alphanumeric to be inserted\r\n\r\n\r\nExample:\r\nfindsubarea(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\nfreebrowse(\'a01\', \'a01_d\', \'apps01\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub)\r\n\r\nPart of  apps01 method\r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublabel(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublabel(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublabel(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2019-04-24','14:30:17','tesae','0100-01-01','','',''),(255,'REPLSUBLABEL()','Replaces alabelof asubsection','replsublabel(_subarea, _label, _value)','C','INT','inssubarea(), fiandsubarea(), delsubarea()','I1','Use : Replaces a label with an htmlsubsection\r\n\r\nParameters:\r\n_subarea (c) : The subsection\r\n_label (c) : the label to be replaced\r\n_value (c) : the valueη tobe taken\r\n\r\n\r\nExample:\r\n\r\nfindsubarea(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\nfreebrowse(\'a01\', \'a01_d\', \'apps01\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub)\r\n\r\npart of apps01 method\r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublabel(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublabel(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublabel(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2005-01-21','03:20:42','dias','0100-01-01','','',''),(256,'DELSUBAREA()','Deletes a subarea from main html','delsubarea(_subarea)','C','INT','findsubarea(), replsubarea()','I1','Usage : Deletes a subarea from main html (variable _manahtml (c) ) \r\n\r\nArguments : \r\n_subarea (c) : Subarea it will be deleted\r\n\r\n\r\nExample\r\n\r\nfindsubarea(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\nfreebrowse(\'a01\', \'a01_d\', \'apps01\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub)\r\n\r\nMethod apps01\r\n-----------------------\r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublabel(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublabel(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublabel(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2019-04-24','14:30:07','tesae','0100-01-01','','',''),(257,'PEGCRYP()','Encrypts an alphanumeric','pegcryp(_str)','C','INT','peguncryp()','I1','use : creates an encrypted alphanumeric with encryption for variable passing from one html to another.\r\n\r\nParameters:\r\n_str (c) : The alphanumeric to be encrypted\r\n\r\nReturns the encrypted alphanumeric\r\n\r\nExample:\r\n\r\np_val(@_crypted, \"pegcryp(\'astring\')\")\r\n\r\np_val(@_original, \"peguncryp(_crypted)\")\r\n','2005-01-20','22:22:18','dias','0100-01-01','','',''),(258,'PEGUNCRYP()','Decrypts an encrypted alphanumeric','peguncryp(_str)','C','INT','pegcryp()','I1','use : Finds the authentic alphanumeric from an encrypted one with pegcryp() function\r\n\r\nParameters:\r\n_str (c) : The alphanumeric to be decrypted\r\n\r\nReturns the new decrypted alphanumeric\r\n\r\nExample:\r\np_val(@_crypted, \"pegcryp(\'astring\')\")\r\np_val(@_original, \"peguncryp(_crypted)\")\r\n','2005-01-20','22:20:11','dias','0100-01-01','','',''),(259,'PEGURL.DLL','Executes a pegasus method to web','pegurl.dll?method=methodname&par1=val1&par2=val2...','U','INT','pegint.dll, dopeg(), mainhtml(), showmainhtml(), variable()','I1','Objective : Executes a Pegasus Method to Internet (to a web server from an explorer) with url parameters passing. You can call from an html page (with a link or a submit) and execute a Pegasus Method on the Server. This method can create an html output and go on.\r\n\r\nUsage  : It is the main part of a Pegasus For Internet Application\r\n\r\nArguments : \r\nmethodname (c): The pegasus method that will be executed from Web Server when you call this page. \r\nPegasus Methods for Internet ara text files with an extention .peg \r\nPar1, par2 ...(c) : are the parameters that your html page passes to Pegasus Method. \r\nThe parameters are visible into Pegasus Method using thw function variable().\r\n\r\nExample: \r\n\r\nThe following exmple shows the name of a customer to Internet.\r\n\r\npegurl.dll?method=show@nr01=0\r\n\r\nmethod show.peg \r\n--------------------------\r\n##VAR _nr01=val(variable(\'nr01\'))\r\n### the variable _nr01 assigns the 1st parameter. We want a numeric value show we use va()\r\n\r\nmainhtml(\'show.htm\')\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndborder(\'etf\', \'etf_d\', \'nr01\')\r\nseek_var( _nr01)\r\nReplLabel(\'[name]\', p19)\r\ndbclose(\'etf\')\r\nshowmainhtml()\r\n##RETURN\r\n','2004-03-06','12:22:26','tesae','0100-01-01','','',''),(260,'PEGINT.DLL TIP 1','Create a Pegasus method to Internet','','','INT','','I1','To create a Pegasus Method (i.e. first.peg) to Internet, using the pegint.dll you must create 2 files. To our example we need files \r\n\r\nfirst.peg = Pegasus Method\r\nfirst.htm = Html that will show the output to user (calling main html). \r\n\r\nInto html we use LABELS, usually keywords into [] (i.e. [name], [lastname], ...).\r\nThe pegasus method will opens the main html, replace the labels with apropriate values and finally will show it. \r\nHere is the first application you can create. \r\n\r\nfirst.peg\r\n-----------\r\nmainhtml(\'first.htm\')\r\nReplLabel(\'[title]\', \'This is my first web application\')\r\nshowmainhtml()\r\n##RETURN\r\n\r\nfirst.htm\r\n------------\r\nYou can create this with an html editor (i.e. frontpage) and write the [title] somewhere. \r\n\r\nnow call from your web browser the page \r\n[yoururl]/pegint.dll?first\r\n','2004-03-06','12:40:37','tesae','0100-01-01','','',''),(261,'FREEBROWS1()','Shows records from a pegasus dbases','freebrowse(_file, _desc, _method, cond, scond, sortfld, vseek, atype, anr01, lines, @recs, @lastnr)','C','INT','freebrowse(), findsubarea(), inssubarea()','I1','Shows record from a Pegasus dBase, using a pegasus method to manage the records. \r\n\r\nFreebrowse1() is same as Freebrowse(). The differense is the 6th argument. To freebrows1() you give the indexed field name. To freebrowse() you give the order of indexed key. \r\n\r\n_file (c) : The data file it will search. \r\n_desc (c) : dBase Screen Class\r\n_method (c) : Method will be executed for any record\r\ncond (c) : IF condition for records \r\nscond (c) : DO WHILE condition\r\nsortfld (c) : The field tha is indexed and will be used for sorting the file\r\nvseek (c): SEEK value. \r\natype (c) : seek value Type\r\nanr01 : The nr01 value from it will start. \r\nlines : The records it will show\r\n@recs : Records it found\r\n@lastnr : The last nr01 it founds\r\n\r\np_val(@p_sort, \"\'p01\'\")\r\np_val(@p_vsekk, \" \'\'\")\r\np_val(@p_sco, \" \'.t.\' \")\r\np_val(@p_type, \"\'c\'\")\r\np_val(@_max, \'10\')\r\np_val(@p_lnr, \'10\')\r\n\r\nfindsubarea(\'<!--begsub2-->\', \'<!--endsub2-->\', @p_sub1)\r\nfreebrows1(\'a01\', \'a01_d\', \'faq001\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub1)\r\n','2004-03-06','12:53:49','tesae','0100-01-01','','',''),(262,'REPLSELECT()','Replace a label with select list','replselect(_label, _file, _desc, _tit, _fld, _order, _value, _cond)','C','INT','repllabel(), mainhtml(), showmainhtml()','I1','It used to import a list of records from a Pegasus dBase, to a select field of main html form.\r\n\r\nReturns : Empty String\r\n\r\nArguments :\r\n_label (c) : The label will be Replaced\r\n_file (c) : Pegasus Data File \r\n_desc (c) : Screen Class name\r\n_tit (c) : The field name it will be used to show to select.\r\n_fld (c) : The field name it will be used to give the value to select.\r\n_order (n) : The order used to sort the file\r\n_value (c) : The value of _fld tha will be selected\r\n_cond (c) : The condition of records to show. It as an optional argument. \r\n\r\nExample \r\n------------\r\n\r\nfirst.html has aform with a select field\r\n<select name=\"p01\">[select1]</select>\r\n\r\nfirst.peg\r\n-----------\r\nmainhtml(\'first.htm\')\r\nReplSelect(\'[select1]\', \'a01\', \'a01_d\', \'p01\', \'nr01\', 1, \'10\', \'.t.\')\r\nshowmainhtml()\r\n\r\nThe select field wil have the records of \"a01\" pegasus dBase sorted by first index. It wiil show the p01 field as title. The selected item will be this with nr01=10\r\n','2004-03-06','13:05:05','tesae','0100-01-01','','',''),(263,'VARREPLDATA()','Replaces the fields of a dbase record','varrepldata(_file, _desc, _new)','C','INT','repldata()','I1','It is THE SAME FUNCTION with REPLDATA() for WINDOWS. \r\n\r\nBecause the repldata() of internet version used with different way od repldata() of windows, we use the varrepldata(). \r\n\r\nReturns : The empty string. \r\n\r\nVARREPLDATA() .and. REPLDATA() for windows \r\nreplaces the fields values with values of variable with name n<field>. For example replace \r\nfield p02 with variable np02\r\nfield p03 with variable np03\r\nfield p04 with variable np04\r\nfield p05 with variable np05\r\n\r\nExample \r\ninitrec(\'a01\', \'a01_d\', .f.)\r\np_val(@np01, \'_input*10\')\r\nvarrepldata(\'a01\', \'a01\', .f.)\r\n\r\nREPLDATA() for internet\r\nreplaces the field values with HTML Variables. For example replace\r\nfield p02 with variable(\'p02\')\r\nfield p03 with variable(\'p03\')\r\nfield p04 with variable(\'p04\')\r\nfield p05 with variable(\'p05\')\r\n\r\n\r\n\r\n\r\n','2004-03-06','13:11:23','tesae','0100-01-01','','',''),(264,'SAYGET()','Reads a variable','sayget(_title, _message, @_var, [_dic])','L','MSG','msgget(), sayinfo(), sayalert(), sayYesNo(), ?query?cfpp008','W3','Use to: Display a screen where the user can change the value of a variable\r\nParameters :\r\n\r\n_strcode (n - c) : the message code or the message\r\n_message (n - c) : the message code or the message, will be displayed as title. \r\n_var : The variable\r\n_dic (c) : Optional Def=nil. The Dictionary class used to find message. If empty the opened dictionary used\r\n\r\nReturns .t. if user presses OK, else .f.\r\nExample :\r\nsayget( 150, 160, @p_plit)\r\n','2015-02-27','18:43:32','tesae','0100-01-01','','',''),(265,'MAINHTML()','Define the html to use for the result','mainhtml(_htmlname)','C','HTM','savemhtml(), repllabel(), replselect(),','W3','use: Use it to define the html to be used to create the html result.\r\nIt assigns the main html source code to _manahtml variable. \r\n\r\nParameters \r\n_htmlname (c) : The html name\r\n\r\nReturns: an empty string\r\n\r\nExample:\r\n\r\nmainhtml(\'test.htm\')\r\nReplLabel(\'[name]\',  _namepar)\r\nsavemhtml(\'newfile.htm\')\r\n','2007-08-31','11:03:39','dias','0100-01-01','','',''),(266,'SAVEMHTML()','Saves the created html','savemhtml(_filename)','C','HTM','mainhtml(), repllabel(),','W3','use: Used to save the created html, It is usually one of the last funtions of a method.\r\n( it saves the _manahtml to _filename)\r\n\r\nParameters:\r\n_filename (c) : The filename to save the html\r\n\r\nReturns an empty string\r\n\r\nExample:\r\n\r\nmainhtml(\'test.htm\')\r\nReplLabel(\'[name]\',  _namepar)\r\nsavemhtml(\'newfile.htm\')\r\n','2007-08-31','11:04:14','dias','0100-01-01','','',''),(267,'REPLLABEL()','Replace a label in main html','repllabel(_label, _value)','C','HTM','mainhtml(), showmainhtml()','W3','Use : Inside main html we use to display the result we have labels which we replace with proper values. repllabel is the function that replaces the values.\r\nmainhtml() must be used at first\r\n\r\nParameters: \r\n_label (c) : The label name\r\n_value (c) : The value to replace with\r\n\r\nExample\r\n\r\n##VAR _usernr=val(_par1)\r\nmainhtml(\'test.htm\')\r\nrepllabel(\'[name]\', printfld(\'etf\', \'nr01etf\', \'p19\', _usernr) )\r\nsavemhtml()\r\n','2005-01-20','21:29:32','dias','0100-01-01','','',''),(268,'DELLABEL()','Deletes A Label from main html','dellabel(_label)','C','HTM','repllabel(), findsubarea()','W3','Usage : Deletes a label from main html (Main html has been setuped with mainhtml() )\r\nArguments \r\n_label : The label it will delete\r\n\r\nExample: \r\nmainhtml(\'test.htm\')\r\n##IF _testvar=1\r\nrepllabel(\'[name]\', _myname)\r\n##ELSE\r\ndellabel(\'[name]\')\r\n##ENDIF\r\n\r\nsavemhtml(\'newfile.htm\')','2004-12-22','16:05:21','tesae','0100-01-01','','',''),(269,'FINDSUBARE()','Finds a section of a page.','findsubarea(_label1, _label2, @_subarea)','C','HTM','delsubarea(), inssubarea(),','W3','Usage : Finds a section of the mainς html which is between two labels.\r\nused mainly in conjuction with dowhile() to repeat a subsection many times (e.g. to show all the results of a search)\r\n\r\nParameters : \r\n_label1 (c) : The first label\r\n_label2 (c) : The second label\r\n_subarea : The variable to store the section\r\n\r\nExample\r\n\r\nfindsubare(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\ndowhile(\'t01\', \'t01_d\', \'p01=_log\', \'.t.\', \'p01\', _log, \'onep01\')\r\ndelsubarea(p_sub)\r\n\r\nMethod onep01\r\n-----------------------\r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublab(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublab(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublab(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2005-01-20','21:23:55','dias','0100-01-01','','',''),(270,'INSSUBAREA()','Inserts in a sebsection an alphanumeric','inssubarea(_subarea, _newsubarea)','C','HTM','findsubarea(), delsubarea()','W3','use : Inserts in main html an alphanumeric above a subsection\r\n\r\nParameters: \r\n_subarea (c) : the subsection\r\n_newsubarea (c) : The alphanumeric to insert\r\n\r\n\r\nExample:\r\n\r\nfindsubare(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\ndowhile(\'t01\', \'t01_d\', \'p01=_log\', \'.t.\', \'p01\', _log, \'onep01\')\r\ndelsubarea(p_sub)\r\n\r\nMethod onep01\r\n-----------------------\r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublab(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublab(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublab(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2005-01-20','21:25:26','dias','0100-01-01','','',''),(271,'REPLSUBLAB()','Replace a label of a subsection','replsublabel(_subarea, _label, _value)','C','HTM','inssubarea(), fiandsubarea(), delsubarea()','W3','use: replace a labelof a subsection\r\n\r\nParameters: \r\n_subarea (c) : the subsection\r\n_label (c) : The label\r\n_value (c) : The value to replace with\r\n\r\n\r\nExample\r\n\r\nfindsubare(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\nfreebrowse(\'a01\', \'a01_d\', \'apps01\', p_co, p_sco, p_sort, p_vsekk, p_type, p_lnr, _max, @p_recc, @p_lnr)\r\ndelsubarea(p_sub)\r\n\r\nPart of method apps01 \r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublab(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublab(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublab(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2005-01-20','21:30:46','dias','0100-01-01','','',''),(272,'DELSUBAREA()','Deletes a subarea from main html','delsubarea(_subarea)','C','HTM','findsubarea(), replsubarea()','W3','Usage : Deletes a subarea from output html (Main html has been setuped with mainhtml() )\r\n\r\nArguments : \r\n_subarea (c) : Subarea it will be deleted\r\n\r\n\r\nExample\r\n\r\nfindsubarea(\'<!--begsub1-->\', \'<!--endsub1-->\', @p_sub)\r\ndowhile(\'t01\', \'t01_d\', \'p01=_log\', \'.t.\', \'p01\', _log, \'onep01\')\r\ndelsubarea(p_sub)\r\n\r\nMethod onep01\r\n-----------------------\r\np_val(@p_asub, \'p_sub\')\r\n\r\nreplsublabel(@p_asub, \'[nr01]\', alltrim(str(nr01,10)))\r\nreplsublabel(@p_asub, \'[descr]\',  alltrim(p01) )\r\nreplsublabel(@p_asub, \'[appnr]\', pegcryp( strzero(nr01,10) ) )\r\n\r\ninssubarea(p_sub, p_asub)','2004-12-22','16:06:21','tesae','0100-01-01','','',''),(273,'LIKE()','Checks if a substing exists into a string (insensitive)','like(_str, _sub)','C','STR','at(), abschr()','W3','Usage : It used to see if a substring exists into a string (like at() ) but it\'is case and lanuage insensitive\r\n\r\nArguments :\r\n_str (c) : The string to look into\r\n_sub (c) : The substring to look for\r\n\r\nReturns : .t. if exists, .f. if not exists\r\n\r\nExamples :\r\n\r\nlike(\'abCd\', \'bc\') = .t.\r\nlike(\'abcd\', \'ef\')  = .f.\r\n','2004-12-28','10:40:25','tesae','0100-01-01','','',''),(274,'DLLCALL()','call functions from an external dll','DllCall( _dllname, _type, _function, param1, _param2,... )','','DLL','dllload(), dllunload()','W3','Usage: The function DllCall() executes a function which is contained in an external 32bit DLL file. When the DLL is not loaded, an implicit call to DllLoad() occurs prior to calling the DLL function. The DLL remains loaded. \r\nDllCall() is able to call functions from DLLs which comply with different calling conventions. \r\n\r\nParameters \r\n_dllname (c) : is a character string with the name of the DLL file that contains the function <cFuncName> . The file name must be specified when the DLL is not yet loaded (refer to DllLoad()). \r\n   Instead of a file name, the numeric handle <nDllHandle> of an already loaded DLL can be passed. \r\n\r\n_type (n) : the dll type \r\n  _type = 4 OS/2 API\r\n           = 8 C type\r\n           = 32 Win32 API\r\n           = 128 XPP++ \r\n\r\n_function (c) : designates the name of the DLL function to be executed. A function name must consist of alphanumeric characters. \r\nAs an alternative, the numeric ordinal <nOrdinal> of the DLL function may be passed. This avoids a lookup of the function name in the symbol table of the DLL. \r\n\r\n_param1, _param2, .... : the arguments for function. Arguments must have the correct data types as required by the called function. If a value of an illegal data type, DllCall() will generate a runtime error. The exception in this case is the value NIL. It is accepted and passed as the numeric value 0 to the DLL function. \r\n\r\nReturn \r\nDllCall() returns the return value of the executed DLL function. If the DLL complies with the Xbase++ type, the value may be of any Pegasus data type. Otherwise, the return value is of numeric data type. \r\nIn case of a runtime error, the value substituted by the error handler is returned. \r\n\r\nExternal DLLs \r\nWhen parameters are passed to functions which are not type of Xbase++, only values of the data type \"character\", \"numeric\" or \"logical\" can be used. They are converted to C data types as is shown in the following table:  \r\n\r\nConversion of data types to C \r\n  Data type  Passing as value      Passing by reference    \r\n  Character  const *char           *char                   \r\n  Numeric    long                  *long                                                                              \r\n  FLOAT is converted    *unsigned long  to unsigned                                   \r\n  Logical    long                  *long                   \r\n  NIL        long with value zero  n/a                     \r\n\r\nExample - 1 \r\n\r\n## Calling a system API function \r\n\r\n## A function of the Windows system API is executed in this example. \r\n## The function is contained in the file KERNEL32.DLL. It changes \r\n## the volume label of a disk drive. \r\n\r\n## Shortest syntactical notation \r\nDllCall( \"KERNEL32.DLL\"   , 32, \"SetVolumeLabelA\", \"D:\", \"MY_VOLUME\") \r\n \r\n## The normal way \r\n\r\np_val(@nDll, [DllLoad( \"KERNEL32.DLL\" )])\r\n         \r\n##IF nDll <> 0 \r\nDllCall( nDll, 32,  \"SetVolumeLabelA\", \"D:\", \"MY_VOLUME\") \r\n ### Release DLL \r\nDllUnload( nDll ) \r\n##ENDIF \r\n \r\n##RETURN \r\n\r\n','2004-12-28','11:29:32','tesae','0100-01-01','','',''),(275,'DLLLOAD()','Loads a dll for using it\'s functions','dllload(_dllname)','N','DLL','dllunloda(), dllcall()','W3','Usage : Loads an external dll with functions to use. It\'s functions are available until dllunload()\r\n\r\nArguments\r\n_dllname (c) : the dll name (as file)\r\n\r\nReturns (n) : The handler of dll. It is used to dllcall. If 0 then dll isn\'t loaded. Use doserror() to get error code. \r\n\r\nExample - 1 \r\n\r\n## Calling a system API function \r\n\r\n## A function of the Windows system API is executed in this example. \r\n## The function is contained in the file KERNEL32.DLL. It changes \r\n## the volume label of a disk drive. \r\n\r\n## The normal way \r\np_val(@nDll, [DllLoad( \"KERNEL32.DLL\" )])\r\n         \r\n##IF nDll <> 0 \r\nDllCall( nDll, 32,  \"SetVolumeLabelA\", \"D:\", \"MY_VOLUME\") \r\nDllUnload( nDll ) \r\n##ENDIF \r\n \r\n##RETURN \r\n\r\n','2019-05-02','17:30:57','tesae','0100-01-01','','',''),(276,'DLLUNLOAD()','unloads (closes) a dll','dllunload(_han)','L','DLL','dllload(), dllcal()','W3','Usage : Unloads a dll that is loaded with dllload()\r\n\r\nArguments :\r\n_han (n) : the dll handler\r\n\r\nReturns (l) : .t. if the dll unloaded, .f. otherwise\r\n\r\nExample - 1 \r\n\r\n## Calling a system API function \r\n\r\n## A function of the Windows system API is executed in this example. \r\n## The function is contained in the file KERNEL32.DLL. It changes \r\n## the volume label of a disk drive. \r\n\r\n## The normal way \r\np_val(@nDll, [DllLoad( \"KERNEL32.DLL\" )])\r\n         \r\n##IF nDll <> 0 \r\nDllCall( nDll, 32,  \"SetVolumeLabelA\", \"D:\", \"MY_VOLUME\") \r\nDllUnload( nDll ) \r\n##ENDIF \r\n \r\n##RETURN \r\n\r\n','2004-12-28','11:34:09','tesae','0100-01-01','','',''),(277,'* 3.00','What\'s new to V 3.00','','','','','','Changes From V 2.00\r\n---------------------\r\n\r\n1. Screen Classes\r\n-----------------\r\na. We can define password fields\r\nb. We can have different font per get field\r\nc. Button bars can have types as 1, 2, 3, 4 (3d look) and 11, 12, 13, 14 (not 3d look)\r\n   Also we can define the buttons size and type into button bar. We can have until 4 button bars per screen. \r\nd. Buttons have tooltips \r\ne. We can have icon for screen and browse\r\nf. The browse style is on screen clas and not to function cpegbrowse() (_style 1=black, 2=none, 3=3D (default))\r\ng. We can define fileds that are not changed with repldata. \r\nh. You can have only view check and radios\r\ni. Dialogs & browses offset (top left not 0,0 but seted to sets.dbf)\r\nj. To browse and screen we can have diferrent background colors per cell. Also different font. \r\n\r\n2. Printouts \r\n------------\r\na. On dialog box (if exists) can have title ([tit])\r\n\r\n3. Browses\r\n-------------------------\r\na. The buttons (of keys) have additions fields that defines \r\n   image (for button)\r\n   tooltip for button\r\nb. When Browse a Pegasus dBase with a condition work the keys (pgdn, end, home, pgup)\r\n\r\n4. Functions\r\n-------------\r\nclosepegasus() -> closepegas()\r\ninitrec(_file, _desc, _new, _only_true_fields)\r\nrepldata(_file, _desc, _new, _all)  \r\ncpegbrowse() has no argument style\r\nmsgwait() updates the current dialog without flashing another box. \r\nchoosecolor() -> choosecolo()\r\nget_fonts() funtion to change the fonts of application\r\nhtml handling functions\r\n\r\n\r\n5. Icons\r\n--------\r\nPegasus uses the icons (bmp subdirestory) by default for\r\npegasus.ico -> peg4win3\r\npegasus1.ico -> newwindow()\r\npegasus2.ico -> default dialog icons\r\npegasus3.ico -> default Browse icons\r\npegasus4.ico -> graph icon\r\n\r\n\r\n6. menus\r\n--------\r\na. menus() can have bmp files \r\n\r\n7. sets.dbf\r\n-----------\r\ntop, left coordinaties\r\n\r\n','2005-12-02','12:19:44','dias','0100-01-01','','',''),(278,'ADIR()','Fills arrays with directory information','adir(_mask, _afile, _asize, _adate, _atime, _aattr)','N','ARRAY','aadd()','W3','Description \r\nThe environment function ADir() places information about the files of an directory file into a set of arrays. First only _mask is passed to the function in order to determine the number of matching files. This number is used to dimension the set of arrays to be filled in a second call to ADir(). \r\n\r\n\r\nArguments\r\n[_mask] (c) :  is a character string specifying the drive, path and file from which file information is read into an array. A file mask can be defined by using \"wildcards\" (* or ?) as part of the file name. If no _mask is specified, \"*\" is used (default for the HPFS file system), and all file information in the current path is read. If Pegasus is running on a FAT file system and all files in the current path are to be listed, then \"*.*\" must be specified as the file. \r\n\r\n[_aFile] (a) :  is an array into which the names of the files in the directory are placed. Each element of _aFile contains a character string. \r\n\r\n[_asize] (a) :  is an array into which the size of the files are placed. Each element of  _asize contains a numeric value. \r\n\r\n[_aDate] (a) :  is an array into which the date of the files are placed. Each element of  _aDate contains a date value. \r\n\r\n[_aTime] (a) : is an array into which the time of the files are placed. Each element of _aTime contains a character string with the country specific time format defined in the system settings. \r\n\r\n[_aattr] (a) : is an array into which the attributes of the files are placed. Each element of _aattr contains one ore more of the following letters: \"D\",\"A\",\"R\",\"S\",\"H\".  If _aattr is specified hidden files and system files may be detected. \r\n\r\nReturn \r\nThe return value of ADir() is a positive integer corresponding to the number of files which where found matching _mask. \r\n\r\n\r\nExample \r\n\r\n### The example generates an array, fills it with names of \r\n### DBF files located in a specific sub-directory and then displays \r\n### the information. \r\n \r\np_val(@nCount, \"ADir( \'*.DBF\' )\"\r\np_val(@aFileNames, \"Array( nCount )\")\r\nADir( \"*.DBF\", aFileNames ) \r\n\r\n### now array afilenames contains all files of current directory. \r\n','2004-12-29','10:28:35','tesae','0100-01-01','','',''),(279,'ODBC AND PEGASUS','Using RDBMS from Pegasus Via ODBC drivers','','','ODBC','','B','Pegasus V 3.00 and ODBC \r\n------------------------\r\nYou can use ODBC drivers from your Pegasus Application to manipulate data of an RDBMS. \r\nThe steps you must do are :\r\n\r\nStep 1. \r\n-------\r\nInstall odbc driver with \"odbcad32.exe\" (odbc 32bit manager)\r\n\r\nStep 2. \r\n--------\r\nCopy odbcbde.dll and odbccut10.dll to pegasus folder (with others dll and exe)\r\n\r\nStep 3. \r\n--------\r\nBefore open tables you must execute\r\n\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcon() connects to odbc driver with DSN=TEST10 (see odbc amdministrator). \r\nIF returns .f. then the connection is impossible. \r\n\r\nStep 4. \r\n---------\r\nOpens a table from dbase with odbcuse() function but using all its arguments. i.e.\r\n\r\nodbcuse(\'pelates\', .f., \'etf\')\r\n### opens table pelates with alias name \'etf\'. You must use an alias name in this case. \r\n\r\nYou can use SELECT commands for viewing a part of table.i.e.\r\nodbcuse(\'SELECT * FROM pelates WHRE nr01>=10;\', .f., \'etf\')\r\n\r\nWhen you opens a table (or a query) with odbuse(), you can use all pegasus db commands. \r\nThe command set_order() doesn\'t works. \r\n\r\nATTENTION!!!!\r\n*****************\r\nIf the tables to your RDBMS are Pegasus Tables, then you must to \r\na. Have a table with name \"p07\" and 2 fields p01=char(3), p010=Int(11). Field p01 is unique and primary key. \r\nThis table holds the counters for nr01 fields of your tables. \r\n\r\nb. All tables have a filed nr01 int(10) that is the primary Key andi IT\'is NOT auto_increment\r\nYou must use the functions odbcnew_rec() and odbcunnew_rec()\r\n\r\n\r\n\r\nSee the odbc library of Pegasus Reference Manual.\r\n\r\n','2005-07-27','18:06:46','dias','0100-01-01','','',''),(280,'ODBCCON()','Establish an ODBC connection via an ODBC driver','odbccon(_constr)','L','ODBC','odbcuse()','B','Connecto to an ODBC database. \r\nodbc_obj keep the session object. \r\nObject cargo variable has the information as below:\r\n       odbc_obj:cargo[1] = names as string (SET NAMES of data base for MySQL Server)\r\n       odbc_obj:cargo[2] = code page of character Set. Used to MySQL databases. (for Pegasus WebApp)\r\n       odbc_obj:cargo[3] = multy for character Strings (for Pegasus WebApp)\r\n       odbc_obj:cargo[4] = Wait time Out in seconds (for MySQL db). Used to try Reconnection if expired\r\n       odbc_obj:cargo[5] = Last date connection used. Used to try Reconnection if expired\r\n       odbc_obj:cargo[6] = Last time connection used. Used to try Reconnection if expired\r\n       odbc_obj:cargo[7] = Array of searched elements. Is an array can be used of recarray(). Used to keep information localy about Session. \r\n                                 odbcistable() adds {\'#TBL#<tablename>\', \'*\'}  if table exists\r\n\r\n\r\n\r\nAfter connection executes the odbc_getnames()  and odbcset_names() function. They are usefull to MySQL Connections for different character sets (see functions). \r\n\r\nParameters :\r\n_constr (c) : the connection string to ODBC Driver\r\n\r\nA character string containing information required for establishing a connection to a server can be specified with the first parameter. It is a list of name/value pairs separated with semi-colons.  \r\nPossible name/value pairs in a connection string \r\n\r\n  Name    Value description                                           \r\n\r\n  DBE *)  The database engine for accessing the remote data source    \r\n  SERVER  The server name where the data source resides               \r\n  UID     The user ID required for login                              \r\n  PWD     The password required for login                             \r\n  DSN     ODBC datasource name                                        \r\n  DRIVER  ODBC driver name                                            \r\n\r\n *) required by odbccon() and its value is allways \'ODBCDBE\'\r\n\r\nInformation that must be encoded in the connection string depends on the accessed server and the database engine used. A DacSession object does not use all possible information but passes the connection string without the DBE information on to the server or ODBC/Database Driver. An example for accessing the Advantage Database Server with the ADSDBE is as follows: \r\n\r\nReturns .t. if connection is succesfull. Else returns .f.\r\nAlso public variable odbc_obj, gets the session object that created. \r\n\r\nIf odbc driver is fo MySQL executes the odbcgetnames()\r\nExamples:\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n','2014-04-09','17:30:51','tesae','0100-01-01','','',''),(281,'ODBCEND()','closes the ODBC driver connection','odbcend(_session)','C','ODBC','odbccon()','B','closes the connection to ODBC driver. The connection has been established with odbccon() function. \r\n\r\nParameters \r\n  _session (o) : The session to close. If parameter is missed closes the default session. It is usefull when you open more than one odbc sessions to an Application\r\nReturns : The empty string\r\n\r\n','2005-07-20','14:13:22','dias','0100-01-01','','',''),(282,'ITISODBC()','Check is current work area is a table and not a dbf file','itisodbc(_alias)','L','ODBC','odbccon(), odbcend()','B','Purpose : When opens a table via an ODBC, Pegasus sees it as a Pegasus dBase. Because the usage of this table isn\'t exactly the same as dbf dBases, we need to now if it is a tabel or a dbf file. itisodbc() checks if it is a table. \r\n\r\nParameters \r\n  _alias (c) : the alias name of table\r\nReturns .t. if _alias is a table (via an ODBC driver)\r\n','2005-07-20','14:12:56','dias','0100-01-01','','',''),(283,'ODBCEXEC()','Executes an SQL command to RDMBS','odbcexec(_command, _type, _session, _nomsg)','C','ODBC','odbccon(), odbcuse(), odbcget(), odbcput()','B','Description : When you open an RDBMS via an ODBC driver you can execute SQL commands. \r\n\r\nParameters\r\n  _command (c) : The command to execute. \r\n                        Pegasus Executes odbcCommand(_command). See function description.\r\n                        IF _session:cargo[2] <> 0 (see odbcget_names) then  _command=strchcp(_command, 0, _session:cargo[2]) \r\n  _type (l) : If execution returns data =.f. else =.t.\r\n  _session (o) : The session to close. If parameter is missed closes the default session. It is usefull when you open more than one odbc sessions to an Application\r\n   _nomsg (l) : If .t. then no error message appears if an error exists. Default values=.f.\r\n\r\n\r\nRemars\r\n*********\r\nYoucan use the public variable odbc_noerr. If it is .t. then no error message appears for any odbc command.\r\n\r\nReturns : the empty string\r\n\r\nIf an error exists then \r\n   odbc_error = Error Code (number)\r\n   odbc_ermsg = Error Message\r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\n### executes commands\r\n    odbcexec(\"INSERT INTO odb (nr01,p19,p2) VALUES(15,\'test1\', \'test11\');\",  .f.)\r\n    odbcexec(\"REPLACE INTO odb (nr01,p19,p2) VALUES(16,\'test16\', \'test1616\');\",  .f.)\r\n    odbcexec(\"REPLACE INTO odb (nr01,p19,p2) VALUES(6,\'test6\', \'test66\');\",  .f.)\r\n    odbcexec(\"UPDATE odb SET p2=p19 WHERE nr01>10;\",  .f.)\r\n    odbcexec(\"DELETE FROM odb WHERE nr01<4;\",  .f.)\r\n','2016-05-09','12:12:53','tesae','0100-01-01','','',''),(284,'ODBCGET()','Executes an SQL command and returns a value','odbget(_command, _session, _type)','','ODBC','odbccon(), odbcexec(), odbcuse()','B','Description : When you open an RDBMS via an ODBC driver you can execute SQL commands. With odbcget youucan get values from these commands. \r\n\r\nParameters\r\n  _command (c) : The command to execute\r\n                        Pegasus Executes odbcCommand(_command). See function description.\r\n  _session (o) : The session to close. If parameter is missed closes the default session. It is usefull when you open more than one odbc sessions to an Application\r\n  _type (l) : If execution checks data =.f. else =.t.\r\n\r\nReturns : the appropriate value\r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\n### executes commands\r\n    msginfo( odbcget(\"SELECT count(*) FROM odb WHERE nr01>0\") )\r\n','2016-05-09','12:13:24','tesae','0100-01-01','','',''),(285,'ODBCPUT()','Executes a select command to RDBMS and the result copied to a temporary dbf file','odbcput(_command, _session, _filename, _create_new_file, _logic_fields, _silence)','C','ODBC','odbccon(), odbcsettypes(), odbcsettbl()','B','Description : When you open an RDBMS via an ODBC driver you can execute SQL commands. The result of these commands are copied to a dbf file (temporary). So you can manipulate these data with your known Pegasus Functions. \r\n\r\nAfter odbcput() the temporary file is closed. You must open it using fuse(). \r\nParameters\r\n  _command (c) : The command to execute\r\n                        Pegasus Executes odbcCommand(_command). See function description.\r\n  _session (o) : The session to use. If parameter is missed usses the default session. It is usefull when you open more than one odbc sessions to an Application\r\n  _filename (c) : the dbf file to copy the exported data\r\n_create_new_file (l): Optional. Default=.t.. If it is .t. then odbcput() creates _filename. \r\n                              If it is .f., it uses the _filename. In this case, _filename must be closed before call odbcput(). \r\n_logic_fields (l) : Oprional. If create_new_file=.f. then _logic_fields=.t. if the _filename has fields Logic Type they are updated from numeric fields of RDBMS as .t. if value=1. Default=.f.\r\n\r\n_silence (l) : Optional. Default=.t. If it is .f. then appears waiting message. \r\n\r\nReturns : the empty string\r\n\r\nATTENTION! Because the data types of an RDBMS aren\'t the same with Pegasus data Types, Pegasus uses the odbcsettbl() function to adapt the data types. \r\nAlso if RDBMS table has Blob fields, those aren\'t transfered right to memo fields of dbf files.\r\n\r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\n### executes commands\r\nodbcput(\"SELECT * FROM odb WHERE nr01>100;\" , , p_temp )\r\nfuse(p_temp, .t.)\r\ndbgotop()\r\n\r\n','2016-05-09','12:13:49','tesae','0100-01-01','','',''),(286,'ODBCTYPES()','returns the data types of ODBC driver','odbctypes(_session)','C','ODBC','odbcxtypes(), odbctbltypes(), odbctbl()','B','Description : The RDBMS tables have their own data types. These data types atren\'t the same as Pegasus data Types. So you must adapt the RDBMS data types to Pegasus Data Types and vice versa, if you want to import and export data. \r\nPegasus assignes the ODBC data type to a Letter. Some letters (I,T,F,X) aren\'t real Pegasus Data Types. So you must use the odbcsettypes() funtion to assign these letters to real Pegasus data types. \r\nThe functions odbctypes(), odbcxtypes(), odbctbltypes(), odbctbl() gives you the information you need to use with right arguments the odbcsettypes() function. \r\n\r\nParameters\r\n  _session (o) : The session to close. If parameter is missed closes the default session. It is usefull when you open more than one odbc sessions to an Application\r\n\r\nReturns : a memo with odbc data type => Pegasus Data Type.  \r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcuse(\'odb\', .f., \'odb\')\r\ndbgotop()\r\n\r\nmsginfo( odbctypes() )\r\nmsginfo( odbcxtypes() )\r\nmsginfo( odbctbltypes() )\r\nmsginfo( odbctbl() )\r\nodbcsettypes(\'\', \'TX\', \'IF\' , \'\', \'V\')\r\n\r\nRELVARS(\'odbV01\')','2005-07-20','14:13:45','dias','0100-01-01','','',''),(287,'ODBCXTYPES()','Shows the Pegasus data Types of a table','odbcxtypes(_session)','C','ODBC','odbctypes()','B','Description : The RDBMS tables have their own data types. These data types atren\'t the same as Pegasus data Types. So you must adapt the RDBMS data types to Pegasus Data Types and vice versa, if you want to import and export data. \r\nPegasus assignes the ODBC data type to a Letter. Some letters (I,T,F,X) aren\'t real Pegasus Data Types. So you must use the odbcsettypes() funtion to assign these letters to real Pegasus data types. \r\nThe functions odbctypes(), odbcxtypes(), odbctbltypes(), odbctbl() gives you the information you need to use with right arguments the odbcsettypes() function. \r\n\r\nParameters\r\n  _session (o) : The session to close. If parameter is missed closes the default session. It is usefull when you open more than one odbc sessions to an Application\r\n\r\nReturns : a memo with Pegasus Data Type => odbc data type \r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcuse(\'odb\', .f., \'odb\')\r\ndbgotop()\r\n\r\nmsginfo( odbctypes() )\r\nmsginfo( odbcxtypes() )\r\nmsginfo( odbctbltypes() )\r\nmsginfo( odbctbl() )\r\nodbcsettypes(\'\', \'TX\', \'IF\' , \'\', \'V\')\r\n\r\nRELVARS(\'odbV01\')','2005-07-20','14:13:55','dias','0100-01-01','','',''),(288,'ODBCTBLTYPES()','Shows the odbc data types of current table','odbctbltypes()','C','ODBC','odbctypes(), odbcxtypes()','B','Description : The RDBMS tables have their own data types. These data types atren\'t the same as Pegasus data Types. So you must adapt the RDBMS data types to Pegasus Data Types and vice versa, if you want to import and export data. \r\nPegasus assignes the ODBC data type to a Letter. Some letters (I,T,F,X) aren\'t real Pegasus Data Types. So you must use the odbcsettypes() funtion to assign these letters to real Pegasus data types. \r\nThe functions odbctypes(), odbcxtypes(), odbctbltypes(), odbctbl() gives you the information you need to use with right arguments the odbcsettypes() function. \r\n\r\r\n\r\nReturns : a memo with odbc data type => Pegasus Data Type tha current table uses\r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcuse(\'odb\', .f., \'odb\')\r\ndbgotop()\r\n\r\nmsginfo( odbctypes() )\r\nmsginfo( odbcxtypes() )\r\nmsginfo( odbctbltypes() )\r\nmsginfo( odbctbl() )\r\nodbcsettypes(\'\', \'TX\', \'IF\' , \'\', \'V\')\r\n\r\nRELVARS(\'odbV01\')','2005-07-20','14:13:42','dias','0100-01-01','','',''),(289,'ODBCTBL()','Shows the structure of current table','odbctbl()','C','ODBC','odbctypes(), odbcxtypes()','B','Description : The RDBMS tables have their own data types. These data types atren\'t the same as Pegasus data Types. So you must adapt the RDBMS data types to Pegasus Data Types and vice versa, if you want to import and export data. \r\nPegasus assignes the ODBC data type to a Letter. Some letters (I,T,F,X) aren\'t real Pegasus Data Types. So you must use the odbcsettypes() funtion to assign these letters to real Pegasus data types. \r\nThe functions odbctypes(), odbcxtypes(), odbctbltypes(), odbctbl() gives you the information you need to use with right arguments the odbcsettypes() function. \r\n\r\nReturns : a memo with <field name>, <Pegasus Data Type>, <size>=> odbc size\r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcuse(\'odb\', .f., \'odb\')\r\ndbgotop()\r\n\r\nmsginfo( odbctypes() )\r\nmsginfo( odbcxtypes() )\r\nmsginfo( odbctbltypes() )\r\nmsginfo( odbctbl() )\r\nodbcsettypes(\'\', \'TX\', \'IF\' , \'\', \'V\')\r\n\r\nRELVARS(\'odbV01\')','2005-07-20','14:13:39','dias','0100-01-01','','',''),(290,'ODBCSETTBL()','Adapte odbc datatypes to Pegasus Data Types for a table','odbcsettbl()','C','ODBC','odbctypes(), odbcsettypes()','B','Description : The RDBMS tables have their own data types. These data types atren\'t the same as Pegasus data Types. So you must adapt the RDBMS data types to Pegasus Data Types and vice versa, if you want to import and export data. \r\nPegasus assignes the ODBC data type to a Letter. Some letters (I,T,F,X) aren\'t real Pegasus Data Types. So you must use the odbcsettypes() funtion to assign these letters to real Pegasus data types. \r\nThe functions odbctypes(), odbcxtypes(), odbctbltypes(), odbctbl() gives you the information you need to use with right arguments the odbcsettypes() function. \r\n\r\nodbcsettbl(), sets for current table the relation between Pegasus dat Types (including I,T,F,X) and Real Pegasus Data Types (C, M, N, D, L)\r\n\r\n\r\nReturns : the empty string\r\n\r\nExamples\r\n\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcuse(\'odb\', .f., \'odb\')\r\ndbgotop()\r\n\r\nmsginfo( odbctypes() )\r\nmsginfo( odbcxtypes() )\r\nmsginfo( odbctbltypes() )\r\nmsginfo( odbctbl() )\r\nodbcsettypes(\'\', \'TX\', \'IF\' , \'\', \'V\')\r\n\r\nRELVARS(\'odbV01\')','2005-07-20','14:13:33','dias','0100-01-01','','',''),(291,'ODBCSETTYPES()','Defines the Pegasus Data Types that assigned the odbc types','odbcsettypes(_strdate, _strchar, _strnum, _strlog, _strmemo)','C','ODBC','odbccon()','B','Desription : When you see a table via ODBC driver, pegasus translate ODBC data types to appropriate Pegasus Data Types (c, n, d, l, m)\r\nWhen you want to copy tables data to a dbf file (odbcput) you must assign all ODBC data types to real Pegasus Data Types. \r\n\r\nPegasus translate some ODBC data types to letter T,X (character), I, F (numeric), V (memo). But because the nature of ODBC drivers maybe this translation isn\'t right, or need some more. \r\n\r\nSo you must see (odbctypes()) the types of ODBC driver and assign them to Real Pegasus Data Types. \r\n\r\nParameters\r\n  _strdate (c) : Letters for date types\r\n  _strchar (c) : Letters for character types\r\n  _strnum (c) : Letters for numeric types\r\n  _strlog (c) : Letters for logical types\r\n  _strmemo (c) : Letters for memo types\r\n\r\nExamples\r\n### opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n### define letter assignes \r\nodbcsettypes( \'\', \'TX\', \'IF\', \'\', \'V\')\r\n\r\n\r\r\n\r\n','2005-07-21','17:41:49','dias','0100-01-01','','',''),(292,'ODBCUSE()','Opens a table like a dbf file','odbcuse(_table, _mode, _alias, _sess)','C','ODBC','odbccon()','B','Description : Opens a table via ODBC driver. Then this table is ready to use like a dbf Data Class\r\n\r\nParameters\r\n  _table (c) : Table name of SELCT command\r\n                        Pegasus Executes odbcCommand(_command). See function description.\r\n                        IF _session:cargo[2] <> 0 (see odbcget_names) then  _command=strchcp(_command, 0, _session:cargo[2]) \r\n\r\n  _mode (l) : The mode to open the table. Usually .f.\r\n  _alias (c) : alias name for workarea\r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n\r\nReturns : Empty string\r\n\r\n## opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\nodbcuse(\'pelates\', .f., \'odb\')\r\ndbgotop()\r\nreplfld(\'odb\', \'p19\', \"\'test\'\")\r\n\r\nodbcuse(\"SELECT * FROM pelates WHERE p19=\'test\';\", .f., \'odb\')\r\ndbgotop()\r\nmsginfo( p19 )\r\n\r\nodbcuse(\"SELECT * FROM pelates GROUP BY p19;\", .f., \'odb\')\r\nseek_var( \'test\' )\r\nmsginfo( p19 )\r\n\r\n\r\n\r\n\r\n','2016-05-09','12:14:12','tesae','0100-01-01','','',''),(293,'ODBC AND MYSQL','Using MySQL RDMS via Pegasus','','','ODBC','','B','mySql Server 5.00\r\n*********************\r\nUse MyODBC 3.51.12.00 (download it from www.mysql.com)\r\nConnection String \r\nserver=[server];database=[dbase_name];user=[user_name];password=[password];option=2097155;driver={MySQL ODBC 3.51 Driver}\r\n\r\n\r\n\r\nmySQL SERVER 4.00\r\n***************************\r\nIf you want to manage mySql RDMBS from Pegasus Application you need an ODBC driver for mySql. \r\nWe use the  MyODBC-3.51.11-2-win (download it from www.mysql.org). \r\nWhen you setup the ODBC driver check the following flags\r\n\r\n Flags 1 Check ALL\r\n\r\n Flags 2 check  ALL exept \r\n         Don\'t cache results\r\n\r\n Flags 3 check ALL exept \r\n         Force use of named pipes\r\n         Read Options from my.cnf\r\n\r\n\r\nATTENTION!!! \r\na. If we want to use mySql dBase from Pegasus for WIN we must set and use a User DSN. If we use it from Pegasus for Web we must set to Server a SYSTEM DSN. \r\n\r\nb. If we want the same use as Pegasus dbf DataClass, all the tables of  dBase must have the field nr01 with \r\n   type = integer  \r\n   size=10\r\n   primary key\r\n   autoincrement\r\n\r\nc. Into dBase we use must exists a teble with fields\r\n    p01 CHAR 6     \r\n    p03 CHAR 30\r\n    p010 INTEGER 10\r\n\r\n\r\n','2006-05-25','10:32:10','dias','0100-01-01','','',''),(294,'PRINTNEWPG()','end the current page and create a new one','printnewpg()','C','PRINT','printform(), printbitmap(), printtext()','W3','Use to: Ends the current page and starts a new one. When you create a printout with printform() the function creates a new page (with header) and end this page with footer. If you want to end the current page you can use printnewpg()\r\n\r\nParameters :\r\nnone\r\n\r\nReturns an empty string\r\n\r\nExample\r\nprintnewpg()\r\n','2005-04-25','17:22:25','dias','0100-01-01','','',''),(295,'OCXLOAD()','Loads an ocx library to use it\'s methods and properties','ocxload(_ocxname)','O','OCX','ocxunload(), ocxcall(), ocxget(), ocxset()','W3','Purpose: If you want to use methods and properties from an ActiveX, COM, .NET or OCX component, you must load it to memory. Then you can use it\'s methods and properties. \r\n\r\nParameters :\r\n_ocxname (c) : The name of compnent you want load\r\n\r\nReturns the object it creates. \r\n\r\nExamples:\r\np_val(@p_camocx, \"ocxload(\'OPOS.FiscalPrinter.1.7\')\")\r\nocxcall(p_camocx, \"Open\", \"MicFscPrtEJ\")\r\nocxcall(p_camocx, \"ClaimDevice\", 1000)\r\nocxset(p_camocx, \"DeviceEnabled\", .t.)\r\n\r\n##IF ocxget(p_camocx, \'Claimed\') =.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n##IF ocxget(p_camocx, \'DeviceEnabled\')=.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n\r\n##RETURN\r\n','2005-06-10','19:11:45','dias','0100-01-01','','',''),(296,'OCXUNLOAD()','Unloads an ocx library','ocxunload(_ocxobj)','C','OCX','ocxload(), ocxcall(), ocxget(), ocxset()','W3','Purpose: Unloads an ocx object. \r\n\r\nParameters :\r\n_ocxobj (o) : The ocx object\r\n\r\nReturns the empty string\r\n\r\nExamples:\r\np_val(@p_camocx, \"ocxload(\'OPOS.FiscalPrinter.1.7\')\")\r\nocxcall(p_camocx, \"Open\", \"MicFscPrtEJ\")\r\nocxcall(p_camocx, \"ClaimDevice\", 1000)\r\nocxset(p_camocx, \"DeviceEnabled\", .t.)\r\n\r\n##IF ocxget(p_camocx, \'Claimed\') =.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n##IF ocxget(p_camocx, \'DeviceEnabled\')=.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n\r\n##RETURN\r\n','2005-06-10','19:17:58','dias','0100-01-01','','',''),(297,'OCXGET()','Gets the value of an ocx Property','ocxget(_oocx, _property)','','OCX','ocxunload(), ocxcall(), ocxdget(), ocxset()','W3','Purpose: Gets the value from a Property of an OCX object\r\n\r\nParameters :\r\n_oocx (o) : The ocx object \r\n_property (c) : The name (as string) of property. \r\n\r\nReturns the value of property.\r\n\r\nExamples:\r\np_val(@p_camocx, \"ocxload(\'OPOS.FiscalPrinter.1.7\')\")\r\nocxcall(p_camocx, \"Open\", \"MicFscPrtEJ\")\r\nocxcall(p_camocx, \"ClaimDevice\", 1000)\r\nocxset(p_camocx, \"DeviceEnabled\", .t.)\r\n\r\n##IF ocxget(p_camocx, \'Claimed\') =.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n##IF ocxget(p_camocx, \'DeviceEnabled\')=.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n\r\n##RETURN\r\n','2005-06-10','19:21:58','dias','0100-01-01','','',''),(299,'OCXSET()','Sets value to a Property','ocxset(_oocx, _property, _val)','C','OCX','ocxunload(), ocxcall(), ocxget(), ocxdget()','W3','Purpose: Sets value to a property. \r\n\r\nParameters :\r\n_oocx (o) : The ocx object\r\n_property (c) : The property name\r\n_val : The new value of property.  \r\n\r\nReturns the empty string\r\n\r\nExamples:\r\np_val(@p_camocx, \"ocxload(\'OPOS.FiscalPrinter.1.7\')\")\r\nocxcall(p_camocx, \"Open\", \"MicFscPrtEJ\")\r\nocxcall(p_camocx, \"ClaimDevice\", 1000)\r\nocxset(p_camocx, \"DeviceEnabled\", .t.)\r\n\r\n##IF ocxget(p_camocx, \'Claimed\') =.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n##IF ocxget(p_camocx, \'DeviceEnabled\')=.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n\r\n##RETURN\r\n','2006-05-31','12:56:16','dias','0100-01-01','','',''),(300,'OCXCALL()','Calls a Method','ocxcal(_oocx, _method, _param1, _param2, ......)','O','OCX','ocxunload(), ocxdcall(), ocxget(), ocxset()','W3','Purpose: It calls a method (function) of ocx object and returns the value. \r\n\r\nParameters :\r\n_oocx (c) : The ocx object\r\n_method (c) : The method name\r\n_param1, _param2, ... : The parameters of method. Parameters can be passed as values or as arrays ({valtype, value})\r\n\r\nReturns the value of method\r\n\r\nExamples:\r\np_val(@p_camocx, \"ocxload(\'OPOS.FiscalPrinter.1.7\')\")\r\nocxcall(p_camocx, \"Open\", \"MicFscPrtEJ\")\r\nocxcall(p_camocx, \"ClaimDevice\", 1000)\r\nocxset(p_camocx, \"DeviceEnabled\", .t.)\r\n\r\n##IF ocxget(p_camocx, \'Claimed\') =.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n##IF ocxget(p_camocx, \'DeviceEnabled\')=.f.\r\np_val(@p_fiscalok, \".f.\")\r\nocxunload(p_camocx)\r\n##RETURN\r\n##ENDIF\r\n\r\n##RETURN\r\n','2005-06-10','20:07:58','dias','0100-01-01','','',''),(303,'ODBCWHILE()','executes a method to selected records of a table','odbcWhile(_select, _alias, _method, _sess, _cond, _silen)','N','ODBC','dobcdowhile(), odbcuse()','B','Description : Executes a SELECT query to via ODBC driver. For any record of \"SELECT\" result, executes a Pegasus Method\r\n\r\nParameters\r\n  _select (c) : SELECT query\r\n  _alias (c) : alias name for workarea it will create\r\n  _method (c) : Pegasus Method will be executed for every record. \r\n  _sess (o) : Optional. The session to look. Default the current Session. \r\n  _cond (c) : Optional. A condition to stop dowhile() . When exists the dowhile stops when _cond = .t.\r\n  _silen (l): Optional. Default = .f. If .t. then not apperas Pegasus executing icon \r\n\r\nReturns : The amount of records \"SELECT\" returned\r\n\r\nExample\r\n\r\nodbcwhile(\"SELECT * FROM etf WHERE p19 LIKE \'%nik%\' ORDER BY p19;\", \'etf\', \'etfp011\')\r\n\r\n\r\n','2019-09-27','15:52:59','tesae','0100-01-01','','',''),(304,'ODBCDOWHILE()','Executes a method to selected records','odbcDoWhile(_table, _alias, _method, _where, _orderby, _limitfrom, _limit, _sess, _cond, _silen)','N','ODBC','odbcwhile()','B','Description : Executes a SELECT query to via ODBC driver. For any record of \"SELECT\" result, executes a Pegasus Method. It is similar to odbcwhile(). \r\n\r\nParameters\r\n  _table (c) : The table to search for records\r\n  _alias (c) : alias name for workarea it will create\r\n  _method (c) : Pegasus Method will be executed for every record. \r\n  _where (c) : condition to search for (use sql operators)\r\n                  If the first character of _where is = (the equal symbol) Pegasus executes an odbctrans(_where) \r\n  _orderby (c) : list of fields to order by, the result\r\n  _limitfrom (n) : The amount of records to ignore. If 0 it starts from 1st record it matches\r\n  _limit (n) : The amount of records to find. If 0 it finds all records that matches\r\n  _sess (o) : Optional. The session to look. Default the current Session. \r\n  _cond (c) : Optional. A condition to stop dowhile() . When exists the dowhile stops when _cond = .t.\r\n  _silen (l): Optional. Default = .f. If .t. then not apperas Pegasus executing icon \r\n\r\nReturns : The amount of records \"SELECT\" returned\r\n\r\nExample\r\n\r\nodbcwhile(\"SELECT * FROM etf WHERE p19 LIKE \'%nik%\' ORDER BY p19;\", \'etf\', \'etfp011\')\r\nis exatly same as\r\nodbcdowhile(\'etf\', \'etf\', \'etfp011\', \"p19 LIKE \'%nik%\'\", \'p19\', 0, 0)\r\n\r\n\r\n\r\n\r\n','2019-09-27','15:52:18','tesae','0100-01-01','','',''),(305,'ODBCGETFLD()','finds the value of a field','odbcGetfld(_select, _field, _session)','','ODBC','odbcprintfld(), printfld()','B','Description : Return the value of a filed for specific record. It is similar to printfld() for xBase dataclass\r\n\r\nParameters\r\n  _select (c) : THE SELECT query to execute. If must add Limit 1 to _select, to not attach any valid record. \r\n  _field (c) : Optional. Default is the first field of _select.  The field name. It\'s value will be returned. \r\n  _sess (o) : Optional. The session to look. Default the current Session. \r\n\r\nReturns : the appropriate value\r\n\r\nExamples\r\n\r\nodbcgetfld(\"SELECT * FROM \'etf\' WHERE nr01=10;\", \"p21\")\r\n\r\n','2014-04-08','14:39:58','tesae','0100-01-01','','',''),(306,'ODBCPRINTFLD()','filds the value of a field.','odbcPrintFld(_table, _field, _where, _chktable, _defval, _desc)','','ODBC','odbcgetfld(), printfld()','B','Description : Return the value of a filed for specific record. It is similar to printfld() for xBase dataclass. \r\nIt is same as odbcgetfld, but not needed the whole \"SELECT\" query\r\n\r\nParameters\r\n  _table (c) : tabel to search in\r\n  _field (c) : The field name. It\'s value will be returned. \r\n  _where (c) : condition of record to search for  (use sql operators)\r\n                        Pegasus Executes odbcCommand(_where). See function description.\r\n\r\n  _chktable (l): Optional. Def=.f. If it is .t. function checks if table exists. \r\n  _defval : Optional. If _chktable =.t. and table doesn\'t exists returns _defval\r\n  _desc (c): Optional. Default =\'\'. If exists then open table using _desc, so van use and V type fields. \r\n\r\n\r\nReturns : the appropriate value\r\n\r\nExamples\r\n\r\nodbcgetfld(\"SELECT * FROM \'etf\' WHERE nr01=10;\", \"p21\")\r\nit is similar to \r\nodbcprintfld(\'etf\', \'p21\', \'nr01=10\')\r\n\r\n','2018-03-20','18:20:13','tesae','0100-01-01','','',''),(307,'ODBCREPLSELECT()','create a select list to a html','odbcReplSelect(_label, _select, _alias, _tit, _fld, _selected)','','ODBC','replselect()','I1','Description: It used to import a list of records, to a select field of main html form.\r\n\r\nReturns : Empty String\r\n\r\nArguments :\r\n_labell (c) : The label will be Replaced\r\n_select (c) : SELECT query it\'ll use to find records.\r\n_alias (c) : The alias name of workarea it\'ll create. \r\n_tit (c) : The field name it will be used to show to select.\r\n_fld (c) : The field name it will be used to give the value to select.\r\n_selected (c) : The condition of record to be selected to list. (use Pegasus Operators)\r\n\r\nExample \r\n------------\r\n\r\nfirst.html has aform with a select field\r\n<select name=\"p01\">[select1]</select>\r\n\r\nfirst.peg\r\n-----------\r\nmainhtml(\'first.htm\')\r\nodbcReplSelect(\'[select1]\', \"SELECT * FROM \'a01\' WHERE p01=\'10\';\", a01\', \'p01\', \'nr01\', \'p02=10\')\r\nshowmainhtml()\r\n\r\n','2007-01-12','12:17:03','dias','0100-01-01','','',''),(308,'ODBCDOREPLSELECT()','Create a selection list to an html','odbcDoReplSelect(_label, _table, _alias, _tit, _fld, _selected, _where, _orderby)','C','ODBC','odbcreplselect(), replselect()','I1','Description: It used to import a list of records, to a select field of main html form. It is similar to odbcReplSelect()\r\n\r\nReturns : Empty String\r\n\r\nArguments :\r\n_labell (c) : The label will be Replaced\r\n_table (c) : table to search in.\r\n_alias (c) : The alias name of workarea it\'ll create. \r\n_tit (c) : The field name it will be used to show to select.\r\n_fld (c) : The field name it will be used to give the value to select.\r\n_selected (c) : The condition of record to be selected to list. (use Pegasus Operators)\r\n_where (c) : condition of selected records (use sql operators)\r\n                  If the first character of _where is = (the equal symbol) Pegasus executes an odbctrans(_where) \r\n_orderby (c) : list of fields to order by (separated by ,)\r\n\r\nExample \r\n------------\r\n\r\nfirst.html has aform with a select field\r\n<select name=\"p01\">[select1]</select>\r\n\r\nfirst.peg\r\n-----------\r\nmainhtml(\'first.htm\')\r\nodbcReplSelect(\'[select1]\', \"SELECT * FROM \'a01\' WHERE p01=\'10\' ORDER BY p03;\", a01\', \'p01\', \'nr01\', \'p02=10\')\r\nshowmainhtml()\r\n\r\nit is similar to \r\nmainhtml(\'first.htm\')\r\nodbcDoReplSelect(\'[select1]\', \"a01\", a01\', \'p01\', \'nr01\', \'p02=10\', \"p01=\'10\'\", \'p03\')\r\nshowmainhtml()\r\n\r\n\r\n','2006-02-16','11:13:49','dias','0100-01-01','','',''),(309,'ODBCLIST()','Selects a record from a table','odbclist(_table, _desc, _field, _order, _where,  _default, _top,_left,_bot,_right,_type, _title, _recs, _nosearch, _orelative, _query, _inmeth, _sfld, _sval)','','ODBC','sgetsfld(), odbcconnect(), ?query?cfpp01304','W3','Purpose: Displays the data of a table in mass management shape and give to the user the possibility to select one record and from it to return the respective field value. The selection is done by pressing the keyboard key [enter] or double click. \r\n\r\nParameters:\r\n_table (c): the table name where searches to find the value\r\n_desc (c): the screen class name that describes the data class\r\n_field (c): the field name or expression  of that value will return. If it is an expression and starts with a \'*\' then it executes the expression and not returns. In this case you can close with closeit(_brwin)\r\n_order (c) : the ORDER BY CLAUSS of SELECT command. It is a list of  fields to order by the records\r\n_where (c) : the WHERE CLAUSS of SELECT. \r\n                   Pegasus Executes odbcCommand(_where). See function description.\r\n_default : the value will return in case that was not made any selection (was not pressed <Enter> but <Esc>)\r\n_top,_left,_bot,_right (n) : Define the display screen of the data class (in pixels)\r\n_type (n): the screen type (the default value it is 3)\r\n_title (c) : it is the title will be displayed on screen, beside the screen class title\r\n_recs (n) : The amount of records that it will fetch (LIMIT clause to SELECT). If ommited = 0 (that means all records)\r\n_nosearch (l) : If it is .t. then user cannot search to whole table, but only into recordes _where specifies. If ommited = .f.\r\n_orelative (o) : The object taht function uses to create the list. Igf it exists the coordinates are relative to it\'s top, left corner. If ommited the coordinates are relative to top, left corner of screen\r\n_query (c): Optional. Default = \'\'. It is a query that can be used as a table. It is usefull for views. If it isn\'t empty, then the SELECT created like: \r\n   SELECT <fields> \r\n   FROM (  <_query> ) AS _table\r\n_inmeth (c): Optional. It is a method can be executed on initialization of dialog box. Usually used to change browse view. _brobj is the browse object. See ?query?cfpp01304\r\n_sfld (c): Optional. Field Name to search with. If not empty then appears the search box for this field on first window appearing.\r\n_sval : Optional. Initial value for _sfld\r\n\r\n\r\n\r\nReturns the value for the field _field from the selected record, or the default value if no record was selected.\r\nUse to: Give to the user the possibility to select in screen classes values from the data classes. For example to find one client.\r\n\r\n_Type Values Can Be\r\nLINES_NONE            99\r\nLINES_BLACK           1\r\nLINES_GRAY            2\r\nLINES_3D              3\r\nLINES_DOTED           4\r\nLINES_V_BLACK         5\r\nLINES_V_GRAY          6\r\nLINES_H_BLACK         7\r\nLINES_H_GRAY          8\r\nYou can use these style numbers to sgesfld(), sgetafld(), listtable(). \r\nAlso you can use 1000 + style (i.e. 1001, 1003) to create a browse without dialog box. \r\n\r\nExample:\r\n\r\n## opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\np_val(@_code, [odbclist(\'etf\', \'etf_d\', \'nr01\', \"p19\", \"p19=\'A\'\",  0, 100, 100, 600, 800, 3)])\r\n\r\n\r\n\r\n','2017-12-12','17:43:14','tesae','0100-01-01','','',''),(310,'ODBCNEW_REC()','Used to update the nr01ield of a table','odbcnew_rec(_table, _sess, _db, _amount)','N','ODBC','odbcuse(), odbcunnew_rec()','B','Description : If the tables of your RDMBMS are Pegasus Tables, then must have a field with name \"nr01\" int(10). \r\nThis field is unique and Primary Key of table. \r\n\r\nThe function odbcnew_rec() updates the table p07 with new nr01 and returns the new nr01. \r\nIf p07 is view and exists table p07_1 then it uses table  p07_1 for nr01 counters\r\n\r\n_table (c) = The name of table \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n_db (c) : Optional. The name of data base. It is needed when _sess is different from default\r\n_amount (n): Optional. Default = 1. The increment value\r\n\r\nReturns = the new nr01. \r\n\r\nExample \r\n\r\np_val(@_nr01, \"odbcnew_rec(\'etf\')\")\r\n\r\naseelct(\'etf\')\r\nadd_rec()\r\nreplfld(\'etf\', \'nr01\', \"_nr01\")\r\nreplfld(\'etf\', \'p19\', \"\'TEST S.A.\'\")\r\ndbclose(\'etf\')\r\n\r\n','2011-01-13','16:50:03','tesae','0100-01-01','','',''),(311,'ODBCUNNEW_REC()','Decreases the nr01 counter of a table.','odbcunnew_rec(_table, _anr01, _sess, _db, _amount)','C','ODBC','odbcnew_rec()','B','Description : decreases the nr01 counter of a table (=-1). \r\n\r\nArguments\r\n****************\r\n_table (c) = _table name\r\n_anr01 (n)  = the nr01 it canceled. If counter of nr01=_anr01 then it decreases it. \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n_db (c) : Optional. The name of data base. It is needed when _sess is different from default\r\n_amount (n): Optional. Default = 1. The decrement value','2011-01-13','16:50:23','tesae','0100-01-01','','',''),(312,'ODBCDOUSE()','opens a table as a Pegasus Data Class','odbcDoUse(_table, _mode, _alias, _where, _orderby)','C','ODBC','odbcUse()','B','Description : Opens a table of your RDBMS as a Pegasus Data Class. \r\n\r\nArguments \r\n_table (c) = The table name\r\n_mode (l) = if .t. then it is exclusive. \r\n_alias (c) = the alias for _table. \r\n_where (c) = WHERE clause of SELECT that Pegasus will execute\r\n                  If the first character of _where is = (the equal symbol) Pegasus executes an odbctrans(_where) \r\n_orderby (c) = the list of fields used to sorting\r\n\r\nExample. \r\n\r\nodbcDoUse(\'etf\', .f., \'etf\', \'nr01=1\', \'\')\r\nit is same as \r\nodbcuse(\"SELECT * FROM etf WHERE nr01=\'1\'\", .f., \'etf\')\r\n\r\n','2006-02-16','11:13:15','dias','0100-01-01','','',''),(313,'ODBCBEGINTRAN()','Begins a Transaction','odbcBeginTran(_session)','L','ODBC','odbcCommitTran()','B','Description : \r\nIt begins a transaction. The updates to RDBMS are commited to it with a odbcCommitTran() and canceled with a odbcCancelTran()\r\nIt sets also the odbc_error=0\r\nIf an error ocurs then odbc_error<>0\r\n\r\nATTENTION \r\n  Usually an implicity COMMIT executed from RDBMS for some commads. For exable LOCK TABLES execute a COMMIT. So you must be care so that between a Begin Transaction and a Rollback (cancel) or a Commit not to have LOVK TABLE commands\r\n\r\nodbcnew_rec(), and odbcunnew_rec() executes a LOCK TABLE. \r\n\r\n\r\nArguments\r\n_session (o) : Is the seesion you create with odbcconn(). If ommited then the default ODBC session used\r\n\r\nReturns .t. if transaction begins\r\n\r\nExample\r\nodbcBeginTran()\r\nodbcuse(\'etf\', .f., \'etf\')\r\n\r\nadd_rec()\r\nreplfld(\'etf\', \'p19\', \"\'TEST S.A.\'\")\r\n\r\n##IF odbc_error=0\r\n  odbcCommitTran()\r\n##ELSE\r\n  odbcCancelTran()\r\n##ENDIF \r\n','2006-09-12','20:16:42','dias','0100-01-01','','',''),(314,'ODBCCOMMITTRAN()','Commits a transaction','odbcCommitTran(_session)','L','ODBC','odbcBeginTran()','B','Description : \r\nIt commits a transaction. The updates to RDBMS are commited to it with a odbcCommitTran() and canceled with a odbcCancelTran()\r\n\r\nArguments\r\n_session (o) : Is the seesion you create with odbcconn(). If ommited then the default ODBC session used\r\n\r\nReturns .t. if transaction commited\r\n\r\nExample\r\nodbcBeginTran()\r\nodbcuse(\'etf\', .f., \'etf\')\r\n\r\nadd_rec()\r\nreplfld(\'etf\', \'p19\', \"\'TEST S.A.\'\")\r\n\r\nodbcCommitTran()\r\n','2005-07-27','18:23:42','dias','0100-01-01','','',''),(315,'ODBCCANCELTRAN()','cancels a transaction (ROLLBACK)','odbcCancelTran(_session)','L','ODBC','odbcbeginTran()','B','Description : \r\nIt cancels a transaction. The updates to RDBMS are commited to it with a odbcCommitTran() and canceled with a odbcCancelTran()\r\n\r\nArguments\r\n_session (o) : Is the seesion you create with odbcconn(). If ommited then the default ODBC session used\r\n\r\nReturns .t. if transaction canceled\r\n\r\nExample\r\nodbcBeginTran()\r\nodbcuse(\'etf\', .f., \'etf\')\r\n\r\nodbcinsert(\'etf\', {\'nr01\', \'p19\'}, {str(odbcnew_rec(\'etf\'),10), \'TEST S.A.\'}, .t.)\r\n\r\nodbcCommitTran()\r\n','2006-09-12','20:18:20','dias','0100-01-01','','',''),(316,'ODBC TIPS 1','add a new record to a table','','','ODBC','','','Because of nature of RDBMS when you add a new record to a table, if you want to use the values of fields, you must  refresh the session. \r\n\r\nTo Pegasus Tables we use the nr01 field as primary and unique key (as we use it to dbf DataClass). \r\nWe must get the new nr01 value, before update the record. \r\nThe following example adds a new record to a table an then uses it\'s fields \r\n\r\n### get the new nr01 to a variable\r\np_val(@_nr01, \"odbcnew_rec(\'etf\')\")\r\n\r\n### add the record\r\nodbcuse(\'etf\', .f., \'etf\')\r\nadd_rec()\r\nreplfld(\'etf\', \'nr01\', \"_nr01\")\r\nreplfld(\'etf\', \'p19\', \'np19\')\r\ndbclose(\'etf\')\r\n\r\n### find the new record (using the nr01)\r\nodbcDoUse(\'etf\', .f., \'etf\', \"nr01=\'\" + alltrim(str(_nr01,10))+\"\'\", \'\')\r\ninitrec(\'etf\', \'etf_d\', .f.)\r\ngetdata(\'etf\', \'etf_d\', .f., 1, .t., 1)\r\n\r\n\r\n\r\n\r\n\r\n\r\n','2005-07-28','17:35:40','dias','0100-01-01','','',''),(317,'ODBC TIPS 2','nr01 counters','','','ODBC','','','Pegasus Tables have the nr01 field (int(10)) as unique and primary key\r\n\r\nAny RDBMS mus have a table with following DDL\r\nCREATE TABLE `p07` (\r\n  `p01` char(3) NOT NULL default \'\',\r\n  `p010` int(11) NOT NULL default \'0\',\r\n  UNIQUE KEY `p01`(`p01`),\r\n  PRIMARY KEY (`p01`)\r\n) \r\n\r\np01 = Table Name\r\np010 = Nr01 Counter of Table\r\n\r\nFunctions odbcnew_rec(), odbcunnew_rec() updates this table, as new_rec() and unnew_rec() updates the <file>_c.dbf file\r\n\r\n','2005-07-28','17:35:44','dias','0100-01-01','','',''),(318,'CREATE_FLD_LIST()','creates assign list for REPLACE, UPDATE or INSERT','create_fld_list(_field, _values, _setquote)','C','ODBC','odbcexecute()','B','Description : When we need to create an UPDATE, REPLACE or INSERT sql command we must write a list with \r\n<field>=<value> type.\r\nThe create_fld_list() function gets 2 arrays (1st with field names and 2nd with values) and create the command\r\n\r\nArguments \r\n_fields (a) : an array with fields names to assign to\r\n_values (a) : an array with values. If values are not characters, uses odbcStr() to transform them \r\n_setquote (l) : [Optional]. If .t. then the function sets the quotes to values. \r\n                    The syntax of an SQL statement is i.e. SET p19=\'test\', nr01=\'10\'\r\n                    IF _setquote = .t. then arrays have values {\'p19\', \'nr01\'}  and {\'test\', \'10\'}\r\n                    IF _setquote = .f. then arrays have values {\'p19\', \'nr01\'}  and {\"\' test\'\", \"\'10\'\" }\r\n                    If ommited, .f. is default. \r\nReturns (c) : The expression it creates. \r\n\r\nExamples \r\n\r\n1. \r\np_val(@p_p91arr1, \"array(0)\") + p_val(@p_p91arr2, \"array(0)\")\r\naadd(p_p91arr1, \'nr01\') + aadd(p_p91arr2, \"\'\" + alltrim( str(imp->p700,10)) + \"\'\")\r\naadd(p_p91arr1, \'p600\') + aadd(p_p91arr2, \"\'\" + alltrim( str(imp->p600,10)) + \"\'\")\r\naadd(p_p91arr1, \'p601\') + aadd(p_p91arr2, \"\'\" + alltrim( str(imp->p601,10)) + \"\'\")\r\naadd(p_p91arr1, \'p602\') + aadd(p_p91arr2, \"\'\" + alltrim( str(imp->p602,10)) + \"\'\")\r\naadd(p_p91arr1, \'remdate\') + aadd(p_p91arr2, \"\'\" + dtos(imp->remdate) + \"\'\")\r\naadd(p_p91arr1, \'remtime\') + aadd(p_p91arr2, \"\'\" + imp->remtime + \"\'\")\r\naadd(p_p91arr1, \'remuser\') + aadd(p_p91arr2, \"\'\" + imp->remuser + \"\'\")\r\n\r\np_val(@p_p91cmd, \"\'REPLACE d23 SET \' + create_fld_list(p_p91arr1, p_p91arr2)\")\r\np_val(@p_p91cmd, [p_p91cmd + \";\"])\r\n\r\nodbcexec(p_p91cmd, .t.)\r\n','2015-11-05','10:04:50','tesae','0100-01-01','','',''),(319,'CREATE_SEL_COM()','creates a select command','create_sel_com(_table, _where, _orderby, _limitfrom, _limit)','C','ODBC','odbcexec()','B','Description : This function creates a SELECT command using the arguments you give. It is a simple way to create a SELECT command to execute, without remember the SELECT syntax\r\n\r\nArguments \r\n_table (c) : table name\r\n_where (c) : WHERE CLAUSE. This is the condition for records to select. If empty string then the SELECT command willn\'t have WHERE clause\r\n                        Pegasus Executes odbcCommand(_where). See function description.\r\n_orderby (c) : List of fields to order by the select result. If empty string then the SELECT command willn\'t have ORDER BY clause\r\n_limitfrom (n) : The record number start from -1. \r\n_limit (n) : The number of records to return\r\nIf _limifrom=0 and _limit=0 then it returns all record that matches to query\r\n\r\n','2016-05-09','12:17:26','tesae','0100-01-01','','',''),(320,'RUNSHELL()','','RunShell( _cmd, _program, _lAsync, _lbgrd)','','PEG','execute()','B','Description : The function RunShell() starts a new command shell and passes a character string to it which is executed on the command line. Normally a new window is opened by RunShell() in which the command defined by _cmd is executed. \r\nAt least the parameter _Cmd must be passed to the function RunShell(). At the minimum this can be a null string (\"\"). In this case RunShell() starts the command shell defined as the default command shell in the environment variable COMSPEC (Windows). If _cmd contains a null string and no command shell can be started, a runtime error occurs. \r\n\r\nThe parameter _stype determines whether a Pegasus application is dependent or independent of the newly started command shell or program. When _stype has the logical value .T. (true), the new program is started and the Pegasus application continues running independent of it. If the value is .F. (false), the Pegasus application pauses until the newly started program terminates. \r\nThe parameter _btype determines whether the new process is started in the background or in the foreground of the Pegasus application. By default RunShell() starts new processes in the foreground, meaning they receive input focus and the applicable window is brought to the foreground. If a \"Full-Screen\" session is started with RunShell(), the function switches automatically to character mode. If the logical value .T. (true) is specified for _btype , the new process starts in the background of the Pegasus application which keeps the input focus. \r\n\r\nArguments\r\n========\r\n       _cmd (c) :  is a character string containing the parameter for the command line of the newly started command shell. \r\n\r\n       _prrogram (c) :  is a character string which must contain the complete program name (including file extension) for the program executed in the new command environment. The command shell defined by the environment variable  COMSPEC (Windows) is used as the default. When this environment variable is not defined, the default value is \"CMD.EXE\" (Windows NT) or \"COMMAND.COM\" (Windows 9x/Me). \r\n\r\n       _lAsync (l) : is a (optional) logical value which determines whether the newly started command shell is run asynchronously. The default value is .F. (false), meaning that, the Pegasus application is stopped until the new command shell or the newly started program is finished. \r\n\r\n       _lbgrd (l) :  is a (optional) logical value which determines whether the new command shell is started in the background. The default value is .F. (false) which means that by default a new process is started in the foreground. \r\n\r\n\r\nExamples\r\n=======\r\n### Open a new DOS session with window title \r\nRunShell( \'/C START \"Xbase++ DOS Session\"\' ) \r\n \r\n### List current directory to file \r\nRunShell( \"/C DIR /f > dir.txt\" ) \r\n \r\n###Direct call of the Windows program NOTEPAD.EXE including \r\n###command line parameter. Asynchronous execution (.T.) \r\n###Note: Notepad.exe can be found using PATH. \r\nRunShell( \"dir.txt\", \"NOTEPAD.EXE\", .T. ) \r\n \r\n###Indirect call of the Windows program EXPLORER.EXE \r\n###using the START command. \r\n###The explorer displays the current directory \r\nRunShell( \"/C START EXPLORER.EXE .\" ) \r\n \r\n### Direct call of the Windows program Wordpad and passing the name of  \r\n### an existing document \r\n### Note: Wordpad.exe must have the full path included, and the program \r\n### name must not be quoted. Codepage specific characters must be converted \r\n### to their original code if necessary (ConvToAnsiCp()). \r\n### RunShell( \"hello.doc\", \"C:\\Program Files\\Windows NT\\Accessories\\Wordpad.exe\" ) \r\n### Call Wordpad and passing command line parameters that must be quoted. \r\nRunShell( \'\"C:\\My Files\\hello.doc\"\', \"C:\\Program Files\\Windows NT\\Accessories\\Wordpad.exe\" ) \r\n\r\n\r\n','2018-10-19','11:42:53','tesae','0100-01-01','','',''),(321,'* 3.00A','What\'s new to V 3.00a','','','','','','What\'s New to Pegasus for Win 3.00a\r\n\r\n1. Full support to WinXp Theme of your PC. Pegasus now creates all Application Parts with your WinXp Theme. \r\n\r\n2. New feautures to lines into dialog boxes (types, colors). \r\n\r\n3. Main Window Menu\r\n   You can have submenus of menus. \r\n   With ##BEGIN and ##END labels to instuctions you can create submenus. \r\n    ##BEGIN ##END can be nested (see the main menu od Dias \r\n\r\n4. Correct the problem with say fons of a dialog box when you have browse item with enother fonr\r\n\r\n5. Minimize - Maximize - Resize of windows\r\n\r\n6. prinomad to submenus (##PRIN #omad#path#condition# )\r\n\r\n7. New Types of Fields for spinner fielsd 31, 32 -> get with spinner (like 1, 2)\r\n\r\n8. Images of Dialog Boxes. You can define right and left button instructions\r\n\r\n9. Memo print from getdata corrected\r\n\r\n10. Browses of Dialog Boxes. You can define methods for \r\n    double click, Right Click, OnChange\r\n\r\n11. Images to Browses \r\n     If to a screen class you have for example #BMP#\'..\\bmp\\test.bmp\' it sows the test.bmp to this cell\r\n\r\n12. You can define an Outlook bar to main window with groups and items. \r\n      Just create a menu to mentes with :\r\n      \r\n      Instruction = ##BEGIN \r\n               Begins a group\r\n      Eatch Item o menu is an action. \r\n   \r\n    The first group has ##BEGIN top, left, width, hight, bmpsize, ncolfront, ncolback\r\n            top = the top corner of box \r\n            left = the leftmost corner\r\n            width = width of box\r\n            hight = hight of box\r\n            bmpsize = size of items bmp \r\n            ncolfront, ncolback = forgoround and background colors. \r\n\r\n   When the first menu of a user is <code1>#<code2> then the main window has \r\n      window menu : <code1>\r\n      outlook bar : <code2>\r\n \r\n     see the menu b99 of Pegasus Dias (to mentes)\r\n\r\n13. Sgetsfld(), Sgetafld() functions have a new argument _relative. If it is .t. then the coordinates are relative to current dialog box. \r\n\r\n14. ListTable(filename, descname, fieldname, anorder, seekpar, defval, ;\r\n              _l1, _l2, _l3, _l4, _l5, _relative, _atitle, _topcnd, _ifcond)\r\n\r\n15. New Screen Designer with resize and move possibilites.\r\n\r\n16. Function SExecute( cOption, cFile, cParams, cDir, nCmdShow )\r\n      Executes action cOption to File cFile (i.e. action=\"open\" to a .doc file opens ot with MS word)\r\n\r\n17. We can define to browses line spacing different to font hight.\r\n\r\n18. To sets.dbf the option 18 changes to exactly dialog boxes\r\n     IF it is y then the dialog box is exactly as it defined to Screen Class. \r\n     IF it is n then if getdata() uses a buttonbar, the size changes to have spce for button bar. \r\n\r\n19. New Styles for Browse \r\nLINES_NONE            99\r\nLINES_BLACK           1\r\nLINES_GRAY            2\r\nLINES_3D              3\r\nLINES_DOTED           4\r\nLINES_V_BLACK         5\r\nLINES_V_GRAY          6\r\nLINES_H_BLACK         7\r\nLINES_H_GRAY          8\r\n\r\nYou can use these style numbers to sgesfld(), sgetafld(), listtable(). \r\n\r\nAlse you can use 1000 + style (i.e. 1001, 1003) to create a browse without dialog box. \r\n\r\n20. Sgetsfld(), Sgetafld(), ListTable() : User can change order an serch to listbox (if you haven\'t scondition)\r\n\r\n21. New Function getmdata() to create Folder Dialog Boxes. \r\n\r\n22. New Function ListArray()\r\n','2006-06-23','20:32:10','dias','0100-01-01','','',''),(322,'LISTTABLE()','Creates a List Box from A Pegasus Data Class','ListTable(_file, _desc, _field, _order, _sval, _default, _top,_left,_bot,_right,_type, _relative, _title, _scond, _cond1)','','DBPEG','sgetsfld()','W3','Purpose: Displays the data of one data class in mass management shape and give to the user the possibility to select one record and from it to return the respective field value. The selection is done by pressing the keyboard key [enter] or double click. The difference from SGETSFLD() is that is not having some arguments\r\n\r\nParameters:\r\n_file (c): the data class name where searches to find the value\r\n_desc (c): the screen class name that describes the data class\r\n_field (c): the field name of that value will return\r\n_order (n - c) : the index suite followed in sequence. This value cannot be 0. In staid of index suite (numeric) to be the name of the field in sequence (string)\r\n_sval : the value defines to which record the scroll bar will be active, according to the selected index.\r\n_default : the value will return in case that was not made any selection (was not pressed <Enter> but <Esc>)\r\n_top,_left,_bot,_right (n) : Define the display screen of the data class\r\n_type (n): the screen type (the default value it is 3)\r\n_relative (l) : If  it is .t. the coordinates o dialog box are relative to parent window\r\n_title (c) : it is the title will be displayed on screen, beside the screen class title\r\n_scond (c): it is the condition has to be valid for the records will be displayed. Has to be according to the sequence field. If the definition is missing, displays all the records.\r\n_cond1 (c) : it is an if condition for records that apperas to browse\r\n\r\n_Type Values Can Be\r\nLINES_NONE            99\r\nLINES_BLACK           1\r\nLINES_GRAY            2\r\nLINES_3D              3\r\nLINES_DOTED           4\r\nLINES_V_BLACK         5\r\nLINES_V_GRAY          6\r\nLINES_H_BLACK         7\r\nLINES_H_GRAY          8\r\nYou can use these style numbers to sgesfld(), sgetafld(), listtable(). \r\nAlse you can use 1000 + style (i.e. 1001, 1003) to create a browse without dialog box. \r\n\r\n\r\nReturns the value for the field _field from the selected record, or the default value if no record was selected.\r\nUse to: Give to the user the possibility to select in screen classes values from the data classes. For example to find one client.\r\n\r\n','2005-12-09','12:40:09','dias','0100-01-01','','',''),(323,'SEXECUTE()','Executes a program by file type','SExecute( cOption, cFile, cParams, cDir, nCmdShow, lError )','N','PEG','execute(), ?query?cfpp006','W3','Opens or prints the given file\r\n\r\nArguments:\r\n\r\ncOption (c):  Operation to perform: \"open\" or \"print\"\r\ncFile (c):   File name\r\ncParams (c): (optional)  Parameters for executable file\r\ncDir (c):  (optional) Init directory\r\nnCmdShow (l): (optional)  Whether file is shown when opened\r\nlError (l) : (optional) If it is .t. then shows the error ocured (if one). Default value = .t.\r\n\r\nReturns:\r\n  If the function is success and the instance handle of the application that was run has retrieved it returns a number equal or greater than 32 (>=32). Otherwise (<32) an error code is returned:\r\n\r\n0	System was out of memory, executable file was corrupt, or relocations were invalid.\r\n2	File was not found.\r\n3	Path was not found.\r\n5	Attempt was made to dynamically link to a task, or there was a sharing or network-protection error.\r\n6	Library required separate data segments for each task.\r\n8	There was insufficient memory to start the application.\r\n10	Windows version was incorrect.\r\n11	Executable file was invalid. Either it was not a Windows application or there was an error in the .EXE image.\r\n12	Application was designed for a different operating system.\r\n13	Application was designed for MS-DOS 4.0.\r\n14	Type of executable file was unknown.\r\n15	Attempt was made to load a real-mode application (developed for an earlier version of Windows).\r\n16	Attempt was made to load a second instance of an executable file containing multiple data segments that were not marked read-only.\r\n19	Attempt was made to load a compressed executable  file. The file must be decompressed before it can be loaded.\r\n20	Dynamic-link library (DLL) file was invalid. One of the DLLs required to run this application was corrupt.\r\n21	Application requires Microsoft Windows 32-bit extensions.\r\r\n','2015-02-27','18:44:05','tesae','0100-01-01','','',''),(324,'GETMDATA()','Creates dialog box with Folders','getmdata(_file, _adesc, _new, _hlp, _bbar, _type, _gettitle, _bmpfile, _initpeg, _keypeg)','L','DBPEG','getdata(), initrec()','W3','Purpose: Creates a new dialog box with Folders. \r\nThe main dialog box created using the first screen class of _adesc. \r\nAny Screen Class of this array (_adesc) creates a folder. \r\n\r\nParameters:\r\n_file (c) : The database related to the screen class. If the screen class is not related to one data class, then it is an empty string.\r\n_adesc (c) : Tha array of screen classes\r\n_new (b) : If there is data class, defines if we will manage a new record (.t.) or an old record (.f.). If there is not a data class, we give the value.t.\r\n_hlp (n) : The help code (from the active help class) that will be displayed.\r\n\r\nThe following parameters might be missing or have the space bar value:\r\n_bbar (c): The Button Bar class will be activated while dialog box management. If it is the empty string, does not activate button bar. \r\n_type (n): The button bar type (1=to the limit, 2=to the left, 3=to the right, 4 =down side)\r\n_gettitle (c): The window title is defined from screen class. Many times, we want to append one more dictions. For this , you should use the parameter _gettitle\r\n_bmpfile (c) : One image file of type bmp that will be the window\'s background.\r\n_initpeg (c) : One method executed before window display.\r\n_keypeg (c) : The method executed when user is pressing one keyboard key, different from arrows. The keyboard key value pressed from user is saved in variable _wlchar that can be used from the method\r\n\r\nReturns (.T.) if user ends the screen management by pressing the button Submit. If user ends the screen management by pressing the button Cancel or by closing the screen, returns (.F.).\r\n\r\n*****\r\nExample:\r\n\r\n###Initialize the variables screen. The _05_d used to show some hidden fields of etf_d. \r\nINITREC(\"etf_d\")\r\n### if gives value to search, continues\r\n### else, ends the method\r\n##IF GETDATA(\"\",{\'etf_d\', \'_05_d\'}, .t., 12)=.f.\r\n  releasvar(\'etf_d\')\r\n##RETURN\r\n##ENDIF\r\n\r\nrepldata(\'etf\', \'etf_d\', .f.)\r\n\r\n##RETURN','2005-11-24','14:55:06','dias','0100-01-01','','',''),(325,'LISTARRAY()','Creates a selection list from an array','listarray(_array, _title, _top, _left, _bottom, _right, _style, _relative, _frcol, _baccol, @_retsel, @_retstr, _nitem)','N','ARRAY','listtable()','W3','With this function you create a selection list from an array. \r\nThe array contents must be Character Type. \r\nIt returns the selected row - item - of array\r\n\r\nArguments\r\n_array (a) : The array to be shown\r\n_title (c) : The title of list\r\n_Top, _left, _bottom, _right (n) : The coordinates of list in pixels. \r\n_style (n) : If it is 1 then the list has a dialog box too. If it is 0 then appears a small dialog box (tool dialog box).\r\n_relative (o)-  (l): It is the object to witch is relative the given coordinates. \r\n\r\n_frcol (n) : RGB code for foreground color. It is optional\r\n_baccol (n) : RGB code for background color. It is optional\r\n\r\n_retsel (n): Optional. Variable to get selection \r\n_retstr (n): Optional. Variable to get selection title\r\n_nitem (n): Optional. Default=nil. If _array is mulrydimentional then _nitem, is the column used to be shown to list\r\n\r\n\r\nReturns : The number of selected item. O if user selected nothing. \r\n\r\n','2015-08-05','19:22:40','tesae','0100-01-01','','',''),(326,'AFILL()','fills an array with values.','afill( _aArray, _expr,  _nstart, _ncount )','A','ARRAY','aadd()','W3','Purpose : We use afill() to give values to elements of an array. \r\n\r\nArguments:\r\n\r\n_aArray (a) is the array which is filled. \r\n_expr :  is any expression whose value is assigned to each array element. \r\n_nStart (n) : is a numeric value specifying the first element of the array _aArray  which is assigned the value of _expr . \r\n_nCount (n)  : is a numeric value specifying the number of elements, starting with _nStart , to which the value is assigned. \r\n\r\nExample\r\n\r\n### if we have an array with elemnets \r\n### peg_arr = {\'a\', \'b\', \'c\', \'d\', \'e\', \'f\', \'g\')\r\n\r\nafill( peg_arr, \'test\', 2, 4) \r\n\r\n### after afill it seems like   peg_arr = {\'a\', \'b\', \'test\', \'test\', \'test\', \'test\', \'g\')\r\n','2005-11-28','13:22:26','dias','0100-01-01','','',''),(327,'-06. DIALOG BOX OBJECT','dialog Box Object\'s Data and Methods','','','THR','','W3','When we create a dialog box with getdata() Pegasus creates an object assigned to variable _curwin. \r\nFor any field of screen class Pegasus creates a Get Objet with name o + <field name> and a variable with name n + <Field Name> with field value. \r\nFor any browse of Screen Class Pegasus creates a Browse Object with name o + <browse name>\r\nFor any image of Screen Class Pegasus creates a Browse Object with name o + <image name>\r\n\r\nDialog Box Object \r\nMETHODS\r\nCircle( <nRow>, <nCol>, <nWidth> ):	Draws a circle  \r\r\ncTitle( <cNewTitle> ) : Sets the title of the Window    \r\nSay( <nRow>, <nCol>, <cText>, <ncClrFore>, <nClrBack>, <oFont>,<lPixel> ): Writes text on a Window\r\nSayRect( <nRow>, <nCol>, <cText>, <nClrFore>, <nClrBack>, <nWidth> ) :Writes text with a box around\r\n\r\ngotfocus()\r\n\r\nProperties\r\ncCaption: The window Title\r\ncTitle: The window Title\r\n','2009-12-11','10:13:21','dias','0100-01-01','','',''),(328,'-08. BROWSE OBJECT','Browse List Objects Data and Methods','','','THR','','W3','When we create a Browse List with cpegbrowse() Pegasus creates an object to variable _brobj. Also creates a dialog box object with name _brwin (browse object _brobj is child of _brwin).\r\n\r\n_wlchar = The cell is active \r\n\r\nFor browse object we can use \r\nDATA   (called as _brobj:<data>)\r\nnRowPos	 (n) : The row which has the focus.  The number of the row that is currently focused in the browse. It has a value from 1 to nRowCount()\r\nnColPos	(n) : The left column visible on screen. A numeric value that automatically keeps the leftmost visible column of the browse.\r\nnLen (n): Maximum rows can be appeared into browse\r\nnRowPos (n): Focused Row count\r\naHeaders	 (a) : Array of cText for the Header of each column.  An array with all the headers strings to be used to paint each column header.\r\nlCellStyle (l) : Cell Style managment\r\nnColAct (n) : The active column (if l cellStyle=.t.)\r\nbKeyDown (b) : Block executed when a key pressed  {|key, flags| dopeg()}\r\naColSizes (a): Array with column sizes\r\nacFields (a) : Array of columns fields names  as values to see (to browse)\r\nacsFields (a) : Array of sorting expressions for cell \r\naCnames (a): Array with column Names (upper name of field) \r\nlMchange (l): if .t. No change columns\r\nnLineHight (n): Hight (pixels) of line\r\naPegSel (a): Array with recno() of selected records \r\nnLineStyle (n): Lines Style    0= No Lines,  1=Black Lines,  2=GRAY ,  3=3D, 4=DOTED, 5=Vertical BLACK, 6=Vertical GRAY,  7=Horizontal BLACK,  8=Horizontal GRAY          \r\nlHitTop (l) : Είναι στην 1η εγγραφή \r\nlHitΒοττομ (l) : Είναι στην τελευταία εγγραφή \r\nlpToDrop (l): has something to drop (is in draged mode)\r\n\r\nMETHODS \r\nGoUp() : 	Go up one line       \r\nGoDown() :Go down one line     \r\nGoLeft() : Go left one column      \r\nGoRight() : Go right one column      \r\nGoCell(n) : Go to cell number n \r\nGoCellName(cname) : Go to cell with name cname\r\nGoTop() : Go to the first element browsed       \r\nGoBottom(): Go to the last element browsed     \r\nPageUp() : Go up one page         \r\nPageDown() : Go down one page    \r\nDrawLine(_line) : Redraws the _line row without input focus look. If _line=0 then redraws the headers\r\r\nUpStable() : Forces to stabilize properly when a very fue records are browsed\r\n                   This METHOD properly stabilizes the browse when a SEEK is done and the  result may be located in the group of records displayed in the same visible screen.\r\n              You should call this METHOD after doing a SEEK that may be located backwards in the same visible screen of the browse. \r\n\r\nnRowCount(): Returns the number of visible rows on the browse\r\nnAtCol(n) : Focus the n column of browse\r\n\r\r\nExample _brobj:gotop() goes to top of _brobj\r\n\r\n\r\nBROWSES into Screen Classes\r\n*************************************\r\nWhen you define a browse to a screen class you can specify methods for double click, change, right click, header click, press key Events. \r\n\r\nMethods : Here you give 5 methods (separated by ,)\r\n                1st executed when user click (double) on a line. _eventpar={row, col, flag}\r\n                2nd executed when change a line to browse (mouse or key move)\r\n                3rd executed when user click the right button of mouse on browse area.  _eventpar={row, col, flag}\r\n                4th executed when user click on header. \r\n                5th executed when user press a key (on browse object). _eventpar={keyCode, flag, nil}\r\n \r\nLook Function nPGetBrRow(_obr, _nrow)  to get active row after a mouse click \r\n','2014-02-20','18:42:52','tesae','0100-01-01','','',''),(329,'-07. GET & BUTTON OBJECTS','Gets (fields) object Data and Methods','','','THR','','W3','***************\r\nGET Object\r\n***************\r\nThe dialog Box created wit getdata() creates get objects for any get field (object name = o + <field name>)\r\n\r\nDATAs\r\n\r\nlReadonly (l) : If .t. then the get box is readonly\r\nnPegClrBack (n) : Background Color\r\nnPegClrFore (n) :  Foreground Color\r\nbPegKeys (b): Block used for keypressed on get object. (example oget:bPegKeys = {|nKey, nFlags| dopeg(\'etfp0\')} ). You can read to _wlchar the last key pressed by user.\r\nPegOldVal: Value had before Edit \r\nPegOrigin: The Original value (when initiated)\r\n\r\nMETHODs\r\n\r\ncText(_text):  Get/Set the text of the TGet Object.\r\nRefresh(): Repaints the control\r\nValue():  	Return the value of the Get\r\nUnDo(): 	Undoes the last modification.\r\nSetFocus(): Sets the get focused\r\nDisable() : Disables the get box\r\nEnable() : Enables the get box\r\nSetColor( foreground, background)\r\nloadbitmap( , , \'bmpfile)   : Loads a bitmap to button \r\nfreebitmap(): unload bitmap\r\nExample \r\n-------------\r\nop19:enable()\r\nassobj(op19, \'lReadonly\', \'.f.\')\r\n\r\n*********************\r\nBUTTON Object\r\n*********************\r\nAlso to buttons of a dialog box, you can use methods\r\n\r\ncText(_text):  Get/Set the text of the TGet Object.\r\nRefresh(): Repaints the control\r\nSetFocus(): Sets the get focused\r\nDisable() : Disables the get box\r\nEnable() : Enables the get box\r\nFreebitmap() : Frees memory from bitmaps of button\r\nLoadBitmap( , , bitmap1, bitmap2, , bitmap3)   : Loads new bitmaps to button . \r\nClick(): Executes the button instruction\r\n\r\nExample\r\n------------\r\nobut01:LoadBitmap( , , \'..\\bmp\\test.bmp\')\r\n\r\n\r\n***************\r\nBMP Object\r\n***************\r\nTo images of a dialog box we can use \r\nDATA\r\nlstretch (l) : if .t. then it adjusts the image to width and high of object\r\nlScroll (l) : if .t. then scroll bars appears\r\n\r\nMETHODs\r\nloadbmp(_bmpfile) : Loads another bmp file \r\n\r\n\r\n\r\n\r\n**********\r\nEVENTS\r\n***********\r\n_eventpar = an array o returned valus from an event\r\n                  Into a browse list (to a dialog box created with getdata) the events doubleclick and rightclick returns _eventpar={row, column, flags}\r\n                 Into a dialog box created with getdata() the events leftclick, doubleclick and rightclick returns _eventpar={row, column, flags}\r\n\r\n','2017-01-03','15:20:51','tesae','0100-01-01','','',''),(330,'-10. ERROR CODES','Pegasus Error Codes','','','TBL','','W3','\r\nValue  Error \r\n0 No error \r\n1 Parameter has a wrong value \r\n2 Parameter has a wrong data type \r\n3 Missing parameter in function or method call \r\n4 Error in array index \r\n10 Numeric overflow (number is too large or too small) \r\n11 Division by zero \r\n12 Invalid numeric value (e.g. 3 % 0 or float number is too large for array index) \r\n15 Not enough memory or swapping space available \r\n16 Stack overflow (e.g. with recursive calls. The stack can be dimensioned during linking with Link386). \r\n20 Syntax error in macro expression \r\n21 Function is not declared \r\n22 Unknown variable. A variable name identifies neither a PRIVATE nor a PUBLIC variable \r\n23 Object has no method with this name \r\n24 Error in the METHOD..IS definition for a method: the message identifier is already used for another method and is not allowed for this method \r\n25 Access to method is not allowed in this context (e.g. if a method is not declared as EXPORTED: it cannot be called within functions but only within methods). \r\n26 Object has no member variable with this name \r\n27 Error in the VAR..IS definition for a member variable: the message identifier is already used for another member variable or class name and is not allowed for this member variable \r\n28 Access to member variable is not allowed in this context. \r\n29 Wrong data type for member variable \r\n30 Access to instance method not allowed in class object \r\n31 Access to instance variable not allowed in class object \r\n32 Syntax error within class declaration \r\n33 no instances allowed for this class: class contains DEFERRED methods or is destroyed \r\n34 Class is already defined \r\n35 Call of not implemented DEFERRED method \r\n36 Method is FINAL and may not be overloaded \r\n37 Class is not defined \r\n40 Operating system error: this only occurs if the error cannot be identified otherwise. \r\n41 Internal data structures corrupted (an unexpected OS error occured) \r\n42 XPF file has invalid version number \r\n43 Attempt to save non persistent data Data which cannot be made persistent are attempted to be saved via SAVE TO or Var2Bin() \r\n50 DMLB sub-system is not initialized \r\n51 Generic error in DMLB framework \r\n52 Invalid DLL name for DBE (e.g. the file does not exist or does not have the .DLL extension) \r\n53 DBE build name already in use \r\n54 DBE build error \r\n55 DBE component is defect \r\n56 DBE initialization failed \r\n57 DBE deinitialization failed \r\n58 Operation is not supported by DBE \r\n59 DBE private/specific error (error is caused by the DBE producer) \r\n60 No default DBE available/defined \r\n61 Invalid DBE name (DBE is not loaded or compound DBE is not built) \r\n62 Invalid data type for database field \r\n63 Length of database field was exceeded \r\n64 Invalid length of index key (the NTXDBE supports max 256 characters) \r\n65 Unknown symbol for database field \r\n66 Unknown symbol for alias \r\n67 Symbol is already in use \r\n68 No table available/no database open \r\n69 No order available/no index open \r\n70 File cannot be created \r\n71 File cannot be opened \r\n72 Error while closing a file \r\n73 Error while reading a file \r\n74 Error while writing to a file \r\n75 Operation requires a file to be exclusively opened \r\n76 File lock is required for this operation \r\n77 File is opened in read only mode \r\n78 Auto lock error during APPEND BLANK \r\n79 Record lock failed \r\n80 Lost Update error was detected by DMLB (only in auto lock mode of a DBE) \r\n90 Workarea does not fit into workspace \r\n100 Operation is not allowed in this thread (e.g. when a database is opened in thread A it cannot be closed in thread B) \r\n101 Error during printing or spooling \r\n103 The object being accessed is not registered (Most probably the :init() method has not been called). \r\n104 The object (XBP) is in the wrong state to perform the operation (e.g. after :new() only :create() may be called but not :destroy()) \r\n105 Error while creating an object (XBP) (e.g. a non existing resource ID was assigned to the iVar :caption ) \r\n130 An invalid matrix was passed to a Gra..() operation (The matrix must be created using GraInitMatrix()). \r\n133 Application was not linked using /PM:PM-switch The application was not linked with the correct link switch \r\n134 Printer is not installed or is unavailable \r\n140 Function is not supported \r\n141 Error with dynamic loaded function \r\n142 DLL couldn\'t be loaded \r\n143 DLL was created with an incompatible version \r\n144 unsupported calling convention \r\n145 DLL must be compiled with /dll:dynamic \r\n\r\nWhen Pegasus generates an error, creates file Pegasus Log, where describes the error. \r\nIn this file and section \"Pegasus Calls\" you can see the Pegasus Functions called. \r\n','2005-12-02','12:27:09','dias','0100-01-01','','',''),(331,'-12. KEYBOARD CODES','Key Codes for keys and buttons','','','TBL','','W3','In this tables listed the codes of keyboard you can use to \"Keys Attributes\" and \"Button Attributes\"\r\n         1 LBUTTON                        \r\n         2 RBUTTON                        \r\n         3 CANCEL                         \r\n         4 MBUTTON                        \r\n         8 BACK                           \r\n         9 TAB                            \r\n        12 CLEAR                          \r\n        13 RETURN                         \r\n        16 SHIFT                          \r\n        17 CONTROL                        \r\n        18 MENU                           \r\n        19 PAUSE                          \r\n        20 CAPITAL                        \r\n        27 ESCAPE                         \r\n        32 SPACE                          \r\n        33 PRIOR                          \r\n        34 NEXT                           \r\n        35 END                            \r\n        36 HOME                           \r\n        37 LEFT                           \r\n        38 UP                             \r\n        39 RIGHT                          \r\n        40 DOWN                           \r\n        41 SELECT                         \r\n        42 PRINT                          \r\n        43 EXECUTE                        \r\n        44 SNAPSHOT                       \r\n        45 INSERT                         \r\n        46 DELETE                         \r\n        47 HELP                           \r\n        65 A                              \r\n        66 B                              \r\n        67 C                              \r\n        68 D                              \r\n        69 E                              \r\n        70 F                              \r\n        71 G                              \r\n        72 H                              \r\n        73 I                              \r\n        74 J                              \r\n        75 K                              \r\n        76 L                              \r\n        77 M                              \r\n        78 N                              \r\n        79 O                              \r\n        80 P                              \r\n        81 Q                              \r\n        82 R                              \r\n        83 S                              \r\n        84 T                              \r\n        85 U                              \r\n        86 V                              \r\n        87 W                              \r\n        88 X                              \r\n        89 Y                              \r\n        90 Z                              \r\n        96 NUMPAD0                        \r\n        97 NUMPAD1                        \r\n        98 NUMPAD2                        \r\n        99 NUMPAD3                        \r\n       100 NUMPAD4                        \r\n       101 NUMPAD5                        \r\n       102 NUMPAD6                        \r\n       103 NUMPAD7                        \r\n       104 NUMPAD8                        \r\n       105 NUMPAD9                        \r\n       106 MULTIPLY                       \r\n       107 ADD                            \r\n       108 SEPARATOR                      \r\n       109 SUBTRACT                       \r\n       110 DECIMAL                        \r\n       111 DIVIDE                         \r\n       113 F2                             \r\n       114 F3                             \r\n       115 F4                             \r\n       116 F5                             \r\n       117 F6                             \r\n       118 F7                             \r\n       119 F8                             \r\n       120 F9                             \r\n       122 F11                            \r\n       123 F12                            \r\n       124 F13                            \r\n       125 F14                            \r\n       126 F15                            \r\n       127 F16                            \r\n       128 F17                            \r\n       129 F18                            \r\n       130 F19                            \r\n       131 F20                            \r\n       132 F21                            \r\n       133 F22                            \r\n       134 F23                            \r\n       135 F24                            \r\n       144 NUMLOCK                        \r\n       145 SCROLL                         \r\n\r\n\r\nIF Shift is Pressed then the key = 16000 + key code\r\nIF Control is Pressed then the key = 17000 + key code\r\n','2006-05-31','20:19:16','dias','0100-01-01','','',''),(332,'-09. PICTURE SYMBOLS','Picture Symbols you can use to Screen Classes','','','TBL','','W3','\r\n Get Picture Functions\r\n------------------------------------------------------------------------------\r\nSym  Type   Description\r\n------------------------------------------------------------------------------\r\n @A     C     Allow only alpha characters\r\n @B     N     Display numbers left-justified\r\n @C     N     Display CR after positive numbers\r\n @D     D,N   Display dates in default DATE format\r\n @E     D,N   Display dates with day and month inverted\r\n             independent of the current DATE SETting,\r\n             numerics with comma and period reverse\r\n @K     All   Delete default text if first key is not a cursor key\r\n @X     N     Display DB after negative numbers\r\n @Z     N     Display zero as blanks\r\n @(     N     Display negative numbers in parentheses with leading spaces\r\n @)     N     Display negative numbers in parentheses without leading spaces\r\n @!     C     Convert alphabetic character to upper case\r\n\r\n\r\nGet Picture functions can be followd by Template Symbols (i.e. @E9,999,999.99 shows a number separated by comma and reverse comma and period ) \r\n\r\n\r\n\r\n Get Picture Template Symbols\r\n------------------------------------------------------------------------------\r\n A    Allow only alphabetic characters\r\n N    Allow only alphabetic and numeric characters\r\n X    Allow any character\r\n 9    Allow digits for any data type including sign for numerics\r\n #    Allow digits, signs and spaces for any data type\r\n L    Allow only T, F, Y or N\r\n Y    Allow only Y or N\r\n !    Convert alphabetic character to upper case\r\n $    Display a dollar sign in place of a leading space in a numeric\r\n *    Display an asterisk in place of a leading space in a numeric\r\n .    Display a decimal point\r\n ,    Display a comma\r\n\r\n','2005-12-02','12:27:04','dias','0100-01-01','','',''),(333,'-02. OPERATORS','Pegasus Operators','','','TBL','','W3',' $               Substring comparison--binary\r\n %               Modulus--binary\r\n &               Macro evaluation--unary\r\n ( )             Function or grouping indicator\r\n *               Multiplication--binary\r\n **              Exponentiation--binary\r\n +               Addition, unary positive, concatenation\r\n -               Subtraction, unary negative, concatenation\r\n ->              Alias assignment--binary\r\n .AND.           Logical AND--binary\r\n .NOT.           Logical NOT--unary\r\n .OR.            Logical OR--binary\r\n /               Division--binary\r\n :               Send--binary\r\n <               Less than--binary\r\n <=              Less than or equal--binary\r\n <> != #         Not equal--binary\r\n = (equality)    Equal--binary\r\n ==              Exactly equal--binary\r\n >               Greater than--binary\r\n >=              Greater than or equal--binary\r\n @               Pass-by-reference--unary\r\n [ ]             Array element indicator\r\n\r\n','2005-12-02','14:11:06','dias','0100-01-01','','',''),(334,'-05. MATHEMATICAL OPERATORS','Mathematical Operators','','','TBL','','W3','The mathematical operators execute mathematical operations using numeric values. Except for the two operators + and - , they are always binary operators. The plus and minus operators are also unique because they can be used with values of the character and date data types. \r\n\r\nMathematical operators \r\n\r\n  Operator   Type    Data type  Operation                           \r\n\r\n   +         binary  N, D       numeric addition                    \r\n   +         binary  C          concatenation                       \r\n                                                                    \r\n   -         unary   N          negative signed prefix              \r\n   -         binary  N          numeric subtraction                 \r\n   -         binary  D          subtraction of a date               \r\n\r\n   -         binary  C          concatenation without blank         \r\n                                spaces between character strings    \r\n                                                                    \r\n   *         binary  N          multiplication                      \r\n   /         binary  N          division                            \r\n   **        binary  N          exponentiation                      \r\n   ^         binary  N          exponentiation                      \r\n\r\n   %         binary  N          modulus                             \r\n\r\nThe operations of the plus operator depends on the program context and the data type of the operands used. \r\nWhen a unary plus operator appears in front of a numeric expression, it is the same as multiplying by the value +1 . The plus operator actually performs no operation with the operand, but raises the precedence of the operation in relation to all other mathematical operators except the unary minus operator. \r\nWhen the plus operator appears as a binary operator between two numeric expressions, it adds the value of the right expression to the value of the left expression. The result of the addition is a numeric value which is the sum of the two expressions. \r\n\r\nIf one operand for the addition is a date expression and the other operand is a numeric expression, the numeric is treated as the number of days and is added to the value of the date expression. The result is a date value. \r\nWhen the binary plus operator appears between two character expressions, the string of the right expression is attached to the end of the string of the left expression. The result of this operation is a character string. \r\n\r\n      ?   4 + 4                        // result: 8 \r\n      ? + 4 - 4                        // result: 0 \r\n \r\n      ? CtoD(\"12/31/94\") + 6           // result: 01/06/95 \r\n      ? 6 + CtoD(\"12/31/94\")           // result: 01/06/95 \r\n \r\n\r\n      ? \"James \" + \"Bond\"              // result: James Bond \r\n\r\nThe minus operator is similar to the plus operator and can be used with operands having \"numeric\", \"date\" or \"character\" data types. The unary minus operator performs multiplication by -1 which changes the signed prefix of a numeric value. The result of the numeric binary minus operator is the numeric difference between the left and right operands. \r\nWhen the minus operator appears between two date expressions, it subtracts the date value of the right expression from the date value of the left expression. The result of the subtraction is a numeric value indicating the difference between the two dates as the number of days. \r\n\r\nWhen the left operand of the minus operator is a date expression and the right operand is a numeric expression, the numeric number of days is subtracted from the date. The result is a date value. When the left operand is numeric and the right operand is of the date data type, a runtime error occurs. \r\nWhen the binary minus operator appears between two character expressions, the string of the right expression is attached to the string of the left expression after all blank spaces at the end of the left character expression are removed and attached to the end of the resulting character string. \r\n\r\n      nValue := 10 \r\n \r\n      ? -nValue                        // result: -10 \r\n      ? nValue := -nValue              // result: -10 \r\n      ? nValue := -nValue              // result: 10 \r\n \r\n      ?   4 - 4                        // result: 0 \r\n      ? - 4 - 4                        // result: -8 \r\n \r\n      ? CtoD(\"12/31/94\") - 7           // result: 12/24/94 \r\n \r\n      ? CtoD(\"12/31/94\") - ; \r\n        CtoD(\"12/31/93\")               // result: 365 \r\n \r\n\r\n      ? \"James \" - \"Bond\"              // result: JamesBond \r\n\r\nThe other mathematical operators can only be used with numeric values. They execute the operations of multiplication, division, exponentiation and modulus (the remainder of division). There are two kinds of exponentation operators: ^ and **. \r\nCalculations using the various mathematical operators can be used within complex expressions. During calculations the operators have a specific precedence. Operators of higher precedence execute their operations within an expression prior to operators of lower precedence. Operators of equal precedence in a program line are processed from left to right. The precedence of the mathematical operators is as follows: \r\n\r\n- +  	Signed prefixes (unary minus and plus operators) \r\n** ^  	Exponentiation \r\n* / %  	Multiplication, division, modulus \r\n- +  	Subtraction, addition (binary minus and plus operators)','2005-12-02','12:26:13','dias','0100-01-01','','',''),(335,'-03. CHARACTER OPERATORS','Operators for String Type Variables','','','TBL','','B','Character strings are a series of ASCII characters enclosed in a set delimiting characters (see table). The operators that work with values of \"character\" data type include the concatenation, comparison and assignment operators. Concatenation means \"addition of characters\" and describes combining two character values in order to form a new character string. The following table lists all of the operators which can be used with values of \"character\" data type: \r\n\r\nOperators for character values: \r\n\r\n  Operator   Description                                            \r\n   \"\" \'\' []  Delimiters for literal character values                \r\n   +         Concatenation of character strings                     \r\n   -         Concatenation of two character strings without         \r\n             blank spaces                                           \r\n   ==        Tests whether two character strings are identical      \r\n   $         Tests whether substring is contained in a character    \r\n             string                                                 \r\n   != <> #   Tests whether two character values are not equal       \r\n   >         Comparison: greater than                               \r\n   >=        Comparison: greater than or equal                      \r\n    =        Comparison: equal                                      \r\n   <=        Comparison: less than or equal                         \r\n   <         Comparison: less than                                  \r\n\r\n\r\nThe operator == performs a binary comparison between two character strings and determines whether two character values cLeft and cRight are identical: \r\n\r\n      cLeft  := \"Pegasus\" \r\n      cRight := \"Pegasus   \" \r\n\r\n      ? cLeft == cRight                // result: .F. \r\n      ? cLeft == RTrim(cRight)         // result: .T. \r\n\r\n\r\n      ? cLeft = cRight                 // result: .F.  because cRight\'s length is  larger than cLeft\r\n      ? cLeft = \"\"                     // result: .T. \r\n      ? cRight=cLeft                 // result: .T.  because cLeft\'s length  is smaller than cRight and the first 7 characters o cRight are same with cLeft\r\n\r\n\r\n\r\n\r\n','2005-12-02','12:26:20','dias','0100-01-01','','',''),(336,'-04. LOGICAL OPERATORS','Logical Operators','','','TBL','','B','All logical operators execute logical operations and return logical values. There is one unary logical operator and two binary operators. The unary logical operator performs negation. There are two syntaxes that can be used for it. The table below lists all logical operators: \r\n\r\nLogical operators \r\n  Operator   Type    Data type  Operation           \r\n   .NOT.       unary   L          logical negation    \r\n   !              unary    L          logical negation                                                        \r\n   .AND.      binary   L          logical And         \r\n   .OR.        binary   L          logical Or          \r\n\r\nThe operands of the logical operators must be of the logical data type, which means they must result in the value .T. (true) or .F. (false). The following code shows various combinations of operands for logical operators and the results of the operations: \r\n\r\n      ? .NOT. (.T.)               // result: .F. \r\n      ? ! (.F.)                   // result: .T. \r\n      ? (.T.) .AND. (.T.)         // result: .T. \r\n      ? (.F.) .AND. (.T.)         // result: .F. \r\n      ? (.F.) .AND. (.F.)         // result: .F. \r\n      ? (.T.) .AND. (.F.)         // result: .F. \r\n      ? (.T.) .OR.  (.T.)         // result: .T. \r\n      ? (.T.) .OR.  (.F.)         // result: .T. \r\n      ? (.F.) .OR.  (.T.)         // result: .T. \r\n\r\n      ? (.F.) .OR.  (.F.)         // result: .F.','2005-12-02','12:26:17','dias','0100-01-01','','',''),(337,'-01. DATA TYPES','Data Types','','','TBL','','B','This chapter describes the data types supported by Pegasus. \r\nValues of any data type can be assigned to memory variables. \r\nThe data type of values assigned to field variables are predetermined by the underlying file format of the DatabaseEngine which manages the field variables in a file. \r\nThe following data types are supported by Pegasus\r\n\r\n Type              Abbreviation   Note                        \r\n  Array                 A              Not allowed in DBF files    \r\n  Code block         B              Not allowed in DBF files    \r\n  Character string  C                                          \r\n  Date                  D                                          \r\n  Logical              L                                          \r\n  Memo               M              Only as a field variable    \r\n  Numeric            N                                          \r\n  Object              O              Not allowed in DBF files    \r\n  NIL                   U              Not allowed in DBF files    \r\n\r\nODBC\r\n*******\r\nPegasus  Creates Tables to MySQL via ODBC as follows\r\n\r\nPegasus Type                         MySQL Type\r\n****************                         ***************\r\nM (memo)                               LongText\r\nC (char) <=255                        Char\r\nC (char) >255                          LongText\r\nN (num) <10 no decimals         int\r\nN (num) >10 no decimals         bigint\r\nN (num) with decimals             decimal\r\nD (date)                                  date\r\nL (logic)                                  tinyint(1)\r\nX (binary)                                Longllob\r\n','2011-02-02','10:55:39','tesae','0100-01-01','','',''),(338,'*01. PEGASUS DBASE','Pegasus dBases, Theory and use','','','THR','','B','What is Pegasus dBase\r\n----------------------\r\nPegasus using by default xBase files (dbf - files) as data Class.\r\n\r\nTheoretically, the word \"database\" refers to the entire set of data belonging to one problem domain. This data can be divided into many files. In the context of xBase dialects \"database\" is used when discussing individual files that exist in the DBF file format. For this historical reason, the word \"database\" is used from Pegasus as a synonym for the table.\r\n\r\nIn Pegasus terms, when we say, for example, etf Pegasus dBase we mean\r\n  etf.dbf    : data class (file with data)\r\n  etf.dbt    : if memo fields exists\r\n  etf_c.dbf  : etf unique identifier \r\n  etf_d.dbf  : etf screen class\r\n\r\nAlso for any indexed key creates file \r\n <field name><data class name>.ntx file\r\n  for example nr01etf.ntx is the index for nr01 field of etf Pegasus dBase. \r\n\r\n------------\r\n************\r\nImportant!!!\r\n------------\r\n  Any Pegasus dBase has a field with name nr01, type N (numeric) and length at least 10. This field is usually indexed. \r\n  This field is the unique Indexed Key of dBase. xxx_c file has the last value of nr01 of xxx dbase. \r\nWhen we add a new record to xxx dBase the first command we must execute is\r\n  replfld(\'xxx\', \'nr01\', \"new_rec(\'xxx\')\")\r\n\r\nIf we use initrec(\'xxx\', \'xxx_d\', .t.) the nr01 field gets the next free value (it executes internally the new_rec() )\r\n\r\nnew_rec() increases the xxx_c by 1. If we want to cancel this increment we must use unnew_rec(). \r\n\r\n************\r\n------------\r\n\r\n\r\nPegasus can use also any RDBMS as data class, via ODBC drivers (see ODBC Library)\r\n\r\nIn following lines we\'ll try to see some basic information about xBase (dbf) files. \r\n\r\nThe DBF file format is the basis for all xBase dialects and allows management of extensive data sets in a straightforward manner. The data within each DBF file is organized in table form. Each column corresponds to a database field (field, for short) and each row corresponds to a \"data record\" (record, for short). The title (or top row) contains the field names identifying the fields. The following table illustrates how data is organized within a DBF file: \r\n\r\n CUSTNO  LASTNAME        FIRSTNAME      PHONE            \r\n\r\n   40001  King            Michael        (609)423-4567    \r\n   40002  Fisher          Fred           (614)713-4578    \r\n   50013  Anderson        Robert         (819)567-9832    \r\n   50021  Long            Barbara        (402)715-4321    \r\n   50043  Baker           Christine      (517)454-3356    \r\n   50057  Kemper          Joseph         (414)234-5678    \r\n   50100  Smith           Richard        (303)614-4321    \r\n\r\nThe DBF file (table) in this example contains seven records (rows). A single record includes four fields (columns). Each field contains specific information about a customer. \r\nIn a DBF file, the structure of the table is defined along with the data. The table definition includes the field names (column headings), field lengths (column widths), data types and number of decimal places for numeric fields. A file contains strongly typed data, meaning the data in a column always has the same data type. The DBF file format allows a total of five different data types to be stored: character, date, logical, memo and numeric. \r\n\r\nThe initial definition of the structure of a DBF table can also be stored in a DBF table. To be used in this way, the table must contain the field name, data type of the field, field length and the number of decimal places (a total of four columns). The definition of the table structure for the above example would be the following: \r\n\r\n FIELD_NAME  FIELD_TYPE  FIELD_LEN  FIELD_DEC    \r\n\r\n  CUSTNO      C             8         0           \r\n  LASTNAME    C            20         0           \r\n  FIRSTNAME   C            20         0           \r\n  PHONE       C            15         0           \r\n\r\nThis table contains all the information necessary to describe the structure of the DBF file. Each record contains the definition for one field. The column headings in this table are the field names of what is called a \"structure extended\" DBF file. A structure extended DBF file contains the field definitions for another DBF file. The field definitions comprise the definition of the structure of a DBF file, and are the starting point for database usage. \r\n\r\n\r\nCreating Pegasus dBase\r\n----------------------\r\nPegasus dBases, uses screen class to define the data class. \r\nDefining a screen class with name xxx_d  (xxx is dBase name) we define also the xxx data class. \r\nFunction chanstru() creates the data class using the screen class. \r\nWe can also create a simple dbf file using createmp() function, by a screen class.\r\n\r\nWhen we create a screen class with name of three (3) characters and _d (xxx_d) then Pegasus creates the data class xxx. \r\n\r\nWe can use screen classes that don\'t creates data classes, if the name starts from character underline (_) or if the name is like xxx_d1, xxx_d2, xxx_d3, xxx_d4, xxx_d5, xxx_d6, xxx_d7, xxx_d8, xxx_d9\r\n\r\nWork Areas And Alias\r\n--------------------\r\nIn Pegasus programming it, is the rule, rather than the exception, that an application program uses multiple dBases (dbf files) at the same time. Access to different databases is accomplished by means of work areas at runtime of a program. A work area is identified by a numeric index and has two different states, free and used . \r\nWhen a database is opened with fuse() or dbopen(), a work area is used. Only one database can be open in a work area and access to a database can occur only in the selected -or current- work area. In Pegasus programming, work areas play a central role since they encapsulate access to databases. \r\n\r\nWhen a database is opened, a work area gets a symbolic identifier: the alias name. If not specified explicitly, the alias name is implicitly created from a database\'s file name. Thus, a work area has three important attributes and there are three functions to return this information. \r\n\r\nfuse(\'etf\', .f.)\r\n  opens etf file creating a new work area with alias \'etf\'\r\n\r\nfuse(_tmpfile, .f., \'temp\')\r\n  opens _tmpfile creating a new work area with alias \'temp\'\r\n\r\nWhen we want to change works area we use aselect() function. \r\n\r\nInformation from different work areas can be retrieved using the alias operator (->) and its alias name. Also, fields of multiple databases are accessed via alias reference. Referencing work areas with aliases is a fundamental operation and frequently used in programming with multiple databases, or work areas, respectively. The following lines of code show some basic operations: \r\n\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\n\r\ndbopen(\'t00\', \'t00_d\', .f.)\r\n\r\naselect(\'t00\')\r\n##IF seek_var(etf->p21)\r\n  rec_lock()\r\n##ELSE\r\n  add_rec()\r\n##ENDIF \r\n\r\n\r\nRecord Pointer and dBase fields\r\n-------------------------------\r\nWhen a work area is used, all data that is stored in a database file can be accessed. After a database is opened, the record pointer initially points to the first record. At runtime, the field variables of a program then contain the values that are stored in the first record. This means that a program can only access fields of the current record. In order to access data stored in different records, the record pointer must be moved. \r\nDatabase navigation must occur in a work area: \r\n\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\n? recno()   // result: 1 \r\n? etf->p19  // result: DEMO SA\r\n\r\ndbgoto(10) \r\n? Recno()   // result: 10 \r\n? etf->p19  // result: NKLS S.A.\r\n\r\ndbclose(\'etf\')\r\n\r\nThis example demonstrates that the contents of field variables change when the record pointer is moved. Records are selected by navigating the record pointer and this is the only way to access all data stored in a database file. The next table lists important functions used in the context of database navigation: \r\n\r\nFunctions and commands for database navigation \r\n\r\n  Function        Command    Description                             \r\n\r\n  Bof()                      Beginning of file is reached?           \r\n  Eof()                      End of file is reached?                 \r\n  DbSkip()        SKIP       Moves the record pointer                \r\n  DbGoTo()        GOTO       Moves the record pointer to a           \r\n                             particular database record              \r\n  DbGoTop()       GO TOP     Moves the record pointer to the         \r\n                             first database record                   \r\n\r\n  DbGoBottom()    GO BOTTOM  Moves the record pointer to the         \r\n                             last database record                    \r\n  RecNo()                    Returns the record pointer              \r\n\r\n \r\nThe functions Recno() and DbSkip() are by far the most important functions for database navigation. The former returns the record pointer and the latter changes it. Also, the two functions Bof() and Eof() are used very often. They indicate whether the record pointer has reached the boundaries (top or bottom) of a database file. \r\n\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\ndbgotop()\r\n##IF eof() .or. bof()\r\n  dbclose(\'etf\')\r\n  ##RETURN\r\n##ENDIF \r\n\r\n##DOWHILE eof()=.f. .and. recno()<=100\r\n  msginfo(etf->nr01)\r\n  aselect(\'etf\')\r\n  dbskip()\r\n##ENDDO \r\n\r\ndbclose(\'etf\')\r\n\r\n','2005-12-02','12:22:04','dias','0100-01-01','','',''),(339,'*03. MULTI-USER','Pegasus and Multi-User Environment','','','THR','','B','Databases in a multi-user environment \r\n-------------------------------------\r\nPegasus Applications are by default for multi-user environment. \r\n\r\nYou must take care about some rules, using dBases to a multi-user environment. \r\n\r\n1. Allways opens dBases as shared \r\n   set argument mode equal to .f. - not exclusive - to functions fuse(), dbopen()\r\n\r\n2. Open dBases as exclusive only if it is necessery\r\n\r\n3. Lock a record before change it\r\n   rec_lock()\r\n   replfld(\'etf\', \'p19\', \"\'test\'\")\r\n\r\n4. add_rec() locks the record. So you can write\r\n   add_rec()\r\n   replfld(\'etf\', \'p19\', \"\'test\'\")\r\n\r\n5. Unlock a record after change it, to make it available to other users\r\n   rec_lock()\r\n   replfld(\'etf\', \'p19\', \"\'test\'\")\r\n   dbunlock()\r\n\r\n\r\n','2005-12-02','12:22:34','dias','0100-01-01','','',''),(340,'*02. INDEXES','Fast search of data using index files','','','THR','','B','Fast search of data using index files \r\n-------------------------------------\r\nSearching and retrieving stored data in large databases is an important and extremely time critical operation. A sequential search, is too slow to locate specific data within large databases in a reasonable period of time. \r\nIndex files, which are opened along with a database in a work area, are used to accomplish this task. \r\n\r\n**************\r\nWe can define up to 10 indexes for each Pegasus dBase. \r\n**************\r\n\r\nAn index file logically sorts a database based on an index key. This index key is an expression which refers to one or more fields within the database. An index file contains an entry for each record of the database along with the value of the index key for that record. The entries in the index file are sorted using a binary tree mechanism and reference the corresponding records in the database. \r\n\r\nIf data is searched using an index file, it can be found much faster than with a sequential search in the database itself. This is because the search is based on a binary tree. For example: in a database with 1000 records, a worst case sequential search examines all 1000 records in order to find a single record. The search in an index file performs a maximum of 10 tests to find any specific record. \r\nDatabase programming of large databases is not practical without the use of index files. Generally, an index file contains a subset of the fields of a record and the index key determines the order in which the records of a database are logically sorted. But the index key itself defines the search criteria which must be used when searching for stored data. Example: \r\n\r\n\r\ndbopen(\'etf\', \'etf_d\', .f.)    // open etf dBase and it\'s indexes with 1rst index as default\r\n? p19                          // result: DEMO S.A.\r\n \r\ndborder(\'etf\', \'etf_d\', \'p19\') // order by p19 \r\n? p19                          // result: ALPHA S.A.\r\n? seek_var(\'DEM\')              // result .f. (not found) but goes to next valid\r\n? p19                          // result: DEMO S.A.\r\n? seek_var(\'DEMO S.A.\')              // result .t. (found)\r\n? p19                          // result: DEMO S.A.\r\n\r\n\r\nWhen we open a Pegasus dBase using dbopen() all indexes of this dBase are opened too. \r\nYou must use ALLWAYS dbopen() to open a Pegasus dBase, because if you open a dBase without open the indexes, then these indexes aren\'t updated with changes, so they can\'t be used safely for searching. \r\n\r\nAnother way to open a dBase is using fuse() and openntx()\r\n\r\ndbopen(\'etf\', \'etf_d\', .f.)\r\n\r\nis exactly same as\r\nfuse(\'etf\', .f.)\r\nopenntx(\'etf_d\', \'etf\')\r\n\r\nWe stronngly recommend use of dbopen() function. \r\n\r\n\r\nChange Active Index\r\n-------------------\r\nWhen you move pointer to a dBase (using dbgotop(), dbgobottom(), dbskip(), seek_var), Pegasus uses the Active Index to do it. \r\n\r\nWhen you open a dBase Active Index is the first defined to screen class, according to field sequense. \r\n\r\nIf you want to change Active Index, use dborder() function. \r\nYou can also use set_order(), but because set_order() defines the index by sequense, if you change the sequense of indexed fields to screen class, it can destroy your search code. \r\n\r\nSo we recommend using of dborder(). \r\n\r\n\r\nDefine Indexes to a Pegasus dBase\r\n---------------------------------\r\nWhen we create a data class, using a screen class, an importand desission is the indexed fields we\'ll set. \r\n\r\nHow we deside what indexes to use: \r\n1. Often (i think allways) nr01 field is indexed, as we use it as unique key to dBase. \r\n2. Fields that must be unique (for example customer code) are indexed. \r\n3. Fields that often will be used for search (Name, Company)\r\n4. Fields that relates records of dBase with records from anothet dBase. \r\n\r\n\r\nWe can create indexes, using expression. \r\nAn index expression (index key) can contain several fields from a file. This allows the data to be logically sorted on several fields (columns). The values of fields having differing data types must be converted to a single data type. Always designing the index keys to return character values is recommended. \r\n\r\nTo create an index in strict alphabetical order, character values must be converted to upper case using the function Upper() or abschr(). Otherwise, the sorting occurs based on the ASCII values of the characters. \r\n\r\nAn index expression must always return a value of consistent length. Indexing character values using the function RTrim() leads to a defective index, since the resulting values have varying lengths if they have blank spaces at the end. \r\n\r\nWhen date fields are combined with other fields in an index, date values should always be converted to character values using the function DtoS() and never with DtoC(). Otherwise, chronological order is not preserved. \r\n\r\nOnly field variables (database fields), and not memory variables, should be used in an index expression. Memory variables exist only at runtime and if they are referenced in an index expression, it will probably lead to a defective index. \r\n\r\n','2005-12-02','12:22:26','dias','0100-01-01','','',''),(341,'-00. PEGASUS STATEMENTS','Pegasus Statements','','','THR','','B','You can use all Pegasus Statements to Pegasus Methods (see functions dopeg() and dopegobj() for methods calling). \r\nA line of a method must have a statement or a function. \r\nYou can continue a line t the next one using character ; to the end of it. \r\n\r\nFor example \r\n\r\nIF(etf->nr01<=10, msginfo(\'small\'), masginfo(\'big\') )\r\nis the same as\r\n\r\nIF( etf->nr01>=0, ;\r\n     msginfo(\'small\'), ;\r\n     msginfo(\'big\') )\r\n\r\n\r\nAs you can see all Pegasus Statements starts with ##. \r\n\r\n1.  Comments\r\n--------------------\r\nAny line that starts with \r\n*\r\n//\r\n### \r\nis a comments\r\nAlso in a line anything follows // is comment\r\n\r\nexample \r\n     * This is a comment\r\n     ### This a comment too\r\n    // Another one comment\r\n\r\n\r\n2. Message\r\n------------------\r\nCommand ? (? is the first character of line) shows a message box. \r\n? <message>  // <message> as string>\r\n? <exp>         //  shows the result of expressin <exp>\r\n\r\n   example\r\n       ? \"This is a test message\"\r\n       ? \"Name \" + etf->p19\r\n\r\n\r\n3. Flow control command \r\n-------------------------------------\r\n##IF <condition>\r\n  exp1\r\n  exp2\r\n##ELSE\r\n  exp3\r\n  exp4\r\n##ENDIF\r\nIf the condition <condition> it is valid, runs the suite of expressions 1, 2 , else the suite of expressions 3, 4\r\n\r\n  example\r\n\r\n   ##IF etf->nr01<10\r\n      ? Small Code\r\n   ##ELSE\r\n     ? Big Code\r\n  ##ENDIF \r\n\r\n4. Loop Command DO WHILE\r\n-----------------------------\r\n##DOWHILE  <condition>\r\n  exp1\r\n##ENDDO\r\n\r\nexecutes expressions exp1 while <condition> = .t.\r\n\r\nexample \r\n\r\n   aslect(\'etf\')\r\n   dbgotop()\r\n   ##DOWHILE eof() = .f.\r\n     ? etf->nr01\r\n     dbskip()\r\n   ##ENDDO\r\n\r\n5. Loop Command REPEAT UNTIL\r\n-----------------------------\r\n##REPEAT \r\n  exp1\r\n##UNTIL <condition>\r\n\r\nexecutes expressions exp1 until <condition> = .t.\r\n\r\nexample \r\n\r\n   aslect(\'etf\')\r\n   dbgotop()\r\n   ##REPEAT \r\n     ? etf->nr01\r\n     dbskip()\r\n   ##UNTIL eof()=.t.\r\n\r\n\r\n6. End command:\r\n##RETURN <ret>\r\nCompletes the method and returns string <ret> (when method is called with dopeg() ).\r\n\r\n##RETURN &<exp> \r\nCompletes the method and returns the result of expression <exp> (when method is called with dopeg() ).\r\n\r\nExample \r\n   ##RETURN test           //returns string test\r\n   ##RETURN &etf->p19  // returns etf->p19 value\r\n\r\n\r\n7. Ramification command:\r\n--------------------------------------\r\n##GO <num>\r\nDrive the running flow to the line <num>.\r\nor\r\n##GO ##L:<label>\r\nDrive the running flow to the line ##L:<label>\r\n\r\n8. Define Variables \r\n##VAR _var1=<expr1>, _var2=<expr2>, ....\r\nDefines variables with their initial value. \r\n\r\ni.e. \r\n##VAR _test=\'test string\', _num=10, _date=date()\r\n\r\n\r\n9. Try Area\r\n\r\nThe statements to a try area, are checked before executed. It is useful for cases you need to execute functionw that are valid for some cases\r\n\r\n##BTRY\r\n   <pegasus functions>\r\n##ETRY\r\n\r\ni.e. \r\np_val(2np19, \"\'test sa\'\")\r\n##BTRY \r\n  refrit(op19)\r\n##ETRY','2009-07-28','19:18:26','dias','0100-01-01','','',''),(342,'GETFARRAY()','Fills an array with fields properties od a screen class','getfarray(@_farray, @_titarray, _desc, _onlyindexed, _fieldtypes)','C','DBPEG','getavar(), ?query?runp032','W3','Usage:  Fills an array with fields properties of a screen class\r\nIt uses only fields with not empty \"Searching Title\" \r\n\r\nParameters :\r\n_farray (a) : The array with properties\r\n                each element of array is an array with following structure\r\n                {Search_title, field_name, picture, Field_type, Field_Length, Field_Decimals, Field_Get_Width, Field_Get_Hight}\r\n\r\n_titarray (a) : An array with field Titles\r\n_desc (c) : Screen Class Name\r\n_onlyindexed (l) : if .t. then returns properties for only indexed keys. Otherwise for all\r\n_fieldtypes (c) : Tis argument is optional. With this you can define the types of field to return. If ommited then type NCDLM used. \r\n\r\nRETURN : the empty string\r\n\r\nExample\r\n\r\ngetFarray(@_arr1, @_arr2, \'etf_d\', .t.)\r\np_val(@_sort, \"listarray(_arr2, \'Sort By\', 100, 100, 600, 700, 0, .t.)\")\r\n\r\n##IF _sort<>0\r\n  aselect(\'etf\')\r\n  dborder(\'etf\', \'etf_d\', _arr1[_sort][2])\r\n  seek_var( getavar(\"GiveValue\", _arr1[_sort]) )\r\n##ENDIF \r\n\r\n','2017-07-13','16:12:41','tesae','0100-01-01','','',''),(343,'GETAVAR()','User give value to a variable','getavar(_title, _vararray, _cond)','','PEG','getfarray(), sayget(), msgget(), pegvar()','W3','Usage:  Creates a dialog box where user can give a value. \r\nIt uses properties of _vararray to create the get box. \r\n\r\nParameters :\r\n_title (c) : The title of dialog box\r\n_vararray (a) : An array with properties of value to returned. It usually contains field properties generated from getfarray()\r\n                each element of array is an array with following structure\r\n                {Search_title, field_name, picture, Field_type, Field_Length, Field_Decimals, Field_Get_Width, Field_Get_Hight}\r\n\r\n_cond (c) : (V3.11 and upper) The name of variable to return the selected condition. If the field is N or D user can select the condition (>, <, =)\r\n\r\n\r\nRETURN : the value user gives\r\n\r\nExample\r\n\r\ngetFarray(@_arr1, @_arr2, \'etf_d\', .t.)\r\np_val(@_sort, \"listarray(_arr2, \'Sort By\', 100, 100, 600, 700, 0, .t.)\")\r\n\r\n##IF _sort<>0\r\n  aselect(\'etf\')\r\n  dborder(\'etf\', \'etf_d\', _arr1[_sort][2])\r\n  seek_var( getavar(\"GiveValue\", _arr1[_sort]) )\r\n##ENDIF \r\n\r\n','2016-04-26','16:46:26','tesae','0100-01-01','','',''),(344,'ODBCUPDATE()','Updates a table.','odbcupdate(_table, _fieldsarray, _valuesarray, _where, _peg, _sess)','C','ODBC','odbcuse(), odbcinsert(), odbcdelete()','B','Executes UPDATE command of sql. \r\n\r\nArguments\r\n\r\n_table (c) : _table name\r\n_fieldarray (a) : an array with field names to update.  The elements of this array are strings\r\n_valuesarray (a) : an array with values to give.  If the elements of this array are not strings, transformed with odbcstr()\r\n_where (c) : The _where CLAUSE. If it is ommited then it executed for all records. \r\n                        Pegasus Executes odbcCommand(_where). See function description.\r\n\r\n_peg (l) : If it is .t. updates fields remdate, remtime, remuser. It must be .t. to Pegasus Tables. \r\n_sess (o) : Optional. The session use. default = default session\r\n\r\nRETURN the empty string. \r\n\r\nFunction executes internally a create_fld_list(_fieldsarray, _valuesarray, .t.)\r\n\r\nExample\r\n\r\nodbcupdate(\'etf\', {\'p19\', \'p2\'}, {\'TEST S.A.\', \'NIK\'}, \'nr01=10\')\r\n\r\nis equivallent to \r\nUPDATE INTO etf \r\nSET p19=\'TEST S.A.\', p2=\'NIK\'\r\nWHERE nr01=\'10\';\r\n\r\n\r\n','2016-05-09','12:15:40','tesae','0100-01-01','','',''),(345,'ODBCINSERT()','Inserts a record to a table.','odbcinsert(_table, _fieldsarray, _valuesarray, _peg, _sess, _dubl)','C','ODBC','odbcupdate(), odbcreplace(), create_fld_list()','B','Executes an INSERT sql command\r\n\r\nArguments\r\n\r\n_table (c) : _table name\r\n_fieldarray (a) : an array with field names to update.  The elements of this array are strings\r\n_valuesarray (a) : an array with values to give. If the elements of this array are not strings, transformed with odbcstr()\r\n_peg (l) : If it is .t. updates fields remdate, remtime, remuser. It must be .t. to Pegasus Tables. \r\n_sess (o) : Optional. The session use. default = default session\r\n_dubl (l) : Optional. Default = .f. . If =.t. then ON DUBLICATE KEY updates the record. \r\n\r\nRETURN the empty string. \r\n\r\nFunction executes internally a create_fld_list(_fieldsarray, _valuesarray, .t.)\r\n\r\n\r\nExample\r\n\r\nodbcinsert(\'etf\', {\'p19\', \'p2\'}, {\'TEST S.A.\', \'NIK\'})\r\n\r\nis equivallent to \r\nINSERT INTO etf \r\nSET p19=\'TEST S.A.\', p2=\'NIK\' ;\r\n\r\n\r\n\r\n','2015-11-05','10:05:38','tesae','0100-01-01','','',''),(346,'ODBCREPLACE()','Replaces Records to a table','odbcreplace(_table, _fieldsarray, _valuesarray, _peg, _sess)','C','ODBC','odbcupdate(), odbcinsert()','B','Executes REPLACE command of sql. (mySQL supports this command). \r\n\r\nIt is same as odbcinsert(), but if record exists (primary and unique keys examined) it executes a delete and an insert. \r\n\r\nArguments\r\n\r\n_table (c) : _table name\r\n_fieldarray (a) : an array with field names to update.  The elements of this array are strings\r\n_valuesarray (a) : an array with values to give.  If the elements of this array are not strings, transformed with odbcstr()\r\n_peg (l) : If it is .t. updates fields remdate, remtime, remuser. It must be .t. to Pegasus Tables. \r\n_sess (o) : Optional. The session use. default = default session\r\n\r\nRETURN the empty string. \r\n\r\nFunction executes internally a create_fld_list(_fieldsarray, _valuesarray, .t.)\r\n\r\nExample\r\n\r\nodbcreplace(\'etf\', {\'p19\', \'p2\'}, {\'TEST S.A.\', \'NIK\'})\r\n\r\nis equivallent to \r\nREPLACE INTO etf \r\nSET p19=\'TEST S.A.\', p2=\'NIK\' ;\r\n\r\n\r\n','2015-11-05','10:06:25','tesae','0100-01-01','','',''),(347,'ODBCDELETE()','Deletes a record from table','odbcdelete(_table, _where, _sess, _peg)','C','ODBC','odbcinsert(), odbcupdate()','B','Executes a DELETE sql command\r\n\r\nArguments\r\n========\r\n_table (c) : _table name\r\n_where (c) : WHERE CLAUSE, that defines records to be deleted. \r\n                        Pegasus Executes odbcCommand(_where). See function description.\r\n_sess (o) : Optional. The session use. default = default session\r\n_peg (l): Optional. Default = .t.. If =.t. then updates delete history (table p25 and <table>_dels table)\r\n\r\nRETURN the empty string. \r\n\r\nExample\r\n\r\nodbcdelete(\'etf\', \'nr01>=10\')\r\n\r\nis equivallent to \r\nDELETE etf  WHERE nr01>=10;\r\n','2016-12-09','17:32:04','tesae','0100-01-01','','',''),(348,'ODBCINITREC()','Initializes variables for getdata()','odbcinitrec(_file, _desc, _new, _truefields, _sess)','C','ODBC','initrec(), getdata() odbcrepldata()','B','Use to: Initialize the variables from one screen class, giving values from the fields of the current database record. It is necessary to be executed before the screen management with the getdata().\r\nFor each field is defining, the screen class, creates one variable named \"n\" + \"Field name\" and one Object named \"o\" + \"Field name\".\r\n\r\nIt is equivalent to initrec(), but for RDBMS. \r\n\r\nParameters:\r\n_file (c) : The database name of that record will initialize. The file has to be already opened and to be founded into the record you will manage.\r\n_desc (c) : The screen class will be used.\r\n_new (l) : If has the value .t. it is a new record\r\n_truefields (l) : if it is .t. it initializes only true fields (not the V, K, T). IF ommited assumed =.f.\r\n_sess (o) : Optional. Session of data. Id not nil then  IF _sess:cargo[2] <> 0 (see odbcget_names) converts any string to strchcp(_st,  _session:cargo[2], 0) It is usefully if conected for example to a utf8 database. \r\n\r\nReturns an empty string character\r\n\r\nExample\r\n\r\nodbcuse(\'SELECT * FROM etf WHERE nr01=\"10\";\', .f., \'etf\')\r\n\r\nodbcinitrec(\'etf\', \'etf_d\', .f.)\r\n##IF getdata(\'etf\', \'etf_d\', .f., 10, .t., 1)\r\n  odbcrepldata(\'etf\', \'etf_d\', .f.)\r\n##ENDIF \r\ndbclose(\'etf\')\r\n\r\n','2011-02-21','16:39:36','tesae','0100-01-01','','',''),(349,'ODBCREPLDATA()','Updates or insert a record to a Pegasus Table','odbcrepldata(_table, _desc, _new, _all, _cgi, _nr01, _sess, _ondbl,  _binlen, _binsil)','C','ODBC','repldata(), odbcinitrec(), getoldform()','B','Use to: Save the changes done to one record using GETDATA(). After update, unlock automatically the record.\r\nIt used too for changes done to a form (Pegasus for Web) with getoldform()\r\n\r\nParameters:\r\n_file (c) : the data class will update.\r\n_desc (c) : the screen description class uses\r\n_new (l) : define if it is a new record (.t.) or an old one (.f.).\r\n_all (l) : Optional. Default=.t.. If it is .t. replaces all fields, else it replaces only the fields with \"Special Repldata not Update it\" unchecked. \r\n_cgi (l) : if it is .t. replaces then the values of fields are given from variable(<fieldname>). IT is used ONLY from pegasus for web with getoldform(). If ommited assumed .f.\r\n_nr01 (n) : The nr01 value for record to be updated or inserted. IT is used ONLY from pegasus for web with getoldform().\r\n_sess (o): Optional. The odbc session use to execute insert or update \r\n_ondbl (l): Optional. Default=.f. If it is .t. .and. _new=.t. then executes an insert with ON Douplicate Statement. \r\n_binlen (n): Optional. Default = 1024. The stream length for binary data to be uploaded\r\n_binsil (l): Optional. Default=.f. If .t. then the binary data (if exists) uploaded without progress window\r\n\r\n                 \r\nReturns an empty string characters suite .\r\n\r\n\r\nExample:\r\nodbcinitrec(\'etf\', \'etf_d\', .f.)\r\n##IF getdata(\'etf\', \'etf_d\', .f., 10, .t., 1)\r\n  odbcrepldata(\'etf\', \'etf_d\', .f.)\r\n##ENDIF \r\ndbclose(\'etf\')\r\n','2014-06-04','13:45:06','tesae','0100-01-01','','',''),(350,'CREATE_FLD_ARRAYS()','creates arrays with fields information','create_fld_arrays(_desc, @_fields, @_values, _cgi, _all, _morefields, _morevalues, _notxfields, @_xarray)','C','ODBC','odbcinsert(), odbcupdate()','B','Creates arrays with fields and values as they used from odbcinsert(), odbcupdate(). \r\n\r\nArguments\r\n\r\n_desc (c) : Screen class \r\n_fields (a) : The array that will be filled with field names\r\n_values (a) : The array that will be filled with field values\r\n_cgi (l) : [Optional def=.f.]\r\n            If it is .t. then values are from CGI FORM. Otherwise values are variables with name n + <field name> (as odbcinitrec() creates). \r\n_all (l) :  [Optional def=.t.]\r\n             If it .t. it uses all fields from screen class. Otherwise it uses the fields that are specified \"Repldata Not Update it\"=.f. to screen class\r\n_morefields, _morevalues(a) : [Optional]. If exist these arrays defines fields and values that aren\'t defined to screnn class. \r\n\r\n_notxfields (l) : Optional. Default=.f. You must set it = .t. when creates arrays for a dbPegasus dbase\r\n\r\n_xarray (a): Optional. If exists then returns an array of 2 element arrays with field name and value of binary fields { {field name, value} }. It is usefull to update binary fields using odbcbinupd()\r\n\r\nThis function is used internally, but it is usefull when we want to create SQL Comments to update tables manually. (see Pegasus PCS)\r\n\r\n\r\n','2014-06-04','16:22:58','tesae','0100-01-01','','',''),(351,'CREATE_TABLE_DEFIN()','Creates an array with table definition, from a screen class','create_table_defin(_desc, _morefields, _multi, @_retfldarr, _morefldarr, @_script, _noindexes)','A','ODBC','odbccrtable()','B','Reads a screen class and fills an array with statements to create it. \r\n\r\nArguments\r\n_desc (c) :  Screen Class. If empty then uses only _morefields. The  table is a not Pegasus Table. \r\n_morefields (a) : [Optional].  If exists, it used to add fields and keys to table (more than these defined from screen class). \r\n\r\n_multi (l): Optional. Def=.f.. If .t. then creates the multylanguage mirror table. \r\n_retfldarr (a): Optional. if exists then returns to this array, an array with only the fields of table to be created. Usefull to compare with columns of table. \r\n_morefldarr (a): Optional. If exists it must contains more fileds added to screen. Used to add to _retfldarr. \r\n_script (m): The script with view-triggers commands to execute for table\r\n_noindexes (l): Optional. Default=.f.  If .t. then not creates indexes\r\nRETURNS the array with definitions\r\n\r\nsee odbccrtable for details','2015-06-25','15:05:02','tesae','0100-01-01','','',''),(352,'ODBCISTABLE()','Search if exists a table','odbcIsTable(_table, _sess, _nolocal)','L','ODBC','odbcchanstru()','B','Search if exists a non temporary table. \r\n\r\nIt uses the SQL \"SHOW TABLES\" statement. \r\n\r\nArguments \r\n _table (c) : The table name to search for. \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n_nolocal (l): Optional. Default=.f.  If .t. then look directly to data base and not to local saved information (cashe)\r\n\r\nExample\r\n\r\nodbcIsTable(\'etf\')\r\n\r\n\r\n\r\n','2014-04-09','17:40:40','tesae','0100-01-01','','',''),(353,'ODBCCRTABLE()','Creates a table, using a Pegasus Screen Class','odbccrtable(_table, _desc, _morefields, _sess, _defcharset, _defcol, _multi, _temporary, _triggers, _engine, _noindexes)','C','ODBC','odbcchanstru(), odbcappend()','B','It executes a SQL command CREATE TABLE, using the definitions of a Pegasus Screen Class. \r\n\r\nArguments\r\n_table (c) : the new table name\r\n_desc (c) : The screen class used to create table. If empty then uses the _morefields only. The table isn\'t a Pegasus Table.\r\n_morefields (a) : [Optional] An array with more definitions. \r\n                        If this array exists it must define the Primary KEY. \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n_defcharset (c): Optional. It is the Character Set of Table Default =\'greek\' \r\n_defcol (c): Optional. It is the Collation Default =Character Set Default\r\n_mutli (l): Optional. Def=.f.. If .t. then creates a parallel table for multylingua. \r\n_temporary (l): Optional. Default = .f. If .t. then table is temporary\r\n_triggers (l): Optional. Default = .t. If .t. then creates and table triggers if exists\r\n_engine (c): Optional. Default = \'InnoDB\' The table Engine\r\n_noindexes (l): Optional. Default=.f.  If .t. then not creates indexes\r\n\r\nIF _morefilds=nil .and. (_temporary=nil .or. _temporary=.f.) then executes the Views-trigger script too\r\n\r\nData Types Convertion. \r\n***************************\r\nBecause Pegasus Data Types aren\'t same as RDBMS (Pegasus uses xBase data types), odbccreate() convertes Pegasus Data Types as follows : \r\n\r\nC  (to 255 characters)-> char()\r\nC  (more than  255 characters)-> LongText\r\nN with not decimals -> integer()\r\nN with decimals -> decimal()\r\nL -> tinyint(1)\r\nD -> date with default value 01/01/0100. You can define default date value assigneing the variable odbc_zdate, after odbcconnect()\r\nM -> LongText\r\nX -> LongBlob\r\n\r\nIndexes\r\n*********\r\nAll indexed keys to screen class (1=sorted) creates KEYS to RDBMS. \r\nIn this case you can specify to Index Expression (to screen class) the expression of keys as follows \r\nU: -> unique key\r\nK: -> key\r\nP: -> Primary Key\r\n\r\ni.e. K: (p19, p2, p3)\r\n      P: (p00, nr01)\r\n\r\nIf you haven\'t specify Primary key to Screen Class, nr01 is the Primary Key of table. \r\n\r\n\r\nExample. \r\n\r\nodbcCrTable(\'pcsetft\', \'etf_d\',  { \"remlnnet int(10) default\'0\'\", ;\r\n                                             \"PRIMARY KEY (remlnet, nr01)\"} )\r\n\r\n\r\n\r\n\r\n\r\n','2018-07-12','11:09:30','tesae','0100-01-01','','',''),(354,'ODBCCHANSTRU()','Changes the structure of a table.','odbcChanStru(_table, _desc, _morefields, _exists, _session, _defcharset, _defcol, _notupdp07, _notrigger, _engine, _noindexes)','C','ODBC','odbcCrTable()','B','Changes (ALTER) the structure of a table using s Pegasus Description File (_desc). \r\nUpdates too the p07.p105=date() and p07.p106=time() \r\n(p07 = Pegasus tables catalogue)\r\n\r\nArguments\r\n_table (c) : the new table name\r\n_desc (c) : The screen class used to create table. If empty, then creates a non Pegasus table with morefields\r\n_morefields (a) : [Optional] An array with more definitions. \r\n                        If this array exists it must define the Primary KEY. \r\n_exists (l): Optional. Default .t. \r\n                If it is .t. then it appends data from table. If it is .f. the table is empty after Change Structure\r\n_session (o) : Optional. Default = current odbc session. \r\n_defcharset (c): Optional. It is the Character Set of Table Default =\'greek\' \r\n_defcol (c): Optional. It is the Character Collation of Table Default =greek_general_ci\' \r\n_notupdp07 (l): Optional. Deafult =.f.  If .t. then not updates p07.p105 and p07.p106 fields. \r\n_notrigger (l): Optional. Deafult =.f.  If .t. then not creates triggers of table. \r\n_engine (c): Optional. Default = \'InnoDB\' The table Engine\r\n_noindexes (l): Optional. Default=.f.  If .t. then not creates indexes\r\n \r\nIt is same as odbcCrTable(), but odbcChanStru() changes an existing Table.\r\n\r\nIF _morefilds=nil  then executes the Views-trigger script too','2015-06-25','15:10:13','tesae','0100-01-01','','',''),(355,'FIND_COMMON_FIELDS()','Finds common fields from 2 tables','find_common_fields(_table1, _table2)','A','ODBC','odbcCrTablE(), odbcAppend()','B','It finds the fields that exists (with same name) to both of 2 tables.\r\n\r\nIt used internally from odbcAppend()\r\n\r\nReturns (a) the array with Fields\r\n\r\nArguments\r\n  _table1, _table2 (c) : The 2 tables to compare\r\n\r\nThese tables must be opened with odbcuse() before call function\r\n','2018-11-09','17:34:09','tesae','0100-01-01','','',''),(356,'CREATE_LIST()','Creates a , separated list from an array elements','create_list(_array, _quotes, _separator, _noq_array)','A','ODBC','','B','It creates a list (as string) from an array elements. \r\nIt used internally to create SQL Commands. \r\n\r\nAtrguments \r\n  _array (a) : The array of elements to create list. The elements are string\r\n _quotes (l) : (Optional) if .t. then Pegasus sets the values into quotes, else the values must have the quotes. \r\n _separator (c): Optional. The separator string. Default = \', \'\r\n _noq_array (a): Optional. An array with elements (position) or _array, not tobe quoted                  \r\n','2013-09-17','11:58:31','tesae','0100-01-01','','',''),(357,'ODBCAPPEND()','Appends records from a table to another','odbcappend(_target, _source, _where, _sess, _moreflds, _morvals)','C','ODBC','','B','Appends records from a table to another. \r\n\r\nArguments\r\n  _target (c) : Target Table\r\n  _source (c) : Source Table\r\n  _where (c) : condition for records appended\r\n                        Pegasus Executes odbcCommand(_where). See function description.\r\n  _sess (o): Optional. the odbc session. Default = current session\r\n  _moreflds (a): Optional. Array with more fields to be updated. \r\n  _morvals (a): Optional. Array with more values to update more fields. _moreflds and _morevals are arrays with same length\r\n  _\r\nExample\r\n\r\nodbcAppend(\'etf\', \'etfold\', \'nr01>100\')\r\n\r\nAppends records from etfold to etf\r\n\r\n','2016-05-09','12:16:18','tesae','0100-01-01','','',''),(358,'ODBCSET()','reads and sets values to ODBC properties','odbcset(_session, _property, _newval)','','ODBC','odbcon()','','Sets and reads values of ODBC properties\r\n\r\nReturns the property value\r\n\r\nArguments\r\n_session (o) : (optional) The odbc session. If ommited then the default odbc session used. \r\n_property (n) : The code of property to read or to set\r\n_newval  : The new value for property. If ommited then function only reads the property value. \r\n\r\n\r\n\r\nAfter a session object was established, these properties can be either read only or also modified using the :setProperty() method. The assignable properties will influence subsequent operations on that session, like DbCreate() or DbUseArea(). The readonly attributes are either properties determined by the driver or are properties configured by a preceding call to DbeInfo(). \r\n\r\nPROPERTIES you can SET/Read  \r\n                    \r\n1= ODBCSSN_SQLSTATE_INFO      ( 1) // RW: enable SQLSTATE in getLastMsg.\r\n2= ODBCSSN_NATIVE_ERROR_INFO  ( 2) // RW: enable NATIVE Error in getLastMsg.\r\n3= ODBCSSN_CURRENT_DATABASE   ( 3) // RO: return database name\r\n4= ODBCSSN_DATATYPES          ( 4) // RO: types supported for this source\r\n5= ODBCSSN_XPP_TO_ODBC        ( 5) // RO: data type map array for CREATE\r\n6= ODBCSSN_ODBC_TO_XPP        ( 6) // RO: datatype mapping array \r\n7= ODBCSSN_CURSORTYPE         ( 7) // RW: ODBC cursor type\r\n8= ODBCSSN_CONCURRENCY        ( 8) // RW: ODBC concurrency setting\r\n9= ODBCSSN_SCROLLABLE         ( 9) // RW: cursor scrollability\r\n10= ODBCSSN_SENSITIVITY        ( 10) // RW: cursor sensitivity\r\n11= ODBCSSN_DROP_BEFORE_CREATE ( 11) // RW: issue DROP before CREATE autom.\r\n12= ODBCSSN_INDEX_AUTOOPEN     ( 12) // RW: open index if any or ignore\r\n13= ODBCSSN_LONGDATA_THRESHOLD ( 13) // RW: long data optimization\r\n14= ODBCSSN_USE_CURSOR_LIB     ( 14) // R:  use ODBC cursor library (see DBE)\r\n15= ODBCSSN_SERVER_NAME        ( 15) // R:  server name\r\n16= ODBCSSN_DBMS_NAME          ( 16) // R:  DBMS name\r\n17= ODBCSSN_DBMS_VERSION       ( 17) // R:  DBMS version ##.##.####\r\n18= ODBCSSN_CODEPAGE           ( 18) // RW: codepage of DBMS (see collat.ch)\r\n19= ODBCSSN_DRIVERODBC_VERSION ( 19) // RW: driver odbc version as numeric\r\n20= ODBCSSN_MORE_RESULTS       ( 20) // W:  number of result set to retrieve\r\n21= ODBCSSN_TIMESTAMP_AS_DATE  ( 21) // RW: use timestamp types as D (date)\r\n22= ODBCSSN_IGNORE_DROP_ERRORS ( 22) // RW: ignore drop-errrors before CREATE\r\n23= ODBCSSN_CLEAR_ERROR        ( 29) // W:  clear getLastError/Message\r\n24= ODBCSSN_RESET_DEFAULTS     ( 30) // W:  reset defaults for next USE\r\n\r\n','2005-12-27','18:38:42','dias','0100-01-01','','',''),(359,'OPENDESC()','open a screen class (descreption file)','opendesc(_class, _mode, _readonly, _reindex, _alternate)','C','DBPEG','','W3','Opens a screen class file (using the indexes too). \r\n\r\nArguments\r\n  _class (c) = the screen class name\r\n  _mode (l) = locked (.t.) or .not. (.f.)\r\n  _readonly (l) = (Optional. Default = .t.) if .t., then it opened for readonly purposes \r\n  _reindex (l) = (Optional. Default=.f.) If .t. then create the index needed for description file. \r\n  _alternate (l): (Optional. Default = .t.) If it is .f. then not checks if exists the description file into peg_alternate folder and opens the original one. Pegasus by default when opens  i.e. basic\\_001\\a00_d description file, if exists the basic\\peg_alternate\\a00_d.dbf opens this one. \r\n\r\nAlso if exists ..\\..\\localdata\\integrity\\\' + <module> + \'_\' + _class + \'_mode_\' + pegtrim(ker_mode) + \'.dbx\' reads into this file, the class file to open. \r\n              <module> = directory fo _desc. If _desc is stored to basic\\_001\\ then <module>=basic\r\n              ker_mode = application can gives a value for extra cheks.','2014-09-04','18:00:50','tesae','0100-01-01','','',''),(360,'ODBCTRANS(), ODBCSQLTRANS()','Translates a command to execute it','odbctrans(_command, _startchr, _endchr, _ltrim, _lxml, _odbc)','C','ODBC','odbcexec()','B','This function precompile a Pegasus instrauction to send it to ODBC driver. \r\n\r\nFor SQL commands we can use odbcSQLtrans() that retruns odbctrans(_command, , , , , .t.)\r\n\r\nArguments\r\n\r\n_command (c) : command to precompile\r\n_startchr (c) : The character (or set of characters) that used for start variable. If ommited it uses {\r\n_endchr (c) : The character (or set of characters) that used for end variable. If ommited it uses }\r\n_ltrim (l): Optional. Default .f. If .t. then returns the trim() of result\r\n_lxml (l): Optional. Default .f. If .t. then returns the strToXml() of result\r\n_odbc (l): Optional. Default .f. If .t. then uses ToStr(_ret, .f., .t.) for result, than ToStr(_ret) when it is .f. . It is usefull when result will be used to SQL commands\r\n\r\n\r\nReturns a string with precompiled command. \r\n\r\nExample\r\n\r\np_val(@_p2, \"etf->p2\")\r\np_val(@_nr01, \"etf->nr01\")\r\n\r\nODBCUSE( odbctrans(\"SELECT * FROM etf WHERE p2=\'{_p2}\' && nr01=\'{_nr01}\';\"), .f., \'etf\')\r\n\r\n\r\n','2016-05-06','18:38:36','tesae','0100-01-01','','',''),(361,'DBCREATE()','Creates a dbf file','dbcreate(_filename, _strucar)','U','DBPEG','','W3','Parameters \r\n\r\n_filename (c) : The name of file to create. \r\n\r\n_Strucar (a) : An array with structire of dbf to create. It is a two dimensional array containing the structure of _filename . Each subarray contains the specification for a field and must include the following: \r\n\r\n Structure for a subarray to the field specification \r\n\r\n  Element No.  Description     Constant in Dbstruct.ch    \r\n\r\n  1            Field name      DBS_NAME                   \r\n  2            Field type      DBS_TYPE                   \r\n  3            Field length    DBS_LEN                    \r\n  4            Decimal places  DBS_DEC                    \r\n\r\n\r\nReturn \r\n\r\nThe return value of DbCreate() is always NIL. \r\n\r\n','2006-01-26','15:51:06','dias','0100-01-01','','',''),(362,'CREATE_SEL_DESC()','Creates a select command to execute','create_sel_desc(_table, _desc, _where, _orderby, _limitfrom, _limit, _query, _nogrp, _onlybr, _moreflds)','C','ODBC','create_sel_com(), odbcput()','B','Creates a SELECT command using the description class of table. \r\nIt is same as create_sel_com(). The main difference is that create_sel_desc() uses a Screen Class to create the field list of SELECT command. \r\n\r\nThe <Field List> created with followin rulles\r\na. If it is a real field (type = C, X, D, N, L, M) it gets the field\r\nb. If it is a variable field (type=V, T, K) and browse value is like \r\n    =<field>, <where>  it gets the <field> and creates <where clause>\r\n\r\nReturns (c) the query. \r\n\r\nArguments\r\n=========\r\n       _table (c) : table name\r\n\r\n       _desc (c) : Screen Class\r\n\r\n       _where (c) : Optional. Default=\'\'. \r\n                     WHERE CLAUSE. This is the condition for records to select. If empty string then the SELECT command willn\'t have WHERE clause\r\n                     Pegasus Executes odbcCommand(_where). See function description.\r\n\r\n       _orderby (c) : Optional. Default=\'\'. \r\n                      List of fields to order by the select result. If empty string then the SELECT command willn\'t have ORDER BY clause\r\n\r\n       _limitfrom (n) : Optional. Default =0. \r\n                        The record number start from -1. \r\n\r\n       _limit (n) :  Optional. Default =0. \r\n                     The number of records to return. If is equal to 0, then returns all records match to _where.\r\n\r\n       _query (c): Optional. Default = \'\'. \r\n                   It is a query that can be used as a table. \r\n                   It is usefull for views. If it isn\'t empty, then the SELECT created like: \r\n                   SELECT <fields> \r\n                   FROM (  <_query> ) AS _table\r\n\r\n       _nogrp (l) :Optional. Default = .f. . \r\n                   If set it to .t. then returns SELECT command without the GROUP BY \r\n                   (if description class needs one). \r\n\r\n       _onlybr (l): Optional. Default = .f. . \r\n                    If .t. then select uses only browsed fields and nr01. \r\n                    In this case haven\'t the left join on tables. \r\n\r\n       _moreflds (a): Optional. Default ={}. \r\n                      It used if _onlybr=.t..  \r\n                      Contains more fields must be used to select, added to browsed.\r\n\r\nExample\r\n=======\r\n    create_sel_desc(\'d01\', \'..\\..\\csm\\_001\\d01_d\')\r\n','2018-11-08','15:29:11','tesae','0100-01-01','','',''),(363,'CREATE_SEL_FLD()','Creates fields list, where clause and from list','create_sel_fld(_table, _desc, @_fielflist, @_fromlist, @_where, @_leftjoin, @_groupstr, @_grfldstr, @_grleftjoin, @_fldar, _onlybr, _moreflds, _initwh)','C','ODBC','create_sel_desc(), odbcput()','B','It reads a Screen Class and creates \r\n   fieldlist, where clause and from list sould be used to a SELECT command to get the fields. \r\n\r\nIt used internally from create_sel_dec(). \r\n\r\nReturns The empty String\r\n\r\nArguments\r\n  _table (c) = table name\r\n  _desc (c) = Screen Class name\r\n  _fieldlist (c) = The string variable that will get the field list function creates\r\n  _fromlist (c) = The stirng variable  that will get the FROM list function creates\r\n  _where (c) = The stirng  variable that will get the extra WHERE clause function creates\r\n  _leftjoin (c) = Optional. The stirng  variable that will get the LEFT JOIN clause function creates\r\n  _groupstr (c) =  Optional.The stirng  variable that will get the GROUP BY clause function creates\r\n  _grfldstr (c) =  Optional.The stirng  variable that will get the fields created from group by\r\n  _grleftjoin (c) =  Optional.The stirng  variable that will get the LEFT JOIN clause function creates needed for GOUP BY \r\n   _fldar (a)  =  Optional.Array with an element for any field used ({ physical field name, source, alias})\r\n   _onlybr (l): Optional. Default = .f. . If .t. then select uses only browsed fields and nr01. In this case se haven\'t the left join on tables. \r\n   _moreflds (a): Optional. Default ={}. It used if _onlybr=.t..  Contains more fields must be used to select, added to browsed.\r\n   _initwh (c) : Optional. The initial where will be used to final query. Used to limit the Left Join clausses\r\n\r\n','2015-12-14','09:50:25','tesae','0100-01-01','','',''),(364,'SPEC_CHAR()','sends special characters to ODBC','spec_char(_str, _like)','C','ODBC','odbcupdate()','B','It changes a string using special characters to send it to SQL \r\n\r\nFor example \r\n  \\  -> \\\\\r\n \'  -> \\\'\r\n \" -> \\\"\r\n\r\nReturns The new string you must use to SQL command\r\n\r\nArguments \r\n  _str (c) : The string you want to change\r\n  _like (l): Default = false. If it is true then transforms the characters needed fo LIKE expression too\r\n\r\nExpample\r\n\r\n  ? spec_char( \" this is a \'string\' \")  \r\n     * returns this is a \\\'string\\\'\r\n\r\n','2018-09-28','10:56:43','tesae','0100-01-01','','',''),(365,'ODBCCOND()','Creates a where clause for search to a table with a field','odbccond(_table, _field, _value, _type, _acd, _stype)','C','ODBC','odbclist()','B','Creates the WHERE Clause for search to a table. \r\nIt is usefull to odbclist() \r\n\r\nArguments\r\n\r\n   _table (c) : Table name. If it is empty, then it uses only the field to create the where condition\r\n   _field (c) : Field name\r\n   _value  : Value to use\r\n   _type (c) : The type of value. it ia a character of C, N, M, X, L, D\r\n        If it is N or D the the query is _table._field >= \'_value\'\r\n        if it is L the the query is _table._field = \'0\'  if value =.f. or = 1 if value=.t.\r\n        If it is C,M,X then the query is _table._field regexp \'^_valuea*\'  (search for records that starts with this value)\r\n                          If value starts with ~ then it is _table._field like \'%value%\'  (search for records that has this value into field)\r\n                          If value starts with = then it is _table._field like \'value\'  . It translates * as % and ? as _. So user can use wildcards * and ? to look for a value\r\n\r\n   _acd (c): Optional. Default= \'>=\' It is the operator used to fileds of Type N,D.\r\n   _stype (n): Optional. Default = ker_strtyp. Used to string fields to set searching type. Possible Values : \r\n                      0 = compares _field and _value as  it is \r\n                      1 = compares peg_gr2latin(_field, \'\')  with gr2latin(_value)\r\n                      2 = compares peg_abschr(_field, \'\')  with abschr(_value)\r\n\r\n\r\nExample \r\n   odbccond(\'d00\', \'p19\', \'test\', \'C\')\r\n   odbccond(\'\',  \'a00.p19\', \'test\', \'C\')\r\n   odbccond(\'\', \'concat(a00.p19, a00.p2)\', \'test\', \'C\')\r\n','2016-05-12','17:56:08','tesae','0100-01-01','','',''),(366,'ODBCSUMANFLD()','Return a value from a table','odbcsumanfld(_table, _field, _where, @_var)','','ODBC','','W3','Description : Return the value of a filed for specific record. It is similar to printfld() for xBase dataclass. \r\nIt is same as odbcprintfld, but returns the value to a variable\r\n\r\nParameters\r\n  _table (c) : tabel to search in\r\n  _field (c) : The field name. It\'s value will be returned. \r\n  _where (c) : condition of record to search for  (use sql operators)\r\n                  If the first character of _where is = (the equal symbol) Pegasus executes an odbctrans(_where) \r\n  _var : variable that gets the value of field\r\n\r\nReturns : the appropriate value\r\n\r\nExamples\r\n\r\nodbcsumanfld(\'etf\', \'p21\', \'nr01=10\', @p_test)\r\n\r\n','2006-06-23','20:41:16','dias','0100-01-01','','',''),(367,'ODBCMREPLACE()','Send a replace command for Many Records','odbcMreplace(_table, _fieldsarray, _recsarray, _peg, _sess)','C','ODBC','odbcreplace(), odbcMinsert()','B','Executes REPLACE command of sql for more than one record. (mySQL supports this command). \r\nIt is similar to odbcreplace. The difference is that odbcMreplace() sends a command for more than one record. \r\n\r\nArguments\r\n\r\n_table (c) : _table name\r\n_fieldarray (a) : an array with field names to update.  The elements of this array are strings\r\n_recsarray (a) : an array with arrays of records. Each element of array is an array with values for each record.  If the elements of records array are not strings, transformed with odbcstr()\r\n_peg (l) : If it is .t. updates fields remdate, remtime, remuser. It must be .t. to Pegasus Tables. \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n\r\nRETURN the empty string. \r\n\r\nExample\r\n\r\nodbcMreplace(\'etf\', {\'nr01\', \'p19\', \'p2\'}, { {\'3\', \'TEST S.A. S.a.\', \'NIKOS\'},  {\'4\', \'CLIENT S.A.\', \'Peter\'} }, .t.)\r\n\r\nis equivallent to \r\nodbcreplace(\'etf\', {\'nr01\', \'p19\', \'p2\'}, {\'3\', \'TEST S.A. S.a.\', \'NIKOS\'}, .t.)\r\nodbcreplace(\'etf\', {\'nr01\', \'p19\', \'p2\'}, {\'4\', \'CLIENT S.A.\', \'Peter\'}, .t.)\r\n\r\n\r\n','2015-11-05','10:06:14','tesae','0100-01-01','','',''),(368,'ODBCMINSERT()','Execute an insert command for more than one record','odbcMinsert(_table, _fieldsarray, _recsarray, _peg, _sess, _buffer_size, _dbl, _dbl_noarray)','C','ODBC','odbcinsert(), odbcMreplace()','B','Executes INSERT command of sql for more than one record. (mySQL supports this command). \r\nIt is similar to odbcinsert. The difference is that odbcMinsert() sends a command for more than one record. \r\n\r\nArguments\r\n\r\n_table (c) : _table name\r\n_fieldarray (a) : an array with field names to update.  The elements of this array are strings\r\n_recsarray (a) : an array with arrays of records. Each element of array is an array with values for each record. T If the elements of records array are not strings, transformed with odbcstr()\r\n_peg (l) : If it is .t. updates fields remdate, remtime, remuser. It must be .t. to Pegasus Tables. \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n_buffer_size (n): Optional. If exists then sets the size _recsarray needs to update. i.e. if set it 50 then executes update only if _recsarray has 50 or more records. Usefull to mass updates every 50 records. In that case the _recsarray:={} after update (you must pass by reference i.e @_recsarray)\r\n_dbl (l): Optional. Default=.f. If .t. then executes ON duplicate key. \r\n_dbl_noarray (a): Optional. If _dbl=.t. then sets the fields no to be updated on duplicate. \r\n\r\nRETURN the empty string. \r\n\r\nExample\r\n\r\nodbcMinsert(\'etf\', {\'nr01\', \'p19\', \'p2\'}, { {\'3\', \'TEST S.A. S.a.\', \'NIKOS\'},  {\'4\', \'CLIENT S.A.\', \'Peter\'} }, .t.)\r\n\r\nis equivallent to \r\nodbcinsert(\'etf\', {\'nr01\', \'p19\', \'p2\'}, {\'3\', \'TEST S.A. S.a.\', \'NIKOS\'}, .t.)\r\nodbcinsert(\'etf\', {\'nr01\', \'p19\', \'p2\'}, {\'4\', \'CLIENT S.A.\', \'Peter\'}, .t.)\r\n\r\n\r\n','2015-11-05','10:06:01','tesae','0100-01-01','','',''),(369,'OSET_POS()','change position of an object','oset_pos(_obj, _row, _col, _width, _hight)','C','PEG','oset_size(), oset_color()','W3','Set Position of an object (get, button)\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n   _obj (o -c) : Object to change\r\n   _row (n) : New row position\r\n   _col (n) : New col position\r\n  _width (n): Optional. The new width\r\n  _hight (n): Optional. The new hight\r\n\r\n\r\nExample \r\n\r\noset_pos(op19, 100, 20)\r\n\r\nATTENTION :\r\n\r\nTo a Dialog Box (created with getdata() ) the posistions must multiply by 2 to be same as Screen Designer. \r\nFor example if field p19 is to 10, 50 (by Screen Designer) you must give oset_pos(op19, 20, 100) for same position. \r\n\r\n\r\n','2011-11-15','11:41:17','tesae','0100-01-01','','',''),(370,'OSET_SIZE()','sets size of an object','oset_size(_obj, width, hight)','C','PEG','oset_pos()','W3','Set Size of an object (get, button)\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n   _obj (o -c) : Object to change\r\n   _width (n) : New width\r\n   _hight (n) : New hight\r\n\r\nExample \r\n\r\noset_size(op19, 100, 20)\r\n\r\nATTENTION :\r\nTo a Dialog Box (created with getdata() ) the posistions must multiply by 2 to be same as Screen Designer. \r\nFor example if field p19 is to 10, 50 (by Screen Designer) you must give oset_pos(op19, 20, 100) for same position. \r\n\r\n\r\n','2011-11-15','11:41:22','tesae','0100-01-01','','',''),(371,'OSET_TEXT()','sets the text of a button object','oset_text(_obj, _text)','C','PEG','oset_color()','W3','Set Text of an object (button)\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n   _obj (o -c) : Object to change\r\n   _text (c) : New text\r\n\r\nExample \r\n\r\noset_text(obut01, \'test\')\r\n','2011-11-15','11:41:27','tesae','0100-01-01','','',''),(372,'OSET_COLOR()','sets colors of an object','oset_color(_obj, _for, _back)','C','PEG','oset_size()','W3','Set Colors (foreground and background)  of an object (get, button)\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n   _obj (o -c) : Object to change\r\n   _for (n) : RGB code of foreground color\r\n   _back (n) : RGB code of background color\r\n\r\n\r\nExample \r\n\r\noset_color(obut01, 255, 15724527)\r\n','2011-11-15','11:41:11','tesae','0100-01-01','','',''),(373,'OBUT_INSTR()','isntruction of a button','obut_instr(_obj, _inst)','C','PEG','obim_instr()','W3','Reads ans Sets a new instruction for a button \r\n\r\nReturns (c) the current button Instruction\r\n\r\nArguments\r\n   _obj (o - c) : Button Object \r\n   _instr (c) : Optional. New Pegasus Instruction. If nil then doesn\'t change the instruction\r\n\r\nExample \r\n\r\n1.  change instruction \r\nobut_instr(obut01, \"dopeg(\'etfp01\')\")\r\n\r\n2. Execute Instrauction\r\nexecinstr( {obut_instr(obut01)})\r\n\r\n','2015-12-10','14:22:11','tesae','0100-01-01','','',''),(374,'OBIM_INSTR()','change a button instruction','obim_instr(_obj, _instr)','C','PEG','obut_instr()','W3','Set a new instruction for a button\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n   _obj (o - c) : Button Object \r\n   _instr (c) : new Pegasus Instruction\r\n\r\nExample \r\n\r\nobim_instr(obut01, \"dopeg(\'etfp01\')\")\r\n\r\nATTENTION \r\nit used for buton with image. To buttons withoy image you can use obut_instr()\r\n\r\n','2011-11-15','11:40:26','tesae','0100-01-01','','',''),(375,'EXECINSTR()','Executes Pegasus Instructions','execinstr(_array, _first, _last, _dlg, _withchk)','C','PEG','dopeg(), execline(), pegvar()','W3','Executes Pegasus instructions from an array\r\n\r\nReturns : The empty string\r\n\r\nArguments\r\n   _array (a) : an array with instructions. Each element has a string thaw is the Pegasus Instruction to execute\r\n   _first, _last (n) : Optional. The firt and last element to execute. If ommited then all instructions of array executed\r\n   _dlg (o): Optional. Default=nil. If exists is the main dialog box. \r\n   _withchk (l) : Optional. Default=.t.  If .t. then checks if expression is valid. \r\n\r\n','2015-12-17','12:16:21','tesae','0100-01-01','','',''),(376,'ODBCDTOC()','transform a date to character','odbcDtoC(_date)','C','ODBC','odbcdate()','B','Transforms a date to character. \r\nBecause of RDBMS nature (mySQL for example saves as zero date the 01/01/0100) we use better odbcDtoc() than dtoc(). \r\n\r\nIf date is less than odbc_zdate returns the empty date\r\n\r\nArguments \r\n\r\n_date (d) : Date to transform\r\n\r\n','2006-05-04','16:40:15','dias','0100-01-01','','',''),(377,'ODBCDATE()','returns a date','odbcdate( _date )','D','ODBC','odbcCtod()','B','If _date is less or equal  to odbc_zdate returns the \"zero date\"\r\n\r\nBecause of RDBMS nature (mySQL for example saves as zero date the 01/01/0100) we use better odbcDtoc() than dtoc(). \r\n\r\nArguments \r\n\r\n_date (d) : Date to transform\r\n\r\n','2006-05-04','16:41:38','dias','0100-01-01','','',''),(378,'-15. PUBLIC VARIABLES FOR WIN','Pegasus for Windows Public Variables you can use','','','THR','','W3','_userid (c)  = Session Code. Used to create temporary files\r\nusr_pswd (c) = User code \r\n\r\nmessfle (c)  = File name of current Dictionary Attribute\r\nmenufle, menuntx (c) = File and Index name of current Menus Attribute\r\n_boxfile (c) = File name of current Boxes Attribute\r\n_newhelp (c) = File name of current Help Attribute\r\n_pegoutfle (c)  = If not empty then function that appears messages (sayInfo(), sayAlert(), sayInfo(), denmsg() )  send the messages to _pegoutfle file. It is usefull when you need to have log files to processes tha works without user interface. \r\n\r\n_par1, _par2, ..... _par10 (c) = Values of passed parameters with dopegobj()\r\n\r\nfhm_sign (c) = FEM sign returned from fem method\r\nfhm_meth(c) = FEM method executed before print a form\r\nfhm_copy (n) = Copy of form printed \r\nfhm_copies (n) = Copies of forms to be printed \r\nfhm_ok (l) = FEM method returns fhm_ok=.t. when fhm_sign produced \r\nfhm_msg, fhm_mem1, fhm_mem2 (c) = Variables can be used into FEM method\r\nfhm_ascii (c) = ASCII file name used  from FEM Method for sign\r\nfhm_form (c) = Form name\r\nfhm_code (n) = Record nr01 of invoice \r\n\r\nker_tomem (l). If .t. then cashing methods to memory\r\nker_aMeths (a) = array of methods be cashed\r\n\r\noTree  (o) = Tree object of main window\r\noImageList (o) = Image List used from Tree\r\noSplit  (o) = Spliter of main window\r\n_existsplit (l) = is .t. if exists spliter\r\noOutlook (o) = Outlook bar of main window\r\noBar (o) = Button Bar\r\n\r\n_iswnd (l) = Is .t. when execute main window. Is .f. for dopegobj() executed. \r\n\r\noActX (o) = Main Window ActiveX\r\noActW (o) = Window container of Main ActiveX\r\n_exActX (l) = Is .t. if main Window containes an ActiveX\r\noRight (o) = Object related with Main ActiveX\r\n\r\noUseTree (o) = User Tree  (created with maketree() )\r\n_exusetree (l) = if exists user tree = .t.\r\n_userTreeWid (n) = user tree width (to pixels)\r\n\r\n_firwinpeg (c) = The name of first method tha execute before activate window. Usually used for user tree definition\r\n\r\n_errornr (n) = An error number returned from Pegasus for Servers \r\n                    If exists method \'errp00\' it execute this method when \r\n                    _errornr=1  : Pegasus Server for mySQL not founded\r\n                    _errornr=2  : mySQL Connection not established (ODBC ERROR)\r\n                    _errornr=3  : mySQL dbase you connected isn\'t a Pegasus dBase\r\n\r\n_mdlgtitle (c) if it isn\'t empty, then it added to all dialog boxes titles.\r\n\r\n_eventpar = an array of returned values from an event\r\n                  Into a browse list (to a dialog box created with getdata) the events doubleclick and rightclick returns _eventpar={row, column, flags}\r\n                 Into a dialog box created with getdata() the events leftclick, doubleclick and rightclick returns _eventpar={row, column, flags}. \r\nRow, Column are relatives to object top, left coordinate. \r\n                 From buttons on click = {button top, button left, button object}\r\n\r\n_fir1dopeg (c) = Method that executes the main window after it shown\r\n\r\n_truestr (c) : The string for \"Yes\"\r\n_falsestr (c) : The string for \"NO\"\r\n\r\n\r\n_fon_css (a) = Array with defaults for fonts and bmp. They are used if thw Screen Classes or button bars has 0 as values for these variables (for example if get font =0 then uses the _fon_css[1][1]\r\n               _fon_css[1]={get boxes font, fgcolor, bgcolor}\r\n               _fon_css[2]={say boxes font, fgcolor, bgcolor}\r\n               _fon_css[3]={memo get boxes font, fgcolor, bgcolor}\r\n               _fon_css[4]={memo say boxes font, fgcolor, bgcolor}\r\n               _fon_css[5]={browse font, browse style}\r\n               _fon_css[6]={browse titles fgcolor, bgcolor}\r\n               _fon_css[7]={browse selected row  fgcolor, bgcolor}\r\n               _fon_css[8]={browse  fgcolor, bgcolor}\r\n               _fon_css[9]={default path for bmp} (you can use the !: for this. (i.e. !:test.bmp)\r\n               _fon_css[10]={dialog boxes font, fgcolor, bgcolor}\r\n               _fon_css[11]={button bar bgcolor, ooutlook bar fgcolor, outlook bar bgcolor}\r\n\r\n\r\n ker_lang: Language code \r\n ker_aMeths: array with methods executed (cashing methods)\r\n ker_mode:  mode for _d validations \r\n ker_grdec: if decimal symbol is the comma (,)\r\n\r\nODBC\r\n====\r\nodbc_date=\'\'   // Letters for Date Type Fields of ODBC Driver \r\nodbc_char=\'TX\'  //Letters for Char Type Fields of ODBC Driver \r\nodbc_num=\'IF\'  //Letters for Numeric Type Fields of ODBC Driver \r\nodbc_log=\'\'     //Letters for Logic Type Fields of ODBC Driver \r\nodbc_memo=\'VM\'     //Letters for Memo Type Fields of ODBC Driver \r\nodbc_zdate=ctod(\'01/01/0100\')  // zero date of ODBC driver\r\nodbc_maindb=\'\'   // name of main data base\r\nodbc_mainobj   // main db object\r\nodbc_obj   // current db object\r\nodbc_error=0    // last error code\r\nodbc_ermsg=\'\'  //last error message\r\nodbc_noerr=.f.  // if .t. then no error message screen (warning) apears to user\r\nodbc_logfle=\'\'   // if not empty then the log file to write the warnings.\r\nodbc_ercount=0  //counter of errors','2018-11-02','09:37:07','tesae','0100-01-01','','',''),(379,'OCX AND PEGASUS','ocx and ActiveX used from Pegasus','','','OCX','','','Pegasus can use ocx and ActiveX objects inluded them into your application and use them as it\'s objects. \r\nRead the odbc functions to see the way it can be. \r\n\r\nIf you want to activate an ActiveX to main window of Pegasus Application you must write folloing lines into first method executed (usually ermp01)\r\n\r\nThis Example Creates an html view \r\n\r\n##IF _iswnd\r\n  p_val(@oActX, [ocxwnd(\"Shell.Explorer\", @oActW, 36+40, 200, 800, 600, .t.)])\r\n  ocxcall(oActX, \"Navigate\", \"http://www.pegasus.net.gr\")\r\n  p_val(@_exActX, \'.t.\')\r\n##ENDIF\r\n\r\n-----\r\nInto Pegasus Application you can see the ActiveX object as all others objects. \r\nYou can get properties, set properties, execute methods.\r\n\r\nAlso you can see the evetns of ActiveX. \r\nIf an _oactx is an ActiveX with event changed you can write\r\n\r\nassobj(_oactx, \'change\', \"{|| dopeg(\'actp01\')}\")\r\n\r\nSo when a change event created the actp01 method executed. \r\n\r\n','2006-06-02','19:15:48','dias','0100-01-01','','',''),(380,'OCXWND()','Creates a new window with an ActiveX object','ocxwnd(_component, @_wnd, _top, _left, _width, _hight, _show)','O','OCX','ocxcall()','W3','It creates an ocx object and a window that contains it. \r\nIt used for ActiveX that has screen apearance. \r\nIt is similar to ocxload() but it creates a window contains ocx object too. \r\n\r\nRETURNS\r\n   The ocx object it creates\r\n\r\nArguments\r\n----------------\r\n_component (c) = ocx code  \r\n_wnd (o) = window object that contains ActiveX\r\n_top, _left, _width, _hight (n) = cordinates of window\r\n_show (l) = is allways .t.\r\n\r\n\r\np_val(@_ActX, [ocxwnd(\"Shell.Explorer\", @_ActW, 36+40, 200, 800, 600, .t.)])\r\nocxcall(_ActX, \"Navigate\", \"http://www.pegasus.net.gr\")\r\nmsginfo(\'Window Created\')\r\n\r\nocxsetwnd(_ctX, _ActW, 100, 100, 400, 500)\r\nmsginfo(\'Window Moved\')\r\n\r\nocxendwnd(_ctX, _ActW)\r\nmsginfo(\'Window Closed\')\r\n','2006-05-25','11:14:41','dias','0100-01-01','','',''),(381,'OCXSETWND()','Sets new size and position to ActiveX window','ocxsetwnd(_actx, _wnd, _top, _left, _width, _hight)','C','OCX','ocxwnd()','W3','Moves a window created with  ocxwnd()\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n---------------\r\n_actx (o) = ActiveX object created from ocxwnd()\r\n_wnd (o) = Window created from ocxwnd()\r\n _top, _left, _width, _hight (n) = new position and size\r\n\r\n\r\nExample\r\n----------------\r\np_val(@_ActX, [ocxwnd(\"Shell.Explorer\", @_ActW, 36+40, 200, 800, 600, .t.)])\r\nocxcall(_ActX, \"Navigate\", \"http://www.pegasus.net.gr\")\r\nmsginfo(\'Window Created\')\r\n\r\nocxsetwnd(_ctX, _ActW, 100, 100, 400, 500)\r\nmsginfo(\'Window Moved\')\r\n\r\nocxendwnd(_ctX, _ActW)\r\nmsginfo(\'Window Closed\')\r\n','2006-05-25','11:15:26','dias','0100-01-01','','',''),(383,'OCXENDWND()','closes an ActiveX window created with ocxwnd()','ocxendwnd(_actx, _wnd)','C','OCX','odcwnd()','W3','Closes a window created with  ocxwnd()\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n---------------\r\n_actx (o) = ActiveX object created from ocxwnd()\r\n_wnd (o) = Window created from ocxwnd()\r\n\r\n\r\nExample\r\n----------------\r\np_val(@_ActX, [ocxwnd(\"Shell.Explorer\", @_ActW, 36+40, 200, 800, 600, .t.)])\r\nocxcall(_ActX, \"Navigate\", \"http://www.pegasus.net.gr\")\r\nmsginfo(\'Window Created\')\r\n\r\nocxsetwnd(_actX, _ActW, 100, 100, 400, 500)\r\nmsginfo(\'Window Moved\')\r\n\r\nocxendwnd(_actX, _ActW)\r\nmsginfo(\'Window Closed\')\r\n','2007-05-03','16:06:18','dias','0100-01-01','','',''),(384,'OCX OBJECT','ocx - ActiveX object created to a Pegasus Screen','','','OCX','','W3','When an ActiveX object is created froma Screen Class it has following Methods and propetries\r\n\r\nProperties\r\n---------------\r\noActiveX (o) = ActiveX object. \r\noActwnd (o) = Window object that contains the ActiveX\r\nxTop, xLeft, xWidth, xHeight (n) = Coordinates\r\n\r\nMethods\r\n---------------\r\nEnd( ) : Close oblect\r\nStartit( ) : Starts object\r\n\r\nCall( cMethodName, uP1, uP2, uP3, uP4, uP5, uP6, uP7, up8, uP9, uP10  ) \r\n     see ocxcall() for syntax\r\n\r\nGetProp( cPropName ) \r\n     see ocxget() for syntax\r\n\r\nSetProp( cPropName, Value ) \r\n     see ocxset() for syntax\r\n\r\n','2006-05-31','12:54:29','dias','0100-01-01','','',''),(385,'SENDHTMLMAIL()','Sends emails with html body','SendHtmlMail(cFrom, cTo, cServer, cUser, cPswd, cSubj, cHtml, aFiles, limages, lAddPath)','C','PEG','sendmail()','W3','Sends an email with html body\r\n\r\nRETURNS (m) the SMTP Server response as memo\r\n\r\nNOTE: prefer the use of sendmail(). \r\n\r\nArguments\r\n----------------\r\n\r\n  cFrom (c) : email address from \r\n  cTo (c) : email address to send\r\n  cServer (c) : SMTP server name will be used for mail sending. Pegasus uses CDO to send mail. If you have any problem with CDO you can set an * to Server Name. In this case Pegasus uses an its own class to send mail. \r\n  cUser (c) : User code for SMTP Server\r\n  cPswd (c) : User Password for SMTP Server\r\n  cSubj (c) : Subject for e-mail\r\n  cHtml (c) : File name of Html to send as Message Body\r\n  aFiles (a) : Array of attached files. Arrays Elements are characters. \r\n  lImages (l) : Optional. If =.t. then translates the images of html. Default=.t.\r\n  lAddPAth (l) : Optional. if = .t. then add the filename path to images. \r\n\r\nExample\r\n-------------\r\nSendHtmlMail(\'test@test.gr\', \'to@test.gr\', \'mail.test.gr\', \'test\', \'testpswd\', \'c:\\testhtml\', {})\r\n\r\nSendHtmlMail(\'test@test.gr\', \'to@test.gr\', \'mail.test.gr\', \'test\', \'testpswd\', \'c:\\testhtml\', {\'c:\\att1.gif\', \'c:\\att2.zip\'})\r\n','2010-10-22','15:52:06','tesae','0100-01-01','','',''),(386,'CREATEFILESARRAY()','Creates an array of file names','CreateFilesArray(cFiles)','C','PEG','sendhtmlmail','W3','It creates an array of file names, using a string of file names separated with ;\r\n\r\nReturn the array of file names\r\n\r\nArguments \r\n  cFiles (c) : A string of filenames separated with a ;\r\n\r\n','2006-05-31','13:18:16','dias','0100-01-01','','',''),(387,'MAIN MENU & OUTLOOK BAR  & TREE MENU','Have an outlook bar or a tree to main window of application','','','TIPS','','W3','To the first menu of user you can give a value \r\n<menu code>#<outlook code>#<tree code>\r\n\r\n<menu code> = the main menu code\r\n<outlook code>= the menu code for outlook bar\r\n<tree code> = the menu code for tree \r\n\r\nMAIN MENU \r\n-------------------\r\nYou can specify groups of menus (submenus) including them into ##BEGIN   ##END instructions. \r\n\r\n\r\nOUTLOOK BAR \r\n-------------------------\r\nThe menu of outlook bar must have to the first line as instruction\r\n##BEGIN <top>, <left>, <width>, <hight>, <button hight>, <forg color>, <bg color>, <font code>\r\n\r\nTo begin any other group give instruction = ##BEGIN\r\n\r\n\r\n\r\nTREE VIEW\r\n------------------\r\nIf you want to specify a tree view then the menu must have ##BEGIN  ##END tags to include subtrees\r\n\r\nThe first menu item must have instruction\r\n##BEGIN <top>, <left>, <width>, <hight>, <button hight>, <forg color>, <bg color>, <font code>\r\n\r\n','2007-03-23','19:02:17','dias','0100-01-01','','',''),(388,'USER TREE VIEW','','','','TIPS','','W3','If you want you can specify a tree view usin the following code\r\n\r\n\r\nTo the first method of application (ussually \'ermp01\') include lines\r\n\r\n##IF _iswnd\r\n  p_val(@_firwinpeg, \"\'ermp011\'\")\r\n##ENDIF\r\n\r\n\r\n\r\nMethod Ermp011\r\n--------------------------\r\n\r\np_val(@peg_arr, \"array(0)\")\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'1\'} )\r\n  aadd(peg_arr,   {\'msginfo(11)\', \'11\'} )\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'*1\'} )\r\n  aadd(peg_arr,   {\'msginfo(11)\', \'*11\'} )\r\n  aadd(peg_arr,   {\'msginfo(12)\', \'*12\'} )\r\n  aadd(peg_arr,   {\'msginfo(13)\', \'*13\'} )\r\naadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\n  aadd(peg_arr,   {\'msginfo(12)\', \'12\'} )\r\n  aadd(peg_arr,   {\'msginfo(13)\', \'13\'} )\r\naadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'2\'} )\r\n\r\n  aadd(peg_arr,   {\'##BEGIN\', \'21\'} )\r\n     aadd(peg_arr,   {\'msginfo(211)\', \'211\'} )\r\n     aadd(peg_arr,   {\'msginfo(212)\', \'212\'} )\r\n     aadd(peg_arr,   {\'msginfo(213)\', \'213\'} )\r\n  aadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\n  aadd(peg_arr,   {\'msginfo(22)\', \'22\'} )\r\n  aadd(peg_arr,   {\'msginfo(23)\', \'23\'} )\r\naadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\np_val(@oUseTree, \"MakeTree(peg_arr, oWnd, 0, 400, 0, 100, 300)\")\r\np_val(@_exuseTree, \'.t.\')\r\np_val(@_useTreeWid, \'300\')\r\n\r\n##RETURN','2006-05-31','19:27:58','dias','0100-01-01','','',''),(391,'MAKETREE()','create a tree view from an array','maketree(_array, _ownd, _nfont, _top, _left, _width, _hight)','O','PEG','','W3','Creates an object of tree view using an array of items. \r\nUsually used to create the user tree view to main application window. \r\n\r\nReturns (o) the tree object\r\n\r\nArguments\r\n*************\r\n _array (a) : The array of tree items. \r\n                  Each Array element is an 2 dimention array. 1rst element = instruction and 2nd=prompt\r\n                  Array must begin with a ##BEGIN instruction\r\n                  Incluse subtress into ##BEGIN ##END instructions. \r\n\r\n_ownd (o) : The parent window object\r\n_nfont (n) : Font code. If = 0 then the default font used\r\n_top, _left, _width, _hight (n) : Coords and size of tree (to pixels)\r\n\r\n\r\nExample \r\n-------------\r\np_val(@peg_arr, \"array(0)\")\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'1\'} )\r\n  aadd(peg_arr,   {\'msginfo(11)\', \'11\'} )\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'*1\'} )\r\n  aadd(peg_arr,   {\'msginfo(11)\', \'*11\'} )\r\n  aadd(peg_arr,   {\'msginfo(12)\', \'*12\'} )\r\n  aadd(peg_arr,   {\'msginfo(13)\', \'*13\'} )\r\naadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\n  aadd(peg_arr,   {\'msginfo(12)\', \'12\'} )\r\n  aadd(peg_arr,   {\'msginfo(13)\', \'13\'} )\r\naadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'2\'} )\r\n\r\n  aadd(peg_arr,   {\'##BEGIN\', \'21\'} )\r\n     aadd(peg_arr,   {\'msginfo(211)\', \'211\'} )\r\n     aadd(peg_arr,   {\'msginfo(212)\', \'212\'} )\r\n     aadd(peg_arr,   {\'msginfo(213)\', \'213\'} )\r\n  aadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\n  aadd(peg_arr,   {\'msginfo(22)\', \'22\'} )\r\n  aadd(peg_arr,   {\'msginfo(23)\', \'23\'} )\r\naadd(peg_arr,   {\'##END\', \'\'} )\r\n\r\np_val(@oUseTree, \"MakeTree(peg_arr, oWnd, 0, 400, 0, 100, 300)\")\r\np_val(@_exuseTree, \'.t.\')\r\np_val(@_useTreeWid, \'300\')\r\n\r\n##RETURN','2006-05-31','19:38:08','dias','0100-01-01','','',''),(392,'FILEDLG()','Default Windows File Dialog Box','FileDlg(_fileMask, _title, _filetypes, _save )','C','PEG','','W3','Appears the default windows File dialog box to select a file\r\n\r\nReturns (C) The Selected file name\r\n\r\nArguments\r\n----------------\r\n_fileMask (C) : The file mask  \r\n_Tile (C) : Window title\r\n_filetypes (a) : Optional. An array of file types \r\n                     Each element is an array { type name, type mask}\r\n                     i.e.     { {\'Web files\', \'*.htm;*.html\'}, {\'Text Files\', \'*.txt\'} }\r\n_save (l) : Optional. If .t. then create SaveAs window \r\n\r\n','2006-05-31','21:18:57','dias','0100-01-01','','',''),(393,'INITBAR()','Creates A button bar','initbar(_bar, _ownd, _type)','O','PEG','bbaradd()','W3','Creates a button bar to a window\r\n\r\nReturns (o) The button bar it creates\r\n\r\nArguments\r\n---------------\r\n_bar (c) : The button bat attribte file\r\n_ownd (o) : The parent window\r\n_type (n) : The type of button bar. \r\n                Where the button bar will be appeared (1=top, 2=left, 3=right, 4=bottom)\r\n                  (11, 12, 13, 14 are same as 1, 2, 3, 4 types but not 3d look)\r\n\r\n\r\n','2006-06-01','14:30:31','dias','0100-01-01','','',''),(394,'BBARADD()','Adds a button to a button bar','BbarAdd(_obar, _bmp, _mesg, _instr)','O','PEG','initbbar()','W3','Adds a button to a button bar\r\n\r\nReturns (o) : The button object\r\n\r\nArguments\r\n---------------\r\n_obar (o) : Button bar object\r\n_bmp (c) : Bmp file name\r\n_msg (c) : The tooltip Message of button\r\n_inst (c) : The instruction to execute\r\n\r\n\r\n\r\n','2006-06-01','14:32:56','dias','0100-01-01','','',''),(395,'SETWNDVIEW()','Sets a Window View Type','setwndview(_ownd, _type)','L','PEG','','W3','Changes the View Type of a window\r\n\r\nReturns (l) .t. if changed\r\n\r\nArguments \r\n----------------\r\n_ownd (o) : Window Object\r\n_type (n) : The new view type of window\r\n\r\nType can be a number of:\r\n\r\n0=     Hides the window and passes activation to another window.    \r\n1=     Normal. Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as 9).   \r\n2=     Activates a window and displays it as an icon.    \r\n3=     Maximize. Activates a window and displays it as a maximized window.    \r\n4=     Displays a window in its most recent size and position. The window that is currently active remains active.    \r\n5=     Activates a window and displays it in its current size and position.    \r\n6=     Minimizes the specified window and activates the top-level window in the system\'s list.    \r\n7=     Displays a window as an icon. The window that is currently active remains active.    \r\n8=     Displays a window in its current state. The window that is currently active remains active.    \r\n9=     Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as 1)','2009-07-28','13:50:18','dias','0100-01-01','','',''),(396,'MAKEOUTLK()','Create an outlook bar','makeoutlk(_array, _ownd, _font, _top, _left, _width, _hight, _nsize, _ncolf, _ncolb)','O','PEG','','W3','Creates an object of outlook bar view, from an array of items\r\n\r\nReturns (o) the outlook object\r\n\r\nArguments\r\n*************\r\n _array (a) : The array of tree items. \r\n                  Each Array element is an 4 dimention array. \r\n                  1rst = instruction \r\n                  2nd = prompt\r\n                  3rd = Message Bar prompt\r\n                  4th = Bmp File Name\r\n                  Array must begin with a ##BEGIN instruction\r\n                  ##BEGIN Instruction begins a group\r\n\r\n_ownd (o) : The parent window object\r\n_nfont (n) : Font code. If = 0 then the default font used\r\n_top, _left, _width, _hight (n) : Coords and size of tree (to pixels)\r\n_nsize (n) : The size (height) of group buttons (to pixels)\r\n_ncolf, _ncolb (n) : RGB colors for foreground and background colors. \r\n\r\n\r\nExample \r\n-------------\r\np_val(@peg_arr, \"array(0)\")\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'group1\', \'group1\', \'\'} )\r\naadd(peg_arr,   {\'msginfo(11)\', \'choice 1.1\', \'choice 1.1\', \'..\\bmp\\next.bmp\'} )\r\naadd(peg_arr,   {\'msginfo(12)\', \'choice 1.2\', \'choice 1.2\', \'..\\bmp\\next.bmp\'} )\r\n\r\naadd(peg_arr,   {\'##BEGIN\', \'group2\', \'group2\', \'\'} )\r\naadd(peg_arr,   {\'msginfo(21)\', \'choice 2.1\', \'choice 2.1\', \'..\\bmp\\next.bmp\'} )\r\naadd(peg_arr,   {\'msginfo(22)\', \'choice 2.2\', \'choice 2.2\', \'..\\bmp\\next.bmp\'} )\r\n\r\np_val(@peg_out, \"MakeOutlk(peg_arr, oWnd, 0, oSplit:nTop, 0, oSplit:nLeft, oSplit:nHeight, 40, 0, 255)\")\r\n\r\naddsplit(peg_out)\r\npeg_out:Activate()\r\np_val(@peg_isout, \'.t.\')\r\n\r\nSetWndView( peg_out, 1)\r\n\r\n##RETURN\r\n','2006-06-01','14:48:34','dias','0100-01-01','','',''),(397,'ADDSPLIT()','Adds an object to main window splitter to adjust with','addsplit(_ownd)','C','PEG','','W3','Adds an object to main window splitter as child. \r\nThis means that this object will be resized with the splitter\r\n\r\nReturns (C) the empty string\r\n\r\nArguments\r\n----------------\r\n  _ownd (o) : The object will be added \r\n','2006-06-01','14:51:26','dias','0100-01-01','','',''),(398,'GETWINREC()','Gets the coordinates and size of a window','getwinrec(_ownd)','A','PEG','getdesktp()','W3','Returns an array o coordinates and size of window client area\r\nIt used to now where we can add an object into this window\r\n\r\n\r\nReturns (a) an array  {Top, Left, Width, Hight}\r\n\r\nAguments\r\n---------------\r\n_ownd (o) : The object\r\n\r\n','2009-07-24','10:29:10','dias','0100-01-01','','',''),(399,'ASSVAL()','Assigns a value to a variable','assval(@_variable, _expression)','C','PEG','assobj()','W3','Assigns a value to a variable using a Pegasus Expression.  (same as p_val() )\r\nReturns (c) the empty string\r\n\r\nArguments\r\n---------------\r\n_variable : the variable of which value will change.\r\n_expression (c): the evaluation syntax of the new value.\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\nassval(@peg_str,  \" \'test\' \")\r\nassval(@peg_block, \"{|x| msginfo(x)}\")\r\n\r\n','2006-06-02','18:52:50','dias','0100-01-01','','',''),(400,'ASSOBJ()','assigns a value to an object variable.','assobj(_obj, _variable, _expression)','C','PEG','assval()','W3','Assigns a value to an object instanse variable. \r\n\r\nReturns (c) The empty string\r\n\r\nArguments\r\n---------------\r\n\r\n _obj (o) : The object\r\n _variable (c) : The name of variable to change\r\n _expression (c) : The Pegasus Expression to give new value\r\n\r\n\r\nExamples \r\n---------------\r\n assobj(_oWord, \'quit\', \"{|| msginfo(\'Word closed\')}\")\r\n','2006-06-02','18:55:57','dias','0100-01-01','','',''),(401,'LOADFROMURL()','Loads an http document as string','loadfromurl(_url, _port, _protocol, _proxy, _bypass, _method, _poststr)','C','PEG','memoread(), memowrit()','W3','Reads a http document (.htm, .xml) from a web site \r\n\r\nReturns (C) the document as string. If not page found returns nil\r\n\r\nArguments\r\n---------------\r\n  _url (c) : The url \r\n\r\n  _port (n): Optional. If =nil, then uses the default port\r\n\r\n  _protocol (n): Optional. Default =1  (0=Secure, 1=Public)\r\n\r\n  _proxy (c): Optional.This optional parameter is a character string containing the name or the IP address of the proxy server to be used for the Internet connection. The default is taken from the operating system\'s TCP/IP configuration. \r\nOptionally the port at which the proxy server is listening can be specified, for example: <company.proxy:81> This will result in a http request perfomed via the proxy company.proxy which is listening at port 81 \r\n\r\n  _bypass (a): Optional. If a proxy server is specified with _proxy , all Internet connections are routed via this proxy by default. To bypass the proxy server for certain requests, an array of character strings can be specified with _ByPass . They contain the IP adresses or names of the servers to be accessed directly without routing a request via the proxy server. \r\n\r\n  _method (c): Optional. When _url is a Cgi encoded string, LoadFromUrl() acts as if a HTML form is submitted from a Web browser to a HTTP server. The parameter _method then specifies how the form is submitted. This is equivalent to the Method attribute of the Html <form> tag and can be set to \"GET\" or \"POST\". The default is \"GET\".  Note: if _method is set to \"POST\", the parameter _postStr becomes mandatory. \r\n\r\n  _poststr (c): This parameter is a Cgi encoded String representing the HTML Form to be submitted via the method \"POST\". It must be formatted according to Cgi specifications using this pattern: Name1=Value1&Name2=Value2&Name3=Value3 \r\n\r\n\r\nExamples\r\n--------------\r\n  loadfromurl( \'http://www.pegasus.net.gr/index.htm\')\r\n\r\n','2014-12-09','10:52:20','tesae','0100-01-01','','',''),(402,'CODE BLOCKS','','','','THR','','','A Code block assument as a little function. \r\nA cdoe block executed using eval(), aeval()\r\n\r\nSyntax \r\n----------\r\n{|x, y, z, ...| exp1, exp2, .....}\r\n\r\n\r\nExample\r\n------------\r\nassval(@peg_block, \"{|x, y| peg_str=x, peg_nnn=y, dopeg(\'etfp0901\')}\")\r\n\r\neval(peg_block, \'test1\', 10)\r\n\r\n\r\nMethod etfp0901 can use peg_str, peg_nnn with \'test\', 10 values\r\n\r\n','2006-06-02','19:06:05','dias','0100-01-01','','',''),(403,'EVAL()','Evaluates a code block','eval(_codeblock, par1, par2, ......)','','PEG','aeval()','W3','Executes the code block with given parameters\r\n\r\nReturn \r\nThe return value of Eval() is the value of the last expression in the program code of <bBlock> . Eval() can thus return a value with any data type. \r\n\r\nArguments\r\n----------------\r\n  _codeblock (cb) : The Code Block to execute\r\n  par1, par2, ..... : parameters to use\r\n\r\n\r\nExample\r\n------------\r\nassval(@peg_block, \"{|x, y| peg_str=x, peg_nnn=y, dopeg(\'etfp0901\')}\")\r\n\r\neval(peg_block, \'test1\', 10)\r\n\r\n\r\nMethod etfp0901 can use peg_str, peg_nnn with \'test\', 10 values\r\n\r\n','2006-06-02','19:06:14','dias','0100-01-01','','',''),(404,'AEVAL()','Evaluates a code block for elements of an array','aeval(_array, _codeblock, Start, Count, _assign)','A','PEG','eval()','W3','Evaluates a code block for elements of an array  \r\n\r\nReturn \r\nThe return value of AEval() is a reference to _array\r\n\r\nArguments\r\n---------------\r\n _Array (a) :  is an array whose elements are passed to the code block. \r\n\r\n_codeblock (cb) : is a code block which is executed for each array element. The contents of the current array element are passed to the code block as the first argument and the element index is passed as the second argument. After each execution, the index is incremented and the code block is evaluated with the next array element. \r\n\r\n _Start (n) : Optional.  Is a numeric value specifying the first element in the array _Array , for which the code block is executed. The default value is 1. \r\n\r\n_Count (n) : Optional. Is a numeric value specifying the number of elements passed to the code block starting from position _Start> . If _Count is missing, all elements from _Start to the last element of _Array are passed in sequence to the code block. \r\n\r\n_Assign (l) : The logical expression _Assign determines whether an assignment to the passed array element is permitted within the code block. If _Assign equals .T. (true), the array element is passed to the code block by reference. If an assignment to the first code block parameter is made, it is reflected in the corresponding array element. \r\n\r\nExample\r\n\r\nAeval(p_array, {|x, i| msginfo(p_arra[i]) } )   // x:=p_array[i]\r\n','2012-12-20','11:51:11','tesae','0100-01-01','','',''),(405,'PEGSRV()','Creates a Pegasus socket server','PegSrv(_nPort, _cDir)','C','TCP','socopen(), socsend(), socclose(), socrecv(), pegclnt()','W3','Create a socket server, listening to a port. \r\n\r\nReturns (c) The empty string\r\n\r\nArguments\r\n----------------\r\n\r\n  _nport (n) : The port for socket\r\n  _cdir   (c) : The directory it will be executed (if \'\' then the current application directory used)\r\n\r\n\r\n\r\n','2006-06-21','15:17:40','dias','0100-01-01','','',''),(406,'SOCOPEN()','Opens a socket to talk','socOpen(_nType, _caddress, _nPort, @_error, _nprot)','N','TCP','socsrvstart(), socsend(), socclose(), socrecv()','W3','Opens a socket to send data \r\n\r\nReturns (n) the number of socket is opened\r\n\r\nArguments\r\n----------------\r\n_nType (n) : 1=TCP, 2,=UDP\r\n_cAddress (c) : The remote address is specified with a character string containing the DNS name of the remote station or its IP address in dotted octet notation. \r\n_nPort (n) : This is is the numeric port number on the local computer to bind the socket to. \r\n_Error (n)  : If this parameter is passed by reference to the function, it gets assigned a numeric error code when the function fails. Else return 0\r\n_prot (n): Optional Protocol number to connect.\r\n\r\nExample\r\n-------------\r\np_val(@p_soc, \"SocOpen( 1, \'localhost\', 1042, @p_error )\")\r\n\r\n##IF p_error<>0\r\n    msgalert( \'Error:\' + str(p_error,10)  )\r\n    ##RETURN\r\n##ENDIF ENDIF\r\n\r\np_val(@peg_str, \"var2bin(\'test\')\")\r\np_val(@peg_str1, \"U2Bin(len(peg_str))\")\r\nSocSend( p_soc, peg_str )\r\nSocClose( p_soc )\r\n\r\n','2012-11-16','14:55:09','tesae','0100-01-01','','',''),(407,'SOCSEND()','Sends data from a socket','socSend(_nsoc, _cbuf, _nlen, @_nerror)','N','TCP','socsrvstart(), socsend(), socclose(), socrecv()','W3','Sends data from a socket opend with socopen()\r\n\r\nReturns (n) the number of bytes sended\r\n\r\nArguments\r\n----------------\r\n_nSock (n) : This is a numeric socket descriptor identifying a connected socket. \r\n_cBuf (c) : This is a character string holding the data to send. \r\n_nLen (n) : Optionally, the number of bytes to send can be specified. This parameter defaults to Len(_cBuf) . \r\n_nError (n) : If this parameter is passed by reference to the function, it gets assigned a numeric error code when the function fails. \r\n\r\nExample\r\n-------------\r\np_val(@p_soc, \"SocOpen( 1, \'localhost\', 1042, @p_error )\")\r\n\r\n##IF p_error<>0\r\n    msgalert( \'Error:\' + str(p_error,10)  )\r\n    ##RETURN\r\n##ENDIF ENDIF\r\n\r\np_val(@peg_str, \"var2bin(\'test\')\")\r\np_val(@peg_str1, \"U2Bin(len(peg_str))\")\r\nSocSend( p_soc, peg_str )\r\nSocClose( p_soc )\r\n\r\n','2006-06-02','19:38:03','dias','0100-01-01','','',''),(408,'SOCCLOSE()','closes a socket','socClose(_nsoc, @_nerror)','L','TCP','socsrvstart(), socsend(), socclose(), socrecv()','W3','Closes a socket \r\n\r\nReturns (l) .t. if it closed\r\n\r\nArguments \r\n---------------\r\n  _nsoc (n) : Socket Number\r\n  _nerror (n) : Error Code. If =0 No error. \r\n\r\n\r\nExample\r\n-------------\r\np_val(@p_soc, \"SocOpen( 1, \'localhost\', 1042, @p_error )\")\r\n\r\n##IF p_error<>0\r\n    msgalert( \'Error:\' + str(p_error,10)  )\r\n    ##RETURN\r\n##ENDIF ENDIF\r\n\r\np_val(@peg_str, \"var2bin(\'test\')\")\r\np_val(@peg_str1, \"U2Bin(len(peg_str))\")\r\nSocSend( p_soc, peg_str )\r\nSocClose( p_soc )\r\n\r\n','2006-06-02','19:37:58','dias','0100-01-01','','',''),(409,'SOCRECV()','Receives Data from socket','socRecv(_nsoc, @_cbuf, _nlen, @_nerror)','N','TCP','socopen()','W3','Receives data from a socket\r\n\r\nReturns (n) the length of data rerceived\r\n\r\nArguments\r\n----------------\r\n\r\n  _nsoc (n) : Socket Number\r\n  _cbuf  (c) : The string used as buffer to read data. It must have the length of data accepted\r\n  _nlen (n) : [Optional] The lenght of data accepted\r\n  _nerror (n) : [Optional] The error code returned. If 0 no error. \r\n\r\n','2019-05-08','12:16:55','tesae','0100-01-01','','',''),(410,'XMLFOPEN()','Opens an XML file to manage it','xmlFopen(_file, @_error)','N','XML','xmlSopen()','W3','Opens an XML file to manage it\r\n\r\nReturns (n) an xmldoc handler. If 0 then some error occured\r\n\r\nArguments\r\n----------------\r\n  _file (c) : the xml file name\r\n  _error (n): Optionaly. Returns error code\r\n\r\nExample\r\n------------\r\np_val(@peg_xml, \"xmlFopen(\'c:\\test.xml\')\")\r\n##IF peg_xml<>0\r\n  xmlerrors(peg_xml)\r\n  ##RETURN\r\n##ENDIF\r\n\r\nxmlrun(peg_xml, @peg_arr1, \'a00pxml1\')\r\nxmlclose(peg_xml)\r\n\r\n','2006-06-02','20:41:27','dias','0100-01-01','','',''),(411,'XMLSOPEN()','Opens an xml file from a string','xmlSopen(_str, @_error)','N','XML','xmlFopen()','W3','Prepares a string with xml instructions to manage it\r\n\r\nReturns (n) an xmldoc handler. If 0 then some error occured\r\n\r\nArguments\r\n----------------\r\n  _str (c) : the xml string\r\n  _error (n): Optionaly. Returns error code\r\n\r\nExample\r\n------------\r\np_val(@peg_str, \"loadfromurl(\'http://www.pegasus.net.gr/xml/prod.xml\')\")\r\np_val(@peg_xml, \"xmlSopen( peg_str )\r\n\r\n##IF peg_xml<>0\r\n  xmlerrors(peg_xml)\r\n  ##RETURN\r\n##ENDIF\r\n\r\nxmlrun(peg_xml, @peg_arr1, \'a00pxml1\')\r\nxmlclose(peg_xml)\r\n\r\n','2006-06-02','20:44:11','dias','0100-01-01','','',''),(412,'XMLERRORS()','Returns errors from xml open','xmlErrors(_xmldoc)','C','XML','xmlfopen(, xmlsopen()','W3','Returns a string with error log. \r\n\r\nArguments\r\n----------------\r\n  _xmldoc (n) : The xml document handler\r\n\r\n','2006-06-02','20:50:33','dias','0100-01-01','','',''),(413,'XMLCLOSE()','closes an xml document','xmlclose(_xmldoc)','L','XML','xmlfopen()','W3','Closes an opened xml document\r\n\r\nReturns (l) .t. if it closed. \r\n\r\nArguments\r\n----------------\r\n  _xmldoc (n) : xml document code\r\n\r\n','2006-06-02','20:51:57','dias','0100-01-01','','',''),(414,'XMLRUN()','Runs an xml','xmlrun(_xmldoc, @_array, _method)','S','XML','xmlfopen()','W3','Runs  an xml document and for each tag it executes Pegasus method _method. It uses the _array to pass the tag information. \r\n\r\nReturns (c) the empty string. \r\n\r\nArguments\r\n----------------\r\n  _xmldoc (n) = The xml document handler\r\n  _array (a) = An array used to hold each tag  information. \r\n                   _array[1]=  Name of the tag as character string.\r\n                   _array[2]= Content of XML tag as character string.\r\n                   _array[3]= One-dimensional array containing numeric child tag handles or NIL if no child tags are present.    \r\n                   _array[4]=  Action codeblock bound to tag.                            \r\n                   _array[5]=  Two-column array holding the names and values of  tag attributes or NIL if there are no attributes.         \r\n\r\n   _method (c) : Pegasus method executed for each tag\r\n \r\n\r\nExample\r\n------------\r\np_val(@peg_xml, \"xmlFopen(\'c:\\test.xml\')\")\r\n##IF peg_xml<>0\r\n  xmlerrors(peg_xml)\r\n  ##RETURN\r\n##ENDIF\r\n\r\nxmlrun(peg_xml, @peg_arr1, \'a00pxml1\')\r\nxmlclose(peg_xml)\r\n##RETURN \r\n\r\n**************\r\nmethod a00pxml1\r\n*****************\r\n\r\np_val(@peg_str, \"peg_str + peg_arra[1]\")\r\n\r\n##IF peg_arr1[2]<>nil\r\n  p_val(@peg_str, \"peg_str + \' : \' + alltrim( peg_arr1[2])\")\r\n##ENDIF\r\n\r\np_val(@peg_str, \"peg_str + chr(13) + chr(10)\")\r\n\r\n##RETURN','2006-06-02','21:01:53','dias','0100-01-01','','',''),(415,'TREEADD()','adds items to a tree','treeadd(_array, @_otree)','C','PEG','maketree(), treedelall()','W3','Adds items to a tree created with maketree()\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n----------------\r\n\r\n  _array (a) : The array with tree items wil be added. See maketree() for array structure\r\n _otree (o) : The tree object\r\n\r\nExample\r\n-------------\r\ntreedelall(_otree)\r\ntreeadd(_array, @_otree)\r\n\r\n','2006-06-08','11:31:38','dias','0100-01-01','','',''),(416,'TREEDELALL()','Deletes all items from a tree','treedelall(_otree)','C','PEG','maketree(), treeadd()','W3','Deletes all items from a tree created with maketree. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n-----------------\r\n  _otree (o) : The tree. \r\n\r\n','2006-06-08','11:32:49','dias','0100-01-01','','',''),(417,'TREEEXPALL()','Expands all items of a tree','treeExpAll(_otree)','C','PEG','maketree(), treeadd()','W3','Expands a tree created with maketree. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n-----------------\r\n  _otree (o) : The tree. \r\n\r\n','2006-06-08','11:33:47','dias','0100-01-01','','',''),(418,'DEFOBBAR()','defines a button bar to a window','defobbar(oWnd, nType, nWidth, nHeight)','O','PEG','bbaradd()','W3','Defines a Button Bar to a window or dialog Box\r\n\r\nReturns (o) The Button Bar Object\r\n\r\nArguments\r\n-----------------\r\n\r\n oWnd (o) : The window object\r\n nType (n) : The type of bar (1, 2, 3, 4 = Top, Left, Bottom, Right)\r\n nWidth, nHeight (n) : The size of buttons (to pixels)\r\n\r\n','2006-06-15','17:08:30','dias','0100-01-01','','',''),(419,'PEGCLNT()','Sends Data to a Pegasus Socket Server (created with pegsrv() )','pegclnt(_cServer, _nPort, _adata)','C','TCP','pegsrv()','W3','Sends data to a Pegasus Socket Server created with pegsrv. \r\n\r\nReturns a string with servers result\r\nIf Error occured the string starts with ERROR:\r\n\r\nArguments\r\n----------------\r\n  _cServer (C) : The server name or IP address\r\n  _nPort (n)    : The port server listens\r\n  _adata (a)   : An array of instructions we send to server\r\n                      Each element of array  is an array of type {<returns value>, <code block to execute>}\r\n                      <returns value> (l) If .t. then the result added to returned string\r\n                     <code block to execute> (b) is a code block with command to execute\r\n\r\n\r\nExample\r\n\r\np_val(@peg_arr, \"array(0)\")\r\n\r\naadd(peg_arr,   {.f., {|| p_val(@peg_str, \"\'test\'\"} })\r\naadd(peg_arr,   {.t., {|| tooem(peg_str)} })\r\n\r\npegclnt(\'server\', 50000, peg_arr)\r\n','2007-03-30','21:21:31','dias','0100-01-01','','',''),(420,'SERVICECTRL()','Controls a service of OS','ServiceCtrl(_cname, _cdisp, _cCommand, _flag, _cUser, cPswd, _cParam)','L','PEG','findservices()','W3','With this function you can install, uninstall, star, stop a service of Windows. \r\n\r\nReturns (l) .t. if the command executed succesfully\r\n\r\nArguments\r\n---------------\r\n   _cname (c) : The name of service.\r\n   _cDisp (c) : Display information of service\r\n   _cCommand (c) : Command service executes\r\n   _flag (n) : The type of control \r\n                  1=install, 2=Start, 3=Stop, 4=Uninstall\r\n   _cUser, _cPass (c) : Users account. If ommited it installed for all users\r\n   _cParam (c) : Parameters of service\r\n\r\n\r\nExample\r\n--------------\r\nInstall Pegasus Server for mySQL\r\n\r\nServiceCtrl(\'Pegsrv\', \'Pegasus for mySQL\', \'c:\\pegserver\\pes31.exe\', 1)\r\n\r\n','2009-08-06','12:11:05','dias','0100-01-01','','',''),(421,'CRSTRARRAY()','Creates an array from a string','CrStrArray(_Str, _Separator, _delimiter)','A','PEG','','B','Creates an array with fields from a string. The fields are separated with a \"Separator\"\r\n\r\nReturns (a) an array with fields as strings\r\n\r\nArguments\r\n-----------------\r\n  _Str (c) : The String to read\r\n  _Separator (c) : The character (or string) used as separator\r\n  _delimiter (c): Optional. If exists can be used to delimite the strings. In this case delimiter and separator cannot have blanks between\r\n\r\n\r\nExample\r\n---------------\r\nCrStrArray(\'1;2;3;4;\', \';\')\r\n   Returns array {\'1\', \'2\', \'3\', \'4\'}\r\n\r\nCrStrArray(\'1;2;3;4;\"5;6;\"\', \';\', \'\"\' )\r\n   Returns array {\'1\', \'2\', \'3\', \'4\', \'5;6\'}\r\n','2019-03-08','13:48:53','tesae','0100-01-01','','',''),(422,'* 3.10','What\'s new to V 3.10','','','','','','Pegasus V 3.10 works with 2 data classes, the dbPegasus and RDBMS mySQL \r\n\r\nNew features to Pegasus V 3.10 are : \r\n\r\n1. Full activeX support. Now supports activeX controls and events too. You can have an activeX control to a screen class. \r\n   For example you can have the explorer as a memo field. \r\n\r\n2. Full use of activeX object, with assobj() \r\n\r\n3. TCP/IP support. Now you can create a Pegasus Server listening to a socket. (refair to TCP/IP library)\r\n\r\n4. New library to send e-mails with html body (see sendhtmlmail() )\r\n\r\n5. Imports and Exports xml files (refair to TCP/IP library) \r\n\r\n6. SQL Statements support, when you have mySQL RDBMS as data class. \r\n\r\n7. Tree views. \r\n\r\n8. Full parametric user profile to main application window. \r\n\r\n\r\nFor Applications with MySQL dataclass, before execution it executes pegpodb method','2007-03-07','16:29:14','dias','0100-01-01','','',''),(423,'SLEEP()','sleeps the current trhead','sleep(_nsec)','U','PEG','waitsecond()','W3','The function Sleep() defines an explicit idle condition for the thread in which the function is called. During the idle condition the thread uses no system sources (CPU time) and leaves resources available to other threads. The idle condition lasts _nsec hundredths of a second and cannot be interrupted.\r\n\r\nReturn \r\nThe return value of Sleep() is always NIL. \r\n\r\nArguments\r\n _nsec(n) : is a positive integer which specifies the time interval in 1/100 seconds during which a thread is to remain in an idle condition. \r\n\r\n\r\n\r\nExample \r\n\r\nsleep(100)      // waits 1 second\r\n','2017-07-14','12:40:34','tesae','0100-01-01','','',''),(424,'MAKEMENU()','Creates a PopUp menu','makemenu(_array, _row, _col, _object)','C','MENUS','do_menu()','W3','Creates a pop up menu from _array\r\n\r\nReturns (c) the epty string\r\n\r\nArguments \r\n\r\n_array (a) : The array of menu elements\r\n                  Each array element is an array of type {_title(c), _instruction (c), _bmp file(c)}\r\n                  If all elements are the empty string then it creates a separator line\r\n                  If instruction = ##BEGIN begins a submenu\r\n                  If _title =\'\' ans _instruction = ##END ends a submenu\r\n                  i.e.    {   {\'msg1\', \'msginfo(1)\', \'\'}, \r\n                              {\'\', \'\', \'\'}, \r\n                              {\'msg2\', \'msginfo(2)\', \'\'}  }\r\n\r\n\r\n_row, _col (n) : coordinates of top left corner. \r\n_object (o): Optional. Default = _curwin. The object owns menu.\r\n\r\n','2017-09-27','15:27:20','tesae','0100-01-01','','',''),(425,'RETARRAY()','Returns an element value of an array','retarray(_index, _array, _default)','','ARRAY','','B','Returns the value of _index element of an array\r\n\r\nIf the _index is out of array range or value is nil, it returnes the _default\r\n\r\nArguments \r\n\r\n  _index (n) : The element to be returned as number\r\n  _array (a) : array to look for value\r\n  _default  : If _index is out of array range it returns _default\r\n\r\n','2016-05-27','18:24:06','tesae','0100-01-01','','',''),(426,'SETPROJECT()','Changes main attributes of project','setproject(_menus, _boxes, _help, _dictionary)','C','PEG','saveprj(), restprj()','W3','It changes the main attributes (menus, boxes, dictionary, help) of current project and set them active\r\n\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n \r\n  _menus (c) : The menus attribute file name\r\n  _boxes (c) : The boxes attribute file name\r\n  _help (c) : The help attribute file name\r\n  _dictionary(c) : The dictionary attribute file name\r\n\r\nExample\r\n\r\nsetproject( \'mentes\', \'boxtes\', \'heltes\', \'dictes\')\r\n\r\n\r\n','2015-08-28','14:38:47','tesae','0100-01-01','','',''),(427,'CREATEDIR()','Creates a new directory','createdir(_dir)','L','DIR','','B','Creates a new directory\r\n\r\nReturns (l) .t. if the directory could be created successfully or .F. if not. \r\n\r\nArguments \r\n _dir (c) : The directory name to create\r\n\r\nExamples\r\n      ? CreateDir(\"C:\\MYAPP\") \r\n      ? CreateDir(\"subdir\") \r\n      ? CreateDir(Getenv(\"TEMP\")+\"\\mytemp\") \r\n      ? CreateDir(\'\"\\\\srvgr4\\bin\\download\\latest files\"\') \r\n\r\n','2006-08-22','14:53:23','dias','0100-01-01','','',''),(428,'SAVEPUBL()','saves public variable from a screen class','savepubl(_desc, _onlyvalues)','A','PEG','restpubl(), PegsetArr(), PeggetArr(), RecArray()','W3','Saves public variables  (values and objects) from a screen class to an array. \r\nThe elements of array are arrays with structure {_variable_name (c), _variable_value, title}\r\n\r\nIt is usefull when we want to return from a screen class to a previous one. \r\n\r\nReturns an array of arrays like { variable name, value, title} \r\n\r\nArguments \r\n  _desc (c) : Description Class\r\n  _onlyvalues (l) : Optional. Default=.f. If it is .t. then saves only the values (variables wih name n + <field name>) \r\n                              \r\n\r\n','2016-02-12','18:34:38','tesae','0100-01-01','','',''),(429,'RESTPUBL()','reads the variables from an array created with savepubl()','restpubl(_array, _exclude, _include)','C','PEG','savepubl(), PegsetArr(), PeggetArr(),','W3','initializes the variables saved with savepubl()\r\n\r\nReturns the empty string\r\n\r\nArguments\r\n  _array (a) : array (Pegasus Record Array) created with savepubl()\r\n _exclude (a) : (optional) array with names of variables to exclude from restore. Names are lower case\r\n _include (a) : (optional) array with names of variables to include to restore. Names are lower case\r\n','2016-02-11','11:29:52','tesae','0100-01-01','','',''),(430,'SAVEALLPUB()','saves all public variables to an array','saveallpub()','A','PEG','restpub(), PegsetArr(), PeggetArr(),','W3','Saves all public variables  to an array. \r\n\r\nIt is usefull when we want to return from a scren class to a previous one. \r\n\r\nReturns a Pegasus array with { {\'variable name\', value} } structure\r\n\r\n\r\n','2016-02-11','11:29:36','tesae','0100-01-01','','',''),(431,'DOPEGNEW()','executes a pegasus method as a new project','dopegnew(_cpegfile, _first, _par1, _par2, ..... _par10, _newdir)','','PEG','dopeg()','W3','Executes a pegasus method as a new project but no to a new object (that is the difference from dopegobj()). \r\n\r\nReturns : The method return argument\r\n\r\nArguments\r\n  _cpegfile (c) : the method name \r\n  _first (l) : optional (def = .f.) if .t. then executes the first method of application (ussually ermp01). Also changes the project variables (setproject()).   \r\n  _par1, .... _par10 (c) : 10 optionally arguments tha sets values of _par1, _par2, ...._par10\r\n  _newdir (c) : directory to execute the _cpegfile method. If empty or nil, then it is the current directory\r\n','2014-03-06','10:25:58','tesae','0100-01-01','','',''),(432,'CHOOSECOLOR()','Open Color Selection Dialog Box','choosecolor(_defcolor)','N','PEG','','W3','Selects a color via std windows color dialog box. \r\n\r\nReturns (n) RGB selected color value\r\n\r\nArguments \r\n  _defcolor (n): Optional. Default color value. \r\n','2006-10-12','13:38:07','dias','0100-01-01','','',''),(433,'CHBROWSE()','Changes the brow style','chbrowse(_br, _desc, _isodbc)','C','DBPEG','cpegbrowse()','W3','Changes the browse on use. \r\n\r\nIt is usefull when you want to change the way a browse list appears to a screen, without exit. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n  _br (o) : Browse Object\r\n  _desc (c) : Screen Class name to use for browse. \r\n  _isodbc (l): If .t. then the browse is for odbc table (used for V type fields browses )\r\n','2010-01-29','17:54:02','dias','0100-01-01','','',''),(434,'SETBGR()','Changes the background to a window','setbgr(_win, _afrom, _ato, _astep, _atype)','C','PEG','b_rgb(), r_rgb(), g_rgb()','W3','It changes the background color - brush of a window\r\nIt creates backgrounds with color degrade\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n  _win (o) : window object\r\n  _afrom (a) : Array with Red, Blue, Green colors to start painting (from top of window)\r\n  _ato (a) : Array with Red, Blue, Green colors to end painting \r\n  _astep (a) : Array with Red, Blue, Green steps colors from pixel to pixel\r\n  _astep (a) : Array with Types of Red, Blue, Green. Type can have values\r\n                    0=When get to To value stop changing color\r\n                    1=When get to To value Start from _from color\r\n                    2=When get to To value Start from _To color and change step with step *-1\r\n\r\n\r\nExample\r\n\r\nsetbgr(_curwin, {255, 255, 15}, {255, 255, 232}, {0, 0, 1}, {0, 0, 1} )\r\n\r\n','2006-11-02','18:08:55','dias','0100-01-01','','',''),(435,'R_RGB(), G_RGB(), B_RGB()','Return the Red, Green, Blue value of a color','r_rgb(_color)','N','PEG','setbgr()','W3','These are three function that returns (n) the Red, Green, Blue value of an RGB color\r\n\r\nArguments \r\n   _color (n) : The RGB Color\r\n','2006-11-02','18:10:40','dias','0100-01-01','','',''),(436,'OBJCOORD()','returns the coordinates of an object','objCoord(_obj)','A','PEG','scrcoord()','W3','Returns an array {_top, _left, _bottom, _right) with coordinates of an object\r\n\r\nArguments\r\n----------------\r\n  _obj (o) : The object that look for. This object must be a window, dialog box, control, get, button etc.','2006-11-24','19:38:13','dias','0100-01-01','','',''),(437,'-13. TABS OBJECTS','Tabs Objects methods and properties.','','','THR','','','When a tabs created to a dialog boxe it has the following properties\r\n\r\nPROPERTIES\r\naDialogs : array with dialog boxes objects (one per tab)\r\naScreens : array with screen classes (one per tab)\r\nnOption : the selected Tab\r\naMeths : array with methods executed for any tab on focus. This methos is executed before draw the tab\'s dialog (on users click). So you can check and change the aEnable, aGet variables of dialog box. \r\n\r\naMeths1 : array with methods executed for any tab on lost focus\r\naOpened : array of logic for any tab. If it is .t. it has been focused from user\r\naEnable : array of logic for any tab. If it is .f. then the tab selection isn\'t enabled\r\naGet : array with logic variables if the tab dialog box is get (.t.) or show (.f.). \r\n\r\nMETHODS\r\nsetOption(n) : Sets the tabs option n as current\r\n\r\n\r\nThe very first time initializes an page of tab executes the part of \r\n##BEGSTARTTAB\r\n##ENDSTARTAB \r\nof screen integrity method\r\n\r\nWhen close the dialog box executes the path of \r\n##BEGCLOSETAB\r\n##ENDCLOSETAB\r\nof any Sreen has been initilized. \r\n\r\nUseful for temporary files. \r\n\r\n\r\n','2011-03-31','18:02:46','tesae','0100-01-01','','',''),(438,'DEFABAR()','creates a button bar to a dialog box','defabar(_bbar, _dlg, _type)','C','PEG','getdata()','W3','Creates a button bar into a dialog box (allready created). \r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n*************\r\n  _bbar (c) : The button bar Attribute name\r\n  _dlg (o) : The dialog object (i.e. _curwin)\r\n  _type (n) : Type of Button Bar\r\n','2006-11-20','19:18:47','dias','0100-01-01','','',''),(439,'SCRCOORD()','Returns coordinates of a Pegasus Screen Class','scrCoord(_desc)','A','DBPEG','objcoord()','W3','Returns an array {_top, _left, _bottom, _right) with coordinates of a screen class\r\n\r\nArguments\r\n----------------\r\n  _desc (c) : Screen Class Name','2006-11-24','19:39:16','dias','0100-01-01','','',''),(440,'ODBCGLIST()','opens a list from a select query','odbcglist(_select, _desc, _field, _default, _top, _left, _bottom, _right, _type, _title, _orelative, _inmeth, _sfld, _sval)','','ODBC','odbclist()','W3','Purpose: Displays the data of query in mass management shape and give to the user the possibility to select one record and from it to return the respective field value. The selection is done by pressing the keyboard key [enter] or double click. \r\n\r\nParameters:\r\n_select (c): the SELECT command \r\n_desc (c): the screen class name that describes the data class\r\n_field (c): the field name of that value will return\r\n_default : the value will return in case that was not made any selection (was not pressed <Enter> but <Esc>)\r\n_top,_left,_bot,_right (n) : Define the display screen of the data class (in pixels)\r\n_type (n): the screen type (the default value it is 3)\r\n_title (c) : it is the title will be displayed on screen, beside the screen class title\r\n_orelative (o) : The object taht function uses to create the list. Igf it exists the coordinates are relative to it\'s top, left corner. If ommited the coordinates are relative to top, left corner of screen\r\n_inmeth (c): Optional. It is a method can be executed on initialization of dialog box. Usually used to change browse view. _brobj is the browse object\r\n_sfld (c): Optional. Field Name to search with. If not empty then appears the search box for this field\r\n_sval : Optional. Initial Value for _sfld\r\n\r\n\r\nReturns the value for the field _field from the selected record, or the default value if no record was selected.\r\nUse to: Give to the user the possibility to select in screen classes values from the data classes. For example to find one client.\r\n\r\n_Type Values Can Be\r\nLINES_NONE            99\r\nLINES_BLACK           1\r\nLINES_GRAY            2\r\nLINES_3D              3\r\nLINES_DOTED           4\r\nLINES_V_BLACK         5\r\nLINES_V_GRAY          6\r\nLINES_H_BLACK         7\r\nLINES_H_GRAY          8\r\nYou can use these style numbers to sgesfld(), sgetafld(), listtable(). \r\nAlse you can use 1000 + style (i.e. 1001, 1003) to create a browse without dialog box. \r\n\r\nExample:\r\n\r\n## opens ODBC connection\r\n##IF odbccon(\'DBE=ODBCDBE;DSN=TEST10\') =.f.\r\nmsgalert(\'not connected\')\r\n##RETURN\r\n##ENDIF\r\n\r\np_val(@_code, [odbclist(\'etf\', \'etf_d\', \'nr01\', \"p19\", \"p19=\'A\'\",  0, 100, 100, 600, 800, 3)])\r\n\r\n\r\n\r\n','2015-09-14','17:59:06','tesae','0100-01-01','','',''),(441,'TEXTSAVE()','Saves a string as text file','textsave(_filename, _string)','L','PEG','memowrit(), memoread()','B','Saves a string as a text file. \r\n\r\nReturns (l) .t. if it succeed\r\n\r\nArguments\r\n    _filename (c) : The file name it will create. If file exists, function overwrite it\r\n    _string (c) : Sting contains information to be saved\r\n\r\n','2007-04-04','11:20:10','dias','0100-01-01','','',''),(442,'TEXTREAD()','Executes a Pegasus Method for each line of a text file','textread(_filename, @_buffer, _method, _clear, _end_line_char, _cond, _dlm)','C','PEG','textsave(), memoread(), fopen(), fread()','B','Reads lines of a text file. By default as eol() checks the chr(13)) + chr(10). You can set the _end_line_char. In this case checks the giviven character\r\n\r\nFor each line it executes a Pegasus Method. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n\r\n   _filename (c) : The name of file to read\r\n   _buffer (c) : The memory variable use to save lines\r\n   _method (c) : Pegasus method that executes for each line. When it executed _buffer contains the last readed line. \r\n   _clear (l) : If it is .t. then _buffer clears (doesn\'t contains) characters chr(13) and chr(10)\r\n   _end_line_char (c) : Optional. It sets the character that sets the end of line. By default the end of line is chr(13) + chr(10). _end_line_char can be a string with length greater or equal than 1. \r\n   _cond (c): Optional. Default=\'.t.\' . Condition for do while loop/\r\n   _dlm (c): Optional. Default = <empty string>. If exists then is a delimiter character for memo fields. If exists a _end_line_char, between 2 delimiters, function transform _end_line_char as space. \r\n\r\nExamples\r\n***********\r\n\r\ntextread(\'c:\\test.csv\', @p_buf, \'reap01\', .t.)    // .csv files uses the chr(10) as new line for memo fields. So it is good to check chr(13) + chr(10)\r\n\r\ntextread(\'c:\\test.mir\', @p_buf, \'reap01\', .t., chr(13) )    \r\n\r\n','2014-12-01','15:48:09','tesae','0100-01-01','','',''),(443,'ODBCTABLETYPE()','Returns table type','odbcTableType(_table, _sess, _db)','N','ODBC','odbcistable()','B','Returns (n) the type of a table. If not exists returns 0. If it is a table returns 1. If it is a View returns 2\r\n\r\nArguments \r\n   _table (c) : Table name\r\n   _sess (o): Session. Optional. Default=current session\r\n   _db (c): data base name. Optional. Default=\'\' (current data base)\r\n','2016-08-03','17:20:28','tesae','0100-01-01','','',''),(444,'PADC(), PADL(), PADR()','Aligns a string to center, left, right','padc(_str, _len, _char)','C','STR','trim()','B','The return value of the functions PadC(), PadL() and PadR() is a character string with the length _len . It contains the value of _str as a string extended using the fill character _char on the left, right or at both ends of the string. \r\n\r\nReturns (c) the new string\r\n\r\nArguments\r\n   _str (c) : String used \r\n   _len (n) : The length of new string\r\n   _char (c) : Optional. The character used to fill the string. If not passed, thne the \' \' used. \r\n','2007-03-14','20:57:51','dias','0100-01-01','','',''),(445,'DBSETNULLVALUE()','Enables null values to fields of currrent dBase','dbsetnullvalue(_set)','L','DBPEG','odbc','B','When we manipulate an RDBMS  table (via ODBC) then the null values are represented as empy values. That means :\r\nFields of type Char returns \'\'\r\nFields of type Numeric returns 0\r\nFields of type Date returns \'/ /\'\r\nFields of type Logic returns .f.\r\n\r\nIf you want to read Null values as nil, then you must execute\r\ndbsetnullvalue(.t.)\r\n\r\nTo return to default \r\ndbsetNullValue(.f.)\r\n\r\n\r\n','2007-04-12','11:25:11','dias','0100-01-01','','',''),(446,'GET_FONTS()','initializes the fonts of application','get_fonts()','C','PEG','','W3','Pegasus Uses fonts from fon.dbf file as codes. \r\n\r\nget_fonts() initializes the arrays with fonts, using the fon.dbf. \r\nWhen you change a directory (subapplication), if new subapplication has other fonts, than previous is good to execute get_fonts. \r\n\r\n\r\nExample\r\n\r\nnew_dir(\'..\\..\\csm\\_001\')\r\nget_fonts()\r\n\r\nsgetsfld(\'.....)\r\n\r\nnew_dir(\'..\\..\\basic\\_001\')\r\nget_fonts()\r\n','2007-04-25','11:50:06','dias','0100-01-01','','',''),(447,'CFILENOEXT()','returns the file name of _filename','cfilenoext(_filename)','C','PEG','cfilename()','W3','Returns (c)  the name of a filename without path and extension\r\n\r\n\r\nArguments\r\n\r\n   _filename (C) : The file name to examin\r\n','2008-03-03','15:47:27','dias','0100-01-01','','',''),(448,'CFILEEXT()','returns the extension name of _filename','cfileext(_filename)','C','PEG','cfilenoext()','W3','Returns (c)  the extension of a filename \r\n\r\n\r\nArguments\r\n\r\n   _filename (C) : The file name to examin\r\n','2008-03-03','15:45:05','dias','0100-01-01','','',''),(449,'CFILEPATH()','returns the file path of  _filename','cfilepath(_filename)','C','PEG','cfilenoext()','W3','Returns (c)  the path  of a filename  \r\n\r\n\r\nArguments\r\n\r\n   _filename (C) : Tha file name to examin\r\n','2007-07-05','11:39:07','dias','0100-01-01','','',''),(450,'CFILENAME()','returns the file name of _filename (without path)','cfilename(_filename)','C','PEG','cfilenoext()','W3','Returns (c)  the fname of a filename without path and drive\r\n\r\n\r\nArguments\r\n\r\n   _filename (C) : The file name to examin\r\n','2008-03-03','15:45:16','dias','0100-01-01','','',''),(451,'ASSCHR()','assigns a value to a public variable.','asschr(_variable, _value)','C','PEG','assval()','W3','Assigns a value to a variable using a Pegasus Expression.  Differs from assval, because we pass the variable name as a string.\r\nReturns (c) the empty string\r\n\r\nArguments\r\n---------------\r\n_variable (c): the variable name of which value will change.\r\n_value (c): an expression for the new value.\r\n\r\nReturns an empty string characters suite.\r\n\r\nExamples:\r\n\r\nasschr(\'peg_str\',  \" \'test\' \")  \r\n** it is same as \r\nassval(@peg_str,  \" \'test\' \")\r\n','2007-07-09','20:20:59','dias','0100-01-01','','',''),(452,'ODBCISFIELD()','Check if exists a field into a table','odbcisfield(_table, _fieldname, _sess, @_typeArr, _nolocal)','L','ODBC','odbcistable()','W3','\r\nArguments\r\n*************\r\n   _table (c) : Table Name\r\n   _fieldName (c) : Field Name\r\n   _sess (o) : Optional. Session to execute command. Default is defeault session\r\n  _typeArr (a) : Optional. If exists returns the {field type, length, decimals}. Field Types are Pegasus Types. Table must have been created by Pegasus (odbcChanStru())\r\n_nolocal (l): Optional. Default=.f.  If .t. then look directly to data base and not to local saved information (cashe)\r\nRETURNS (l)  IF _table has a field with name _fieldName returns .t., else return .f.\r\n\r\n','2014-04-09','17:40:53','tesae','0100-01-01','','',''),(453,'PRINTMEMO()','prints a memo','printmemo(_row, _col, _memo, _font, _linesize)','C','PRINT','printtext()','W3','Prints the memo to _row, _col. It separates memo to lines with size _linesize. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n\r\n   _row (n) : The Row it will prints the _memo. \r\n   _col (n) : The column\r\n   _memo (m) : Memo to printout\r\n   _font (n) : font code to use\r\n   _linesize(n) : The length to characters of line\r\n','2007-07-18','12:17:56','dias','0100-01-01','','',''),(454,'ODBCDTOS()','Create a string from a date','odbcdtos(_date, _dashes)','C','ODBC','odbcdtoc()','B','Returns (c) a string with format yyyymmdd (y=year, d=date, m=month). It is same as dtos(). The difference is that when date is = 0 it returns odbc_zdate. \r\n\r\nArguments \r\n\r\n   _date (d)   : The tdate to format\r\n   _dashes (l) : If .t. then the export string is yyyy-mm-dd\r\n\r\n','2009-03-18','12:34:04','dias','0100-01-01','','',''),(455,'GETHTML()','Gets a memo as Html','gethtml(@_memo, _row, _col, _width, _hight, _center, _readonly, _title, _orel, _maihtml, _ismenu, _ppar, _pobj, _lislocal)','C','PEG','putHeadHtml(), NoHeadHtml(), IsPegHtml()','W3','Opens a dialog box to edit a memo as html page. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n\r\n   _memo (m) : The memo to edit\r\n   _Row, _col (n) : The top, left corner of dialog box  (to pixel)\r\n   _width (n) : The width of box (to pixel)   \r\n   _high (n) : The hight of box (to pixel)   \r\n   _center (l) : If .t. then the dialog box is centered to screen\r\n   _readonly (l) : If .t. then the memo is only for view. \r\n   _title (c) : The title of box\r\n   _orel (o) : Optional. The relative object for coordinates\r\n   _mainhtml (c) : Optional. The name of html used as prototype for html viewing. It must contains the label [text]. If ommited the bmp\\edit\\edit.htm is used. \r\n\r\n  _ismenui (l) : optional. If _ismenu=.t. then no Maximize and Minimize buttons appears to window. Default value =.t.\r\n  _ppar (c) : Optional (only to V3.11). The name of public variable to update with html\r\n  _pobj (c) : Optional (only to V3.11). The name of public object to manipulate the html activeX\r\n\r\n   _lislocal (l): Optional. Default =.t..  If it is .f. then _mainhtml is a page to Internet that can be browsed. \r\n  \r\n','2012-10-10','18:47:05','tesae','0100-01-01','','',''),(456,'CLPBREAD()','Reads the clipBoard','ClpbRead( _format, _default)','','PEG','clpbset(), clpclear()','W3','Reads from Clipboard the contents\r\n\r\nReturns the contents of clipboard. The return value is dependend on _format type\r\n\r\n\r\n  Arguments \r\n **************\r\n    _format (n) : The Format of data to read \r\n                      1=Text\r\n                      2=BMP (reads the Hwnd of Bitmap Object)\r\n\r\n   _Default : The value to return if no data to clipBoard. \r\n\r\n','2007-08-22','20:25:24','dias','0100-01-01','','',''),(457,'CLPBSET()','Sets data to ClipBoard','ClpbSet(_nformat, _data)','L','PEG','clpbRead()','W3','Sets data to Clipboard\r\n\r\nReturns (l) .t. if the process is valid\r\n\r\n\r\n  Arguments \r\n **************\r\n    _format (n) : The Format of data to read \r\n                      1=Text\r\n                      2=BMP (reads the Hwnd of Bitmap Object)\r\n\r\n   _Data : The data to put to ClipBoard\r\n\r\n','2008-12-29','18:05:18','dias','0100-01-01','','',''),(458,'CLPBCLEAR()','Clears the clipboard Contents','ClpbClear()','L','PEG','clpbRead(), clpbSet()','W3','Clears the ClipBoard\r\n\r\nReturns (l) .t. if priocess is valid\r\n\r\n','2007-08-22','20:28:06','dias','0100-01-01','','',''),(459,'ADDFIELD()','Adds or replaces a field to a screen class','AddField(_ades, _array)','C','PEG','','W3','Supported to V3.11 and laters\r\n\r\nReplaces the fields to current screen clas record\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n     _ades (c) : The Screen Class \r\n     _array (a) : Array with values to replace to current screen class record\r\n                      {Sequense, Browse Sequense, Title, Search Title, Browse Title, Field Name, Type, Length, Decimals, Browse Column Size, View Type}\r\n\r\n\r\n','2007-08-27','18:31:59','dias','0100-01-01','','',''),(460,'-14. HTML OBJECTS','','','','THR','','','Version Pegasus 3.11 and laters have the possibility to use memo as HTML objetcs. \r\nPegasus Uses the bmp\\edit\\edit.htm file as prototype to create htmls. So you can modify it\'s style if you want a different appearance. Into edit.htm you can use the labels \r\n[title] : The title of document. Pegasus puts the name of temporary file use to manage the memo\r\n[text] : The memo replaces the [text] label\r\n[peg_path] : The pegasus current path. \r\n\r\nWhen you create an HTM object (using IExplorer activeX) you can use \r\n\r\nProperties\r\n************\r\n   oActiveX (o) : The Webbrowser Object \r\n   cTmpHtml (c) : The name of temporary it uses to edit the html\r\n\r\nMETHODS\r\n*************\r\n   GivePeg() : Refresh  the value of html  \r\n   OnlyText(): Returns the text of HTML without html commands\r\n\r\nREMARKS \r\n*************\r\nIf the document the HTML Object Navigates has HyperLinks with url Starting with \"PEG:\" then it executes the Pegasus Instruction follows the Label\r\n\r\ni.e. Peg:dopeg(\'a00p0\')  When user click on Link Pegasus executes the dopeg(\'a00p0\')\r\n','2018-10-08','14:42:56','tesae','0100-01-01','','',''),(461,'ISPEGHTML()','Checks if a memo is a Pegasus Html Memo','IsPegHtml(_memo)','L','HTM','NoPegHtml(), getHtml()','W3','When Pegasus appears a memo as htm (gethtml(), Html fields) puts a header to say that it is an HTML Memo\r\n\r\nIsPegHtml() return .t. If _memo has this Headr\r\n\r\nArguments \r\n\r\n   _memo (m) : Memo variable to check\r\n','2008-04-21','16:50:21','dias','0100-01-01','','',''),(462,'MOVECTRLS()','Moves all controls of a dialog box','MoveCtrls(_odlg, _left, _top)','C','PEG','','W3','It moves all controls of a dialog box\r\n\r\nReturns (c) the empty string\r\n\r\n\r\nArguments\r\n************\r\n    _odlg (o) : The dialog box\r\n    _left (n) : The amount of pixels to move to left\r\n    _top (n) : The amount of pixels to move to top\r\n','2008-03-31','13:00:37','dias','0100-01-01','','',''),(463,'PUTHEADHTML()','Puts to a memo the Pegasus HTML Header','PutHeadHtml(_memo)','M','HTM','gethtml(), noheadhtml()','W3','Function gethtml() manages a memo as HTML. If it hasn\'t the Pegasus HTML Header means that memo is a simkple memo, so changes characters chr(13)+chr(10) with \'<br>\'. \r\n\r\nIf memo it is allready a memo body then you must put the Pegasus HTML Header. That is what PutHeadHtml() does. \r\n\r\nReturns (m) the new memo\r\n\r\nArguments\r\n   _memo (m) : Memo to change\r\n\r\n\r\nExample\r\n\r\np_val(@_memo, \"PutHeadHtml(_memo)\")\r\ngethtml(@_memo, _row, _col, _width, _hight, _center, _readonly, _title)          \r\n\r\n','2008-03-31','12:58:13','dias','0100-01-01','','',''),(464,'MEMOTOHTML()','Trnsforms a memo to html','MemoToHtml(_memo)','M','HTM','IsPegHtml()','B','Transforms a memo variable to Html. \r\nIt replaces the chr(13) + chr(10) with <br> tag. \r\nIf _memo is a Pegasus HTML Memo then Return the _memo as it is\r\n\r\nReturns (m) the transofrmed memo\r\n\r\nArguments\r\n*************\r\n  _memo (m) : The to transform\r\n\r\n','2008-04-21','16:50:03','dias','0100-01-01','','',''),(465,'ODBCREADCOMMAND()','Reads from File an SQL command.','odbcReadCommand(_file, _clearenter, _translate, _odbc)','C','ODBC','odbcuse(), odbcexec()','W3','Reads from an ascii file an SQL command. When a cooman is written to a text file it contains chr(13) + chr(10) characters (Enter). odbcReadCommand deletes those characters. \r\nIf ker_tomem=.t. then loads sql file  memory for reuse\r\n\r\nReturns (c) the command ready to execute.\r\n\r\nargumnets\r\n************\r\n  _file (c) : The filename, function uses to read the SQL command\r\n  _clearenter (l) : Optional. Default = .t.\r\n                         If .t. then clears the chr(13) + chr(10) from string. odbc Command cannot have chr(13)+chr(10)\r\n  _translate (l) : Optional. Default = .f.\r\n                       If it\'s .t. then execute odbctrans() before returns the command. \r\n  _odbc (l) : Optional. Default = .f.\r\n                       _translate=.t. .and. _odbc=.t. execute odbcSQLtrans() before returns the command. \r\n\r\n\r\n\r\n','2016-05-09','12:32:13','tesae','0100-01-01','','',''),(466,'ODBCSETDEF()','Sets default odbc connection','odbcsetdef(_session)','O','ODBC','odbccon()','W3','Changes the default odbc connection. \r\nMore odbc functions operates on default odbc connection. So if we need 2 or more odbc connections we must change the default as need. \r\n\r\nReturns (o) the last default connection\r\n\r\nRemarks\r\n**********\r\nPegasus uses public variables for current sessions\r\n\r\nodbc_obj = current session\r\nodbc_mainobj = main session of application\r\nker_cdpage=session code page\r\n\r\narguments \r\n*************\r\n   _session (o) : object of odbc connection (session) to set default. \r\n','2015-11-02','15:49:17','tesae','0100-01-01','','',''),(467,'SQL_CHAR()','Transforms a string to appropriate CHAR() function.','sql_char(_string)','C','ODBC','odbcupdate()','B','sql_char() creates a char() function used to update a field to RDBMS. It is usefull when use X type fields an update them with binary data. \r\n\r\nArguments \r\n************\r\n    _string (c) : string to transform\r\n\r\n\r\nExample\r\n\r\n    odbcupdate(\'d72\', {\'p30\'}, { sql_char( memoread(\'c:\\test.doc\') }, \"nr01=\'1\'\")\r\n\r\n    sql_char(\'Pegasus\') returns the string \"CHAR(80, 101, 103, 97, 115, 117, 115)\"\r\n','2007-11-14','10:35:09','dias','0100-01-01','','',''),(468,'ASCIIREAD()','Reads an ascii file and execute a method','AsciiRead(_filename, @_buffer, _method, _length)','C','PEG','textread()','B','Opens an ascii file (binary), reads _length characters, puts them into _buffer and execute the _method, reads the next _length characters and so on...\r\n\r\n\r\nReturns (c) the empty string. \r\n\r\nArguments\r\n************\r\n   _filename (c) : The filename to open\r\n   _buffer (c) : The variable that updated with characters function reads. \r\n   _method (c) : Pegasus Method that executed \r\n   _length (n) : The amount of bytes - characters - reads each time. If it is 0 then reads all file at once\r\n\r\n\r\n','2009-09-21','18:46:00','dias','0100-01-01','','',''),(469,'CREATE_LIST_FIELDS, CREATE_LIST_VALUES','Creates a list from fields/values','create_list_fields(_fields, _values, _quote)','C','ODBC','create_fld_arrays()','B','Creates a list separated with , of fields/values from arrays _fields, _values. \r\nArrays _fields and _values are those that created from create_fld_arrays\r\n\r\n','2007-11-14','18:55:19','dias','0100-01-01','','',''),(470,'CURDLGNEW()','Sets new controls to current dialog box','CurDlgNew(_desc, _get)','C','SCR','getdata(), curdlghide(), curdlgshow()','W311','Creates the controls of _desc To current Dialog Box (without create a new one)\r\n\r\nReturns (c) the empty String\r\n\r\nArguments\r\n   \r\n    _desc (c) : The Screen Class that specifies the controls to add\r\n    _get (l) : If the controls are fot get or view. \r\n\r\n','2007-12-27','10:24:04','dias','0100-01-01','','',''),(471,'CURDLGHIDE()','Hides the controls of Current Dialog Box','CurDlgHide()','A','SCR','curdlgshow()','W311','Hides all the controls of current dialog box. \r\nReturns (a) an array with controls. It used from CurDlgShow() to reShow the controls\r\n\r\n','2007-12-27','10:28:36','dias','0100-01-01','','',''),(472,'CURDLGSHOW()','Shows Controls of Dialog Box','CurDlgShow(_ctrArray)','C','SCR','CurDlgHide()','W311','ReShows the controls are hidden with CurDlgHide()\r\n\r\nReturns (c) the empty String\r\n\r\nArguments\r\n\r\n   _ctrArray (a) : Array of controls as it returned from CurDlgHide()\r\n','2007-12-27','10:30:11','dias','0100-01-01','','',''),(473,'RECEIVEMAIL()','Receives Mails from a POP3 server','ReceiveMail(cMailServer, cUsername, cPassword, lDeletemail, nHowmany, @aeMail, cMethod)','','','','','Opens the Pop3 server and receives mails. \r\nFor each mail fills the aEmail executes the cMethod\r\n\r\nReturns the number of e-mails it found. -1 if error occured\r\n\r\n\r\n\r\nArguments \r\n     cMailServer (c) :  name of mail server (defaults to \"mail\")\r\n     cUsername  (c) :  user name for mail account\r\n     cPassword  (c) :  password to access mail account\r\n     lDeleteMail (l) : delete mails after retrieval?\r\n     nHowmany (n) :  max. number of messages to retrieve. If 0 then retreives all\r\n     aEmail (a) : array that returns {oMail, cFrom, cSubject, cDate, cMessage-Id, c_content}\r\n     cMethod (c) :  method to execute for any mail. It can uses the aEmail\r\n\r\noMail is a content object. \r\nMethods of oMail\r\ngetheader(cString) = Returns the header content of cString header value. (i.e. oMail:getheader(\'CC\') )\r\n','2008-02-13','12:31:08','dias','0100-01-01','','',''),(474,'GETPICT()','Returns the Pegasus Picture','getpict(_apict)','C','DBPEG','','W3','Pegasus uses some codes to Pictures (R:, M:) to screen classes. Using getpict() you can take the real picture. \r\n\r\n\r\nReturn (c) the picture','2008-06-24','11:08:05','dias','0100-01-01','','',''),(475,'ISEMPTY()','checks if a field or variable is empty','isempty(_variable)','L','PEG','','','Returns .t. if the value is empty (0 for numeric and empty string for character variables)\r\n','2008-02-29','17:15:55','dias','0100-01-01','','',''),(476,'NOHEADHTML()','Deletes the header of a memo that describes it as a Pegasus HTML','noheadhtml(_memo)','M','HTM','putheadhtml(), memotohtml()','W3','Pegasu HTML fields has a header that signifies that it is a Pegasus MEMO. \r\n\r\nThis function deletes this header. \r\n\r\nReturns (m) the memo without Header\r\n\r\nArguments \r\n************\r\n   _memo (m) : memo to transform','2008-03-31','12:57:53','dias','0100-01-01','','',''),(477,'SOCSRVSTART()','Creates A socket Server Listening to a port','SocSrvStart(_port, _method, _type, _locAddr, _Reuse, _BackLog)','O','TCP','socRecv(), socsrvend()','W3','Creates a server listening to a port. When receives data to port, executes a pegasus method.\r\n\r\nReturns (o) the thread object it creates \r\n\r\n\r\nArguments\r\n\r\n   _port (n) : The numbet of port using\r\n   _method (c) : The Pegasus method executes when receives data\r\n   _Type (n) : Socket Type (1=stream, 2=datagram)\r\n   _locAddr (c) : Optional.  The local address is specified with a character string containing the host name or its IP address in dotted octet notation. If the application does not care what address is assigned to the socket, it may not provide this parameter. \r\n   _reuse (l) : Optional. The default value for this parameter is .F. (false). When it is set to .T. (true) the socket may reuse the local address if it is already used by another socket. \r\n  _backLog (n): Optional. Specifies the maximum number of outstanding connections which may be queued awaiting acceptance by the server process. The default value is 5.\r\n\r\n\r\nIMPORTANT \r\nWhen server receives data then the variable _cl_sock gets the socket number. It can used from method executed. For example this is the first argument of SocRecv().','2017-05-03','11:25:46','tesae','0100-01-01','','',''),(478,'SOCSRVEND()','Stops a Socket Server created with SocSrvStart','SocSrvEnd(_osrv)','C','TCP','SocSrvStart()','W3','Stops a Socket Server Created With SocSrvStart()\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n\r\n   _osrv (o) : The server Object to stop. \r\n','2008-04-22','21:10:36','dias','0100-01-01','','',''),(479,'ADDMONTH()','Adds months to a date','AddMonth(_date, _months)','D','DATE','date()','W3','Adds months to a date and returns the new date. \r\n\r\nReturns (d) the new date\r\n\r\nArguments\r\n************\r\n   _date (d) : The date \r\n   _months (n) : Months to add to _date\r\n\r\n','2008-05-15','14:10:57','dias','0100-01-01','','',''),(480,'ORDSETFOCUS()','Set Master Index to a dbf file','ordSetFocus(_nindex)','C','DBPEG','dbopen()','W3','When open a dbf file with indexes the sorting is according to master key (the first opened or seted with dborder())\r\n\r\nWith ordSetFocus() we can set the order to another index or NO INDEX if _nInidex=0\r\n\r\nReturns (c) the name of index\r\n\r\nArguments\r\n*************\r\n   _nIndex (n) : The number of index. If it is 0 then No INDEX used to sort the file \r\n','2000-05-06','11:03:57','dias','0100-01-01','','',''),(481,'ADD_MONTH()','adds a month to a date','add_month(_date, _months)','D','DATE','','W311','Adds months to a date and returns the new date. \r\n\r\nReturns (d) the new date\r\n\r\nArguments\r\n************\r\n   _date (d) : The date \r\n   _months (n) : Months to add to _date\r\n\r\n','2009-11-18','16:11:11','dias','0100-01-01','','',''),(482,'SETNOORDER()','sets no order to a opened dbf file','SetNoOrder()','C','DBPEG','','W311','When a dbf file is opened if setnoorder() then the order you see it is the physical order records are added','2008-05-15','14:13:03','dias','0100-01-01','','',''),(483,'SAVEPRJ()','Saves the basic (menu, dictionary, help, boxes) attributes of current project','SavePrj()','A','PEG','restprj()','W3','Saves into an arrray the basic (menu, dictionary, help, boxes) attributes of current project\r\n\r\nReturns (a) the array with attributes\r\n\r\n\r\n\r\nExample\r\n\r\np_val(@p_arr, \"saveprj()\")\r\n\r\ndopeg(\'tesp01\')\r\n\r\nrestprj(p_arr)\r\n','2008-07-04','19:52:03','dias','0100-01-01','','',''),(484,'RESTPRJ()','Restores Project attributes saved with savePrj()','RestPrj(_array)','C','PEG','SavePrj()','W3','Restore the basic (menu, dictionary, help, boxes) attributes saved with SavePrj() and sets them as current project\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n    _array (a) : Array saved with SavePrj()\r\n\r\nExample\r\n\r\np_val(@p_arr, \"saveprj()\")\r\n\r\ndopeg(\'tesp01\')\r\n\r\nrestprj(p_arr)\r\n','2008-06-04','09:23:02','dias','0100-01-01','','',''),(485,'INPEGTHREAD()','Starts a Pegasus Thread','InPegThread(@oThread, _aInarray, _cInMethod, _cStartMethod, _cExecMethod, _cStopMethod, _cEndMethod)','L','PEG','','W3','Creates a Thread object. \r\n\r\nReturns (l) .t. if thread created. \r\n\r\n\r\nArguments\r\n\r\n   oThread (o) : The thread created. \r\n   _alnArray (a) : Array with values to initiate the ::aInArray of Object. It used for using internal variables to object\r\n   _cInMethod (c) : Pegasus method executed when Thread Initiate. \r\n   _cStartMethod (c) : Pegasus method executed when Thread Started. It sets usually def. values. If Thread can executed it must execute oThread:setInterval(0). \r\n    _cExecMethod (c) : Pegasus method executed when Thread Executed. \r\n    _cStopMethod (c) : Pegasus method executed when Thread Stop. \r\n    _cEndMethod (c)  : Pegasus method executed when Thread End. \r\n\r\n\r\nObject Methods\r\n******************\r\n::SetInterval(n) : Sets the time between execution (of _cExecMethod) to 1/100th of seconds. SetInteval(0) usually used. SetInterval( nil) stops the thread\r\n\r\n::quit() : Stops the Thread\r\n\r\n\r\nObject Data\r\n**************\r\naVarArray (a) : Array to use to set variables. \r\n\r\n\r\n','2011-12-15','19:49:00','tesae','0100-01-01','','',''),(486,'SENDMAIL()','Sends an e-mail using the CDO Object','SendMail(cFrom, cTo, cSubj, cFile, aFiles, nType, cServer, cUser, cPswd)','L','PEG','','W3','Sends an e-mail using the default settings of your client. \r\n\r\nReturns .t. if ok\r\n\r\nArguments\r\n*************\r\n    cFrom (c) : The from e-mail. If empty, then it uses the default one. \r\n    cTo (c):  e-mail, that receives your e-mail. You can separate e-mails with ;\r\n    cSubj (c) : Sbject of e-mail\r\n    cFile (c) : The file name uses as message body\r\n    aFiles (a) : Optional. Array with attachment file names. \r\n    nType (n) : It sets the kind of cFile. \r\n                    1= Html File  (only to versions upper than V3.10)\r\n                    2= Text File\r\n                    3= Text (the cFile is a text and not a file name)\r\n\r\n   cServer (c): Optional. SMTP Server name to use. If not set then uses the default SMTP settings from your mail client \r\n                     cServer:=  ServerName: Port : useSSL (0/1):character set\r\n                                  Port : default = 25\r\n                                  SSL : default =0\r\n                                  Character Set : Default = not setted (use cdo default) i.e. windows-1253\r\n\r\n   cUser (c): Optional. SMTP User name. Needed if set cServer. \r\n   cPswd (c): Optional. SMTP Password. Needed if set cServer. \r\n\r\nPegasus V 3.12 if cFrom is Empty then uses the sendOutMail()\r\n','2015-07-22','12:23:53','tesae','0100-01-01','','',''),(487,'TRYEXECIN()','Try to execute an array of Pegasus Instructions','TryExecIn(_array, _first, _last)','L','PEG','execinstr()','W3','Executes Pegasus instructions from an array. It uses TRY - CATCH method. So If an unexpected error ocuures, no error appeared but returns .f.\r\nIt is usefull when execute external objects. \r\n\r\nReturns (l) .t. if No Error occured\r\n\r\nArguments\r\n   _array (a) : an array with instructions. Each element has a string that is the Pegasus Instruction to execute\r\n   _first, _last (n) : Optional. The firt and last element to execute. If ommited then all instructions of array executed\r\n\r\n\r\n','2011-12-12','17:50:34','tesae','0100-01-01','','',''),(488,'RADTEMP()','Returns a unique name','RadTemp(lLong)','C','PEG','newtemp()','W3','Returns (c) a string usufull to crate temporary files. \r\n\r\nArguments \r\n   \r\n    lLong (l) : If .t. then the name is long else it is short. Short names (5 characters) are usefull to create temporary indexes. \r\n','2013-08-21','19:02:17','tesae','0100-01-01','','',''),(489,'DEBMSG()','Returns a message for debbuging purposes','debMsg( _message, _title )','C','PEG','msginfo(), sayInfo()','W3','executes a msginfo() but adds to the message of window is the line called the debMsg(). It is usefull for debugging purposes. \r\n\r\nNotice: If public Pegasus variable _pegoutfle is not empty then the message is been written to file _pegoutfle and Pegasus doesn\'t dislpay not message. \r\n','2016-02-24','17:36:32','tesae','0100-01-01','','',''),(490,'PUB2FILE()','Saves an array with public variables to a file','Pub2File(_array, _filename)','C','PEG','PsetArr(), PgetArr(), File2Pub(), SavePubl(), SaveAllPubl(), ?query?cfpp01102','W311','Saves an array of public variables to a file. The array has the same structure used from savepub() and restpub(). The elements of array are arrays with structure {_variable_name (c), _variable_value}. You can read this array with recarray()\r\n\r\nYou can read the file with File2Pub() and recover the variables\r\n\r\nReturns (c) the filename created\r\n\r\nArguments \r\n************\r\n       _array (a) : The array to save. Is a Pegasus Array, ie. 2 Dimension Array {Variable name, Value} \r\n       _filename (c): Optional. The file name to create. If it is empty, function creates a new one used the RadTemp(). \r\n\r\n\r\nExample \r\n\r\np_val(@peg_arr, \"{}\")\r\naadd(peg_arr, {\'peg_str\', \"test\"})\r\naadd(peg_arr, {\'peg_str1\', \"test1\"})\r\n\r\np_val(@_file, \"Pub2File(peg_arr)\")\r\n\r\n...\r\n...\r\n...\r\n\r\nFile2Pub(_file)\r\n\r\n\r\n\r\n','2016-02-11','11:16:20','tesae','0100-01-01','','',''),(491,'FILE2PUB()','Read public variables from a file','File2Pub(_filename, _delit, _desc)','C','PEG','File2Pub(), SavePubl(), SaveAllPubl()','W311','Reads from a file an array saved with Pub2File()\r\nIt is usefull when you want to exchange data from method to method, using dopegobj()\r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n************\r\n       _filename (c): The file name to Read.\r\n       _delit (l): Optional. Default=.t.   If it is .t. then delete the file after read it.\r\n       _desc (c): Optional. If exists then execute refrdata(_desc, .t., _noarr) too, only if _filename exists. _noarr contains variables initialized into _filaneme.  \r\n\r\nExample \r\n\r\np_val(@peg_arr, \"{}\")\r\naadd(peg_arr, {\'peg_str\', \"test\"})\r\naadd(peg_arr, {\'peg_str1\', \"test1\"})\r\n\r\np_val(@_file, \"Pub2File(peg_arr)\")\r\n\r\n...\r\n...\r\n...\r\n\r\nFile2Pub(_file)\r\n','2015-11-13','09:19:22','tesae','0100-01-01','','',''),(492,'READLANG()','Reads the code of currend Keyboard Language','ReadLang()','N','PEG','SetLang()','W3','Returns (n) the code of current keyboad language. \r\n\r\n','2008-08-14','13:48:42','dias','0100-01-01','','',''),(493,'SETLANG()','Sets the keyboard language','setLang(_lang)','N','PEG','ReadLang()','W3','Sets the keyboard language. \r\nReturns the new language code\r\n\r\nArguments \r\n\r\n   _lang (n) : The language code\r\n                   0 = The Previous Language to Keyboard\r\n                   1 = The Next Language to Keyboard\r\n','2008-08-14','13:50:48','dias','0100-01-01','','',''),(494,'ASORT()','Sorting an array','ASort( _Array, _nStart, _nCount, _bOrder)','A','ARRAY','aEval()','W3','Sorts an array \r\n\r\nRETURN (a) a reference to _Array . \r\n\r\n\r\nArguments\r\n\r\n_Array (a): is the array whose elements are sorted. \r\n\r\n_nStart (n): Optional.  is a numeric value specifying the starting position for the sort within the array <aArray> . The default value is 1. \r\n\r\n_nCount (n) : Optional. Is a numeric value specifying the number of elements sorted starting with _nStart . If _nCount is missing, all elements from _nStart to the last element of _aArray are sorted. \r\n\r\n_bOrder (b) : The optional code block _bOrder> can be used to specify how the sort will be performed. One dimensional arrays can be sorted without using a code block. In this case, the elements are sorted in ascending order. Sorting multi-dimensional arrays requires _bOrder . The values of two array elements are passed to this code block. The code block must perform a logical comparison. \r\n\r\n\r\n\r\nExample\r\n**********\r\nAsort(peg_arr, , , {|a, b| a[1]<b[1]})\r\n','2008-09-08','10:56:45','dias','0100-01-01','','',''),(495,'STOD()','Convertes a string to date','stod( _str )','D','PEG','ctod(), dtos(), dtoc()','W3','Convertes a string with format yyyymmdd to date. \r\n\r\nArguments\r\n    _str (c) : string to converte\r\n\r\nExamlpes\r\n\r\n       stod( \'20071030\')  = 30/10/2007\r\n','2008-09-11','16:10:53','dias','0100-01-01','','',''),(496,'DESCEND()','Create Descend Sequense Indexes','Descend(_value)','','PEG','indexon()','W3','The conversion function Descend() transforms the passed value so that it is suitable for a descending sort. \r\nThe function is generally used as part of an index expression when generating descending order indexes. \r\nWhen an index file contains Descend() in its index expression, search values must also be modified using Descend() prior to use in seek_var(). \r\n\r\nReturns  a value of the same data type as _value modified for a descending sort. The exception is that date values return a value of numeric type, not date type. \r\n\r\nArguments \r\n \r\n     _value : Value used to descend.\r\n','2008-09-25','16:12:44','dias','0100-01-01','','',''),(497,'TIMEVALID()','Checks if a string is a valid time','TimeValid(_str)','L','PEG','time()','W3','Checks if a string is a valid time\r\n\r\nReturns (l) .t. if valid time\r\n\r\nArguments\r\n     _str (c): The string to check\r\n\r\nExamples\r\n\r\n      TimeValid(\'10:30\')   // .t.','2008-10-02','20:57:00','dias','0100-01-01','','',''),(498,'ZIPFILE()','zips a file (or files)','zipfile(zipfile, files2zip, subfolders)','C','PEG','unzfle()','W3','Creates a .zip file\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n    zipfile (c) : The name of zip file to create. It must contains the .zip extention \r\n    files2zip (c) : The files to zip. You can use wildcards. Also you can use the -r -p if you want to zip subdirectories\r\n    subfolders (l): Optional. Default=.f., If .t. then zip subfolders too.     \r\n\r\n\r\nExamples\r\n***********\r\n\r\n     zipfile(\"c:\\temp\\test1.zip\", \"c:\\documents\\*.*\")     // zips whole folder  c:\\documents\r\n     zipfile(\"c:\\temp\\test1.zip\", \"c:\\document\\*.doc\")      \r\n\r\n\r\n','2018-09-27','17:35:32','tesae','0100-01-01','','',''),(500,'GETENV()','Returns the value of an Enviroment Variable','GetEnv(_variable)','C','PEG','','W311','Returns (c) the value of an enviroment variable. \r\n\r\n\r\n\r\nExample\r\n  getenv(\'computername\')','2008-12-12','20:01:06','dias','0100-01-01','','',''),(501,'DOPEGTXT()','Executes a Memo Pegasus Method','dopegtxt(_txtfile, _beglab, _endlab)','C','PEG','dopeg(), execmeth()','W3','Executes a pegasus method stored to an ascii file. \r\nReturns (c) the ##RETURN value  \r\n\r\nIf ker_tomem=.t. then loads method to memory for reuse\r\n\r\n\r\nread more to dopeg()\r\n\r\nArguments\r\n************\r\n_txtfile (c) : the Filename contains the method\r\n_beglab (c): (optional) the label of the line from where will start running the method\r\n_endlab (c): (optional) the label of the live up to where will run the method\r\n','2014-04-09','15:13:15','tesae','0100-01-01','','',''),(502,'EXECMETH()','Executes a method stored to a memo field','execmeth(_memo, _id, _beglab, _endlab)','C','PEG','dopeg(), dopegtxt()','W3','It executes the method stored to _memo variable. \r\n\r\nSee more to dopeg() \r\n\r\nArguments \r\n************\r\n     _memo (m) : Memo with method. \r\n     _id (c) : The id (as string) of method. dopeg() uses as id the method name. Because here haven\'t a name, uses _id for history. \r\n_beglab (c): (optional) the label of the line from where will start running the method\r\n_endlab (c): (optional) the label of the live up to where will run the method\r\n','2009-02-04','14:28:49','dias','0100-01-01','','',''),(503,'DXML_SOPEN()','Creates an XML object reading a string','DXML_sopen(_string, _async)','O','XML','dxml_fopen(), dxml_records(), dxml_fldval()','W311','Reads a string with xml structure and creates an xml object  (Microsoft.XMLDOM object). \r\nReturns (o) the XML object\r\n\r\nArguments\r\n************\r\n     _string (c): the string with xml\r\n     _async (l) : If the xml will be parsed asynchronously (recommended .f.)\r\n','2009-03-06','17:23:06','dias','0100-01-01','','',''),(504,'DXML_FOPEN()','Creates an XML object from an XML file','DXML_fopen(_file, _async)','O','XML','dxml_sopen(), dxml_records(), dxml_fldval()','W311','Reads an xml file  and creates an xml object (Microsoft.XMLDOM object). \r\nReturns (o) the XML object\r\n\r\nArguments\r\n************\r\n     _file (c): the Xml File name\r\n     _async (l) : If the xml will be parsed asynchronously (recommended .f.)\r\n','2009-03-06','17:23:40','dias','0100-01-01','','',''),(505,'DXML_RECORDS()','Creates an array with records of xml','DXML_records(_xmlobject, _table, @_lstop, _bExec,_toansi)','A','XML','dxml_fldval()','W311','Creates an array with records of a \'table\', from XML object. \r\n\r\nReturns (a) an array you can use with dxml_fldval()\r\n\r\nArguments\r\n************\r\n     _xmlobject (o): XML object created with dxml_sopen() or dxml_fopen()\r\n     _table (c): The \'table\' name. It is Case Sensitive.\r\n     _lstop (l) : Optional Default=.f. Function look for records while _lstop=.f.\r\n    _bexec (b): Optional. If exists then execute the block for any record. (i.e.{|array, recno| function()})\r\n                  Arguments of _bexec \r\n                        _array (a): Array for record ({ {field name1, value1}, {field name2, value2} })\r\n                        _recno (n): The record number found \r\n    _toansi (l): Optional. Default = .f. If _toansi=.t. then transforms toansi() fields and values. It\'s usefull if _xmlobject is read as oem.\r\n\r\nExample \r\n*********\r\np_val(@p_xmldoc, \"DXML_sopen(_string, .f.)\")\r\np_val(@rec_recs, \"DXML_records(p_xmldoc, \'A00\')\")\r\np_val(@rec_i, \'1\')\r\nDXML_fldval(rec_recs, rec_i, \'remdate\', 10, @peg_str)\r\np_val(@rec_remdate, \" stod(peg_str) \")\r\nDXML_fldval(rec_recs, rec_i, \'remtime\', 10, @peg_str)\r\np_val(@rec_remtime, \"peg_str\")\r\nDXML_fldval(rec_recs, rec_i, \'remguc\', 25, @peg_str)\r\np_val(@rec_remguc, \"peg_str\")\r\n\r\n\r\nXML IS like\r\n<A00>\r\n     <remdate>20090101</remdate>\r\n     <remtime>10:10:12</remtime>\r\n     <remguc>PEGERP-A00-1</remguc>\r\n</A00>\r\n','2018-03-13','12:04:23','tesae','0100-01-01','','',''),(506,'DXML_FLDVAL()','Reads a value from XML','DXML_fldval(_xmlarray, _record, _fieldname, _retlen, @_ret)','C','XML','dxml_records()','W311','Gets the value of a field of XML\r\nReturns (l) .t. if the field exists to xml record and has no NULL value. \r\n\r\nArguments\r\n************\r\n   _xmlarray (a): Array Created with dxml_records()\r\n    _record (n): Record Number\r\n    _fieldname (c): Field name \r\n    _retlen (n) : The value maximum length to read. If 0 then reads the value as it is \r\n    _ret (c): the value it found. If no value found _ret=\'\' and function returns .f.\r\n\r\nExample \r\n*********\r\np_val(@p_xmldoc, \"DXML_sopen(_string, .f.)\")\r\np_val(@rec_recs, \"DXML_records(p_xmldoc, \'A00\')\")\r\np_val(@rec_i, \'1\')\r\nDXML_fldval(rec_recs, rec_i, \'remdate\', 10, @peg_str)\r\np_val(@rec_remdate, \" stod(peg_str) \")\r\nDXML_fldval(rec_recs, rec_i, \'remtime\', 10, @peg_str)\r\np_val(@rec_remtime, \"peg_str\")\r\nDXML_fldval(rec_recs, rec_i, \'remguc\', 25, @peg_str)\r\np_val(@rec_remguc, \"peg_str\")\r\n\r\n\r\nXML IS like\r\n<A00>\r\n     <remdate>20090101</remdate>\r\n     <remtime>10:10:12</remtime>\r\n     <remguc>PEGERP-A00-1</remguc>\r\n</A00>\r\n','2010-08-27','13:33:05','tesae','0100-01-01','','',''),(507,'SOCSET()','Sets options to a socket','SocSet(nSocket, nOption, Value)','L','TCP','socopen()','W3','Sets options to a socket\r\n\r\nReturn (l) .t. if it is ok\r\n\r\nArguments\r\n     nsocket (n) = The socket (get from socopen)\r\n     nOption (n) = The option code to set (a numeric value from 1 to 9)\r\n     value = The new value\r\n\r\nThe type of value is possible to be \r\n\r\nnOption=1  (SO_BROADCAST)   Logical value to enable/disable broadcast messages.          \r\nnOption=2  (  SO_DEBUG)       Logical value to set debug info recording on or off.         \r\nnOption=3  (  SO_DONTLINGER)  Logical value to enable/disable wait for unsent messages.    \r\nnOption=4  (  SO_KEEPALIVE)   Logical value to enable/diable sending of keepalives         \r\nnOption=5  (  SO_LINGER)      Array of linger parameters: { lOnOff, nTimeout }             \r\nnOption=6  (  SO_OOBINLINE)   Logical value to enable/disable inline OOB data.             \r\nnOption=7  (  SO_RCVBUF)      Numeric buffer size for receives.                            \r\nnOption=8  (  SO_REUSEADDR)   Logical value to enable/disable address reusage.             \r\nnOption=9  (  SO_SNDBUF)      Numeric Buffer size for sends.                               \r\n\r\n','2009-04-14','14:24:58','dias','0100-01-01','','',''),(508,'SOCBLOCK()','Set sockets blocking on/off','SocBlock(nSocket, lBlock)','L','TCP','socopen()','W3','If socket is blocked then Function SocRecv() for example, waits until receive data. If it is unblocked then reads data to queue if exists. \r\n\r\nReturns (l) .t. if it is OK\r\n\r\nArguments \r\n\r\n     nSocket (n) : The socket number\r\n     lBlock (l) : Block (.t.) or unblock (.f.)\r\n','2009-04-14','14:45:39','dias','0100-01-01','','',''),(509,'SETNTX()','Open indexes to a work area','SetNtx(_array)','C','DBPEG','set_index1, fuse()','W311','Opens indexes to a work area. \r\n\r\nReturn (c) the empty string\r\n\r\nArguments\r\n\r\n    _array (a) : An array with index file names\r\n','2009-05-15','20:15:58','dias','0100-01-01','','',''),(510,'OPENNEWPRJ()','Executes a Pegasus Method as a new Project','OpenNewPrj(_method, _par1, _par2, _par3, _par4, ...., _par10)','C','PEG','dopeg(), dopegobj()','W311','Executes a Pegasus Method creating a new object (creates new public variables and  new project variables)\r\nIt is same as dopegobj() but it works as modal dialog box. Also it doesn\'t opens new connection to ODBC driver. \r\n\r\nReturns (c) the method ##RETURN value. \r\n\r\nArguments \r\n\r\n    _method (c): The method name included the path name. It changes path before execution. \r\n    _par1, _par2, ....., _par10 (c) : Optional. The 10 parameters can any Pegasus project be passed. \r\n','2009-05-15','20:20:39','dias','0100-01-01','','',''),(511,'LASTCHR()','Checks the last character of a string','LastChr(_str, _chr)','L','STR','substr(), rat()','W311','Checks if _chr is the last character of _str. \r\nReturns (l) .t. if it is. \r\n\r\nAlso changes the _str, by deleting the _chr (if _str passed by reference i.e @_str)\r\n\r\nArguments\r\n\r\n   _str (c) : String to check\r\n   _chr (c): character to look for\r\n','2011-11-04','14:25:36','tesae','0100-01-01','','',''),(512,'IS_TRUE()','Returns if an expression is .t. or .f.','is_true(_val)','L','PEG','','W311','\r\nRETURN (l) If _val is Logic then returns the _val. IF _val is Numeric then returns .t. if _val=1 else Returns .f.\r\n\r\nArguments \r\n    _val (l or n) : The value to check\r\n','2009-05-27','11:58:34','dias','0100-01-01','','',''),(513,'STR_ADD()','Adds Values of an array and returns as string','str_add(_arr, _separator)','C','PEG','substr(), tostr()','W311','Adds the elements of an array as string. Separate them with the _separator. Uses alltrim() for any string\r\nReturns (c) a string\r\n\r\nArguments\r\n \r\n    _arr (a) : array with elements to add\r\n    _separator (c): Optional. Default is as space character. \r\n\r\nExample\r\n\r\n   str_add( {\'write\', \'a\', \'test\'}, \', \')    //write, a, test\r\n','2010-11-23','13:50:51','tesae','0100-01-01','','',''),(514,'DEFCURSOR()','Defines a new cursor to an object','DefCursor(_obj, _type)','C','PEG','getdate()','W311','Defines the cursor of an object. \r\n\r\nReturns (c) the empty string\r\n\r\nARGUMENTS \r\n\r\n     _obj (o): The object. We can use _curwin for current window\r\n     _type (n) : The cursor Type. \r\n\r\n0=Pegasus Wait         \r\n1=ARROW\r\n2=IBEAM\r\n3=WAIT\r\n4=CROSS\r\n5=UPARROW\r\n6=SIZE\r\n7=ICON\r\n8=SIZENWSE\r\n9=SIZENESW\r\n10=SIZEWE\r\n11=SIZENS\r\n12=HAND\r\n13=STOP\r\n14=DRAG','2009-06-09','11:11:14','dias','0100-01-01','','',''),(515,'RUNBUSY()','Shows Waiting box and executes a method','RunBusy(_method, _title, _bmp)','C','PEG','dopeg()','W311','Executes the _method. It appears a dialog box with waiting message (_title) and  _bmp image\r\nReturns (c). If _method is a method Returns method Value, else returns the empty string\r\n\r\nNotice: If public Pegasus variable _pegoutfle is not empty executes _method without a window. \r\n\r\n\r\nArguments \r\n========\r\n     _method (c - b): The method to execute. If it is method name (c) it executes dopeg(_method). It can be a code block that executed. \r\n     _title (c) : Optional. The window title\r\n     _bmp (c): Optional. Default \"..\\bmp\\run.bmp\" The image file to show. \r\n','2019-09-27','16:02:09','tesae','0100-01-01','','',''),(516,'OBUT_ACTIV()','Sets active or non active a bmp button','obut_activ(_obj, _active)','C','PEG','obut_instr(), getdata(), oset_color(), oset_text)','W311','Sets a button active or non active. It used only to bmp buttons (with bmp or color) not for push buttons. \r\nReturns (c) the emtpy string\r\n\r\nArguments\r\n\r\n      _obj (o - c): The button object\r\n      _active (l) : if .t. then the button is active. \r\n','2011-11-15','11:40:33','tesae','0100-01-01','','',''),(517,'FINDKEY()','Finds the status of Keyboard','FindKey(_key)','N','PEG','','W311','Returns (n) the _key added with 16000 if Ctrl pressed or 17000 if Alt Pressed\r\n\r\nArgument\r\n\r\n     _key (n): The key to ckeck','2009-06-25','11:49:56','dias','0100-01-01','','',''),(518,'FEMCHR()','Executes the chr() function only if not used for FEM file','FemChr(_ascnr)','C','PEG','chr()','W311','To invoice printouts sometimes we need to send control characters using chr() function. These characters cannot be send to FEM for sign. \r\nIn those cases we use the chr()\r\n','2009-06-25','11:54:33','dias','0100-01-01','','',''),(519,'GETDSKTP()','Returns Desktop properties','GetDsktp()','A','PEG','getwinrec()','W311','Returns (a), an array with desktop properties  = {window handler, top, left, bottom, right}','2016-03-09','15:02:08','tesae','0100-01-01','','',''),(520,'GETCSSVAL()','Returns a value from CSS array','GetcssVal(_ind1, _ind2, _val)','','PEG','dialog boxes, browses , get_fobj()','W311','Pegasus uses the _fon_css array that gives initial values to colors for it\'s controls. \r\n\r\n\r\n_fon_css (a) = Array with defaults for fonts and bmp. They are used if thw Screen Classes or button bars has 0 as values for these variables (for example if get font =0 then uses the _fon_css[1][1]\r\n               _fon_css[1]={get boxes font, fgcolor, bgcolor}\r\n               _fon_css[2]={say boxes font, fgcolor, bgcolor}\r\n               _fon_css[3]={memo get boxes font, fgcolor, bgcolor}\r\n               _fon_css[4]={memo say boxes font, fgcolor, bgcolor}\r\n               _fon_css[5]={browse font, browse style}\r\n               _fon_css[6]={browse titles fgcolor, bgcolor}\r\n               _fon_css[7]={browse selected row  fgcolor, bgcolor}\r\n               _fon_css[8]={browse  fgcolor, bgcolor}\r\n               _fon_css[9]={default path for bmp} (you can use the !: for this. (i.e. !:test.bmp)\r\n               _fon_css[10]={dialog boxes font, fgcolor, bgcolor}\r\n               _fon_css[11]={button bar bgcolor, ooutlook bar fgcolor, outlook bar bgcolor}\r\n\r\n\r\ngetcssval() used to return a vlue from _fon_css\r\n\r\nArguments\r\n    _ind1 (n) : the _fon_css element (i.e. 1=get boxes)\r\n    _ind2 (n) : The elements element to return \r\n    _val : The default value to return if element doesn\'t exists\r\n\r\nExample\r\ngetcssval(1, 2, 0)   // return the get boxes fgcolor (_fon_css[1][2])\r\n','2015-05-28','16:54:20','tesae','0100-01-01','','',''),(521,'GETBMP()','Returns a bmp file name','getbmp(_filename, _def)','C','BMP','getcssval()','W311','Returns (c) the filename of a bmp file. Because Pegasus uses the _fon_css[9] element to find the default path for images, you can use the getbmp() to return the real full path name of a image. \r\nIf name starts with !: then getbmp()_ adds the _foncss[9][1] (images def path name)\r\n\r\n               _fon_css[9]={default path for bmp} (you can use the !: for this. (i.e. !:test.bmp)\r\n\r\nArguments \r\n    _filename (c) : The filename look for\r\n    _def (c): Optional. The filename to return if _fon_css hasn\'t the 9th element. \r\n\r\nExample \r\n    getbmp(\"!:def.bmp\")     // pegerp\\skin0\\def.bmp\r\n','2009-07-31','11:06:36','dias','0100-01-01','','',''),(522,'FINDSERVICES()','Finds the services installed to your PC','findServices(_like, _exact)','A','PEG','servicectrl()','W311','Returns (a) an array with all services that names are same with _like \r\n\r\nArrays Elements are \r\n     1: (c) Service Name\r\n     2: (c) Service Display Name\r\n     3: (c) Service Status  (SERVICE_RUNNING, SERVICE_STOPPED)\r\n     4: (c) Service Type     \r\n     5: (a) Controls Accepted. Array elements are strings\r\n     6: (c) Start Type \r\n     7: (c) Error Control\r\n     8: (c) Pathname\r\n\r\nArguments \r\n   _like (c) : The pattern for services names \r\n   _exact (l): If it is .t. then returns the services that lower(_like)==lower(<service name>)\r\n                   If it is .f. then returns the services that   at(lower(_like), lower<service name>)<>0 \r\n','2009-08-06','12:38:17','dias','0100-01-01','','',''),(523,'RDOSPARAM()','Returns a parameter for command prompt usage','rDosParam(_str)','C','PEG','dopegobj(),   runshell()','W311','Used to transform a dos parameter for run programms with command line.\r\nIt used internal. \r\nYou can use too, for parameters passed to dopegobj if they have blanks. \r\n\r\nArguments\r\n    _str : Is parameter to tranform. If it isn\'t character (C) type, tranformed to character.  \r\n\r\n','2015-09-09','11:25:55','tesae','0100-01-01','','',''),(524,'DESCTITLE()','Returns the title of a screen class','descTitle(_screen, _type)','C','DBPEG','getdata()','W311','Returns (c) the title of a screen class. \r\n\r\nArguments \r\n \r\n    _screen (c) : The screen class file name\r\n    _type (n) : If 1 returns dialog box title. \r\n                    If 2 returns browse title. \r\n                    If 3 returns tab title. \r\n\r\n','2018-10-19','15:13:08','tesae','0100-01-01','','',''),(525,'-16. RESERVED PUBLIC VARIABLES','','','','THR','','','Pegasus uses some public variables. \r\nThey are reserved and you cannot use them.  Most of them starts with underscore symbol (_). So it is good not to start your variables with _. \r\nWe propose to start with p_<prj>  (i.e. p_a01 for project a01) \r\n\r\noWnd, oBar, abt, _pegicon, _dlgicon, _broicon, ;\r\nst_color, men_color, stop, _ch, _scr1, _ch1, _tgme, ;\r\n        _sernum, _lpscr, _fline, _help, _userid, _p_kind, _p_dodo, ;\r\n  messfle, menufle, menuntx, _boxfile, _bbcc, _on_help,;\r\n  _last_box, _boxtemp, _lastmenu, _boxscr, _remt_on, _mastop, ;\r\n  _oldate, _oltime, _lastchoi, _mindate, _maxdate, _dateor, _b_tit, ;\r\n  _machon, _andor, _noprzero, _nullpr, _maxusers, _fmen, _valpaswd, _newhelp, _usrgrp, ;\r\n  _eltemp, _center, _in_pas, _in_pswd, _mendone, _updhist,  _upddel,_compbro, _streq, user_pswd, ;\r\n  _p_width, _p_high, _p_stfont, _p_ewidth, _p_ehigh, _firdopeg, _fir1dopeg, _firmenu, ;\r\n  _linesperpage, _colsperrow, _for_col, _back_col, _stfcode, p_cline, p_ccol, ;\r\n  _oprn, _curline, _maxline, _port_land, _whight, _wwidth, _pdraft, _prdlg, ;\r\n  _pr_kind, _preview, _pixcol, _pixrow, _pr_file, _fontsar, _fontspl, _brwin, ;\r\n  _pr_font, _movebox, _move_d, _barfile, _fontscolor, _helphlp, _scrfont, _stoppeg, ;\r\n  _curwin, _dlwin, app_nr01, _hlpmen, _truestr, _falsestr, _wlchar, _getcoun, ; \r\n  _pegpath, _custprin, _fontspr, _exacprint, _exacdlg, _pp1, _ss1, _ss2, _ff2, _ff1, ;\r\n  _pp2, _sa1,  _tit1, _brobj, _descform, _showhelp, _brskeys, _userhis, _exitpeg, _doexit, _okdef, ;\r\n  _dpr_kind, _gtdtar, _chkpath, _maintitle, _mainpath, _secmpath, _othpath, _xmempath, ;\r\n  _pegpars, _par1, _par2, _par3, _par4, _par5, _par6, _par7, _par8, _par9, _par10, ;\r\n  _pegmetpath, _pegcontit, _pegscontit, _nr01base, _defkey, _pr_tooem, _dpr_tooem, ;\r\n  fhm_sign, fhm_meth, fhm_copy, fhm_copies, fhm_ok, fhm_loop, fhm_msg, fhm_mem1, fhm_mem2, fhm_ascii, ;\r\n  fhm_form, fhm_code, odbc_obj, odbc_rdd, odbc_cset, odbc_drv, pub_par, _ltooltip, _otooltip, _otoolwnd, _errorline, _errorlast, ;\r\n  _toplest, _leftlest, _manahtml, _bmptooltip, oTree, oImageList, oSplit, _existsplit, oOutlook, _iswnd, _splitsize, ;\r\n  oActX, oActW, _exActX, oRight, _exuseTree, oUseTree, _useTreeWid, _firwinpeg, _isclient, _peg_sname, _peg_sport, ;\r\n  _errorpeg, _errornr, _eventpar, _mdlgtitle, _ver_exe, _ver_ldate, _ver_ndate, _fon_css, _pubarr','2009-08-20','10:32:12','dias','0100-01-01','','',''),(526,'SETPUBVAR()','Sets a value to a variable that it is visible to all projects','SetPubVar(_name, _value, _fromfle)','C','PEG','getpubvar()','W311','When you call a new project with dopegnew() or opennewprj() functions then the public variables of new project are not visible to old one. \r\nIf you want to exchange data between projects you can use setpubvar() and getpubvar() functions. \r\n\r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n*************\r\n     _name (c): Variable Name \r\n     _value : It\'s value\r\n     _fromfle (l) Optional. Default=.f. If .t. then reads and writes public variables to file _pubarrfle (public Pegasus variable). \r\n\r\n\r\nExample\r\n**********\r\nsetpubvar(\'customer_nr\', 0)    \r\nopennewprj(\'addcustomer\')      // it sets to customer_nr the code of new customer\r\ngetpubvar(\'customer_nr\', 0)','2015-03-24','12:22:05','tesae','0100-01-01','','',''),(527,'GETPUBVAR()','Gets the value of a public variables seted eith setpubvar()','GetPubVar(_name, _def, fromfle)','','PEG','setpubvar()','W311','When you call a new project with dopegnew() or opennewprj() functions then the public variables of new project are not visible to old one. \r\nIf you want to exchange data between projects you can use setpubvar() and getpubvar() functions. \r\n\r\nReturns the value of variable or the default value if not found value\r\n\r\nArguments \r\n*************\r\n     _name (c): Variable Name \r\n     _value : Default value returned if no value found\r\n     _fromfle (l) Optional. Default=.f. If .t. then reads and writes public variables to file _pubarrfle (public Pegasus variable). \r\n\r\n\r\nExample\r\n**********\r\nsetpubvar(\'customer_nr\', 0)    \r\nopennewprj(\'addcustomer\')      // it sets to customer_nr the code of new customer\r\ngetpubvar(\'customer_nr\', 0)','2015-03-24','12:22:28','tesae','0100-01-01','','',''),(528,'DTOCNY()','Transform a date to character, without year','dtocNy(_date)','D','PEG','dtoc()','W311','Returns (c) from date tha day and month\r\n\r\nArguments \r\n   _date (d) : date to transform\r\n\r\n','2009-08-20','14:11:59','dias','0100-01-01','','',''),(529,'STR2WIDE()','Transforms a string to a wide character string','Str2Wide(_str, _fromcp)','C','PEG','Wide2Str(), StrChCp()','W311','Transforms a string to wide (utf-16) string. It is usefull when you want for example to transform from utf8 to ansi a string. You must first change it to wide. \r\n\r\nReturns (c) the wide string\r\n\r\nArguments \r\n    _str (c) : The string to transform\r\n    _fromcp (n): Optional. Default = 65001 (utf8). _str Code Page\r\n\r\nFor valid values of _fromcp (code pages) look to StrChCp() function','2009-09-01','19:52:49','dias','0100-01-01','','',''),(530,'WIDE2STR()','Transforms a string from wide to a code page','Wide2Str(_str, _tocp)','C','PEG','Str2Wide(), StrChCp()','W311','Transforms a string from wide (utf-16) to a code page. It is usefull when you want for example to transform from utf8 to ansi a string. You must first change it to wide and then to new code page\r\n\r\nReturns (c) the wide string\r\n\r\nArguments \r\n    _str (c) : The string to transform\r\n    _tocp (n): Optional. Default = 0 (Ansi). _str new Code Page\r\n\r\nFor valid values of _tocp (code pages) look to StrChCp() function','2009-09-01','19:52:35','dias','0100-01-01','','',''),(531,'STRCHCP()','Changes the code page of a string','StrChCp(_str, _fromcp, _tocp)','C','PEG','Wide2Str(), Str2Wide()','WIN311','Changes to a string the code page. \r\nReturns (c) the new string\r\n\r\nArguments \r\n    _str (c) : Thw string to change\r\n    _fromcp (n) : The code page of _str\r\n    _tocp (n) : The new code page to be transformed\r\n\r\n\r\nCode Pages Codes\r\n***********************\r\n0 = default to ANSI code page\r\n1 = default to OEM code page\r\n2 =  default to MAC code page\r\n3 =  current thread\'s ANSI code page\r\n42 =  SYMBOL translations\r\n65000 =  UTF-7 translation\r\n65001 =  UTF-8 translation\r\n\r\n','2009-12-08','14:25:10','dias','0100-01-01','','',''),(532,'-17. RESERVED METHODS','','','','THR','','','Pegasus with dataclass MySQL executes some methods if exists\r\n\r\n\r\n1. pegpodb : Must be to mainpath\r\n                   Executed after connected to data base. Usually executes main commands for connection\r\n\r\n2. errp00 :  Executed when an error to connection occured\r\n                Pegasus Sets the _errornr to \r\n                                 1=Pegasus Application Server not found \r\n                                 2=ODBC connection failed\r\n                                 3=p07 table doesn\'t exists\r\n\r\n3. pegplog : Must be to mainpath\r\n                 Executed for login to Pegasus. It must call loguser() to check the user\r\n\r\n\r\n4. pegasus.peg : pegc312.exe and pegc311.exe executes this method first and then chacks the directory. So it can contanis instruction for change directory (i.e. newdir(\'basic\\_001\') ) \r\n\r\n5. errp01: Executed on Error (before create the Pegasus.log)','2011-06-14','18:09:04','tesae','0100-01-01','','',''),(533,'GMAINTITLE()','Returns the application\'s name','gmaintitle()','C','PEG','','W312','Returns (c) the Appalication\'s name (name - version - release) \r\n','2009-09-09','08:59:53','dias','0100-01-01','','',''),(534,'LOGUSER()','Logins a user to application','loguser(_usercode, _password, _firstlogin, _onlyuser)','L','PEG','','W312','Checks if a user can login to application. \r\nReturns .t. if _usercode and _password are correct. \r\n\r\nArguments \r\n************\r\n     _usercode (c) : User Code to check \r\n     _password  (c) : User Password\r\n     _firstlogin (l) : If .t. then it is the main login to application (sets the main project of application). It must be .t. if used to method pegplog. Otherwise it must be .f. \r\n     _onlyuser (l) : If .t. then checks only user code and not the password. If _firstlogin=.t. then _onlyser not used from function. \r\n\r\n\r\nIn case you use the loguser() to method pegplog, it sets the appropriate variable for user login internally. So you just call the function as loguser(code, pswd, .t., .f.) and do no more.  In other cases you must set user_pswd= new user code\r\n','2009-09-14','13:05:47','dias','0100-01-01','','',''),(535,'GETSTR()','Returns a string.','getStr(_str, _onlychar, _view)','C','PEG','alltrim(), var2char()','W312','Returns a string produced by input value (_str).\r\nIt is usefull when we need a string and the input parameter isn\'t known type. \r\n\r\nArguments\r\n    _str (c) : The value to check and return. \r\n    _onlychar (l): Optional. Default=.t.  If it is  .t. then if input value (_str) isn\'t a string returns the empty string, otherwise transforms it to string.\r\n    _view (l): Default=.f.  If .t. then the numeric values returned with , as decimal symbol if ker_grdec=.t.\r\n','2014-09-11','09:16:39','tesae','0100-01-01','','',''),(536,'VAR2CHAR()','Transforms to string a variable','var2Char(_value)','C','PEG','str(), tostr(), alltrim(), getstr()','W312','Return a value as string. It is usefull when we need to get as string any value. \r\n\r\nArguments \r\n    _value : The value to transfor to string','2009-09-16','19:31:24','dias','0100-01-01','','',''),(537,'STRTO64()','Transforms a strin to Base64','StrTo64(_str)','C','PEG','alltrim(), strfrom64()','W312','Transforms a binary string to base64 form. \r\nReturns (c) the transformed string\r\n\r\nArguments\r\n*************\r\n    _str (c): the string to transform','2009-09-22','10:20:11','dias','0100-01-01','','',''),(538,'STRFROM64()','Transforms a base64 string','StrFrom64(_str)','C','PEG','strto64()','W312','Transforms a base64 string to it\'s binary form\r\nReturns (c) thw binary form of string\r\n\r\nArguments\r\n*************\r\n     _str(c): The base64 string to transform','2009-09-22','10:21:30','dias','0100-01-01','','',''),(539,'OSET_CNTR()','Centers a screen object','oset_cntr(_obj, _parent)','C','PEG','oset_pos(), getdata()','W312','Centers a screen object\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n      _obj  (o -c): The object to center\r\n      _parent (o): Default =nil. Optional. If not empty te parent window. \r\n\r\n\r\nExamples \r\n***********\r\n      oset_cntr(_curwin)    //_curwin is the current window object','2011-11-15','11:41:05','tesae','0100-01-01','','',''),(540,'GIVEBASE()','Returns a decimal number to another base','GiveBase(_num, _base, _len)','C','PEG','givehex(), str()','W312','Return (c) a decimal number to another base\r\n\r\n\r\nArguments\r\n*************\r\n    _num (n) : The number to be converted\r\n    _base (n) : Base to Use It must be a number between 1 and 26\r\n    _len (n) : Optional. Default = 0. The length of number to be returned. If the returned string\'s length  is smaller than _len then adds front of it, else returns it as it is. \r\n\r\n','2009-09-30','11:00:29','dias','0100-01-01','','',''),(541,'CALLPEG()','Calls a pegasus method as function','CallPeg(_peg, _par1, _par2,  _par3,  _par4,  _par5,  _par6,  _par7,  _par8,  _par9,  _par10)','','PEG','dopeg(), dopegobj(), newprj()','W311','Cals a pegasus method as a function with arguments. \r\nArguments passed to variables with names _par1, _par2,  _par3,  _par4,  _par5,  _par6,  _par7,  _par8,  _par9,  _par10\r\n\r\nReturns the ##RETURN value of method\r\n\r\nArguments\r\n\r\n    _peg (c) : The pegasus method name. \r\n    _par1, _par2,  _par3,  _par4,  _par5,  _par6,  _par7,  _par8,  _par9,  _par10 : Optional. The arguments of function','2009-10-26','13:24:25','dias','0100-01-01','','',''),(542,'CHCOLUMNS()','Changes Columns of a browse','ChColumns(_br, _aColumns)','C','PEG','chbrowse(), ?query?cfpp01301, ?query?cfpp01302, ?query?cfpp01304','W311','Changes the columns of browse list. The new columns must be to screen class used to create the browse in first time.  If you need to change a browse object using another screen class, you must use the chbrowse()\r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n*************\r\n     _br (o): The browse object to change\r\n     _ aColumns (a) : Array with new columns sequense. Array\'s elements are arrays (one for any column needed tob shown) with structure                               {_Field_Name, _nColumn, _nSize,  _nfont, _ccolor, _ctit, _cvfld, _csfld}\r\n     _Field_Name (c)= Name of field as it is to original browse (it is not case sensitive)\r\n     _nColumn (n)= Column of field. \r\n     _nSize (n)= Optional. Column size (pixels)  \r\n     _nfont (n)= Optional. Font code to be used\r\n     _ccolor (c)= Optional. Color Expression. It\'s result must be numeric type\r\n     _ctit (c)= Optional. Column Title \r\n     _cvfld (c)= Optional. Expression used for column value. It\'s result must be character type\r\n     _csfld (c)= Optional. Expression used for column sorting. It\'s result must be character type\r\n\r\nIf optional fields are empty, then original browse values are used.            \r\n','2016-02-17','15:57:54','tesae','0100-01-01','','',''),(543,'SET_FCOLOR()','Sets the color to a font code','set_fcolor(_fontcode, _color)','C','PEG','','W311','Changes the color to a font \r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n      _fontcode (n): The font code\r\n      _color (n): The RGB color code\r\n\r\n','2009-11-03','19:04:22','dias','0100-01-01','','',''),(544,'SENDOUTMAIL()','Send e-mail using the MS Outlook','SendMail(cTo, cSubj, cFile, aFiles)','L','PEG','SendMail(), SendHtmlMail()','W312','Send e-mail using the MS Outlook. In this case MS Outlook must be installed to your PC. \r\n\r\nReturns (l) .t. If mail has benn sended. \r\n\r\nArguments\r\n************\r\n    cTo (c) : e-mail to send \r\n    cSubj (c): e-mail subject\r\n    cFile (c): File name to be sended as e-mail body. It must be html type. \r\n    aFiles (a): Array with attached files. \r\n\r\n\r\n','2011-06-07','16:16:37','tesae','0100-01-01','','',''),(545,'SET_NEWFON()','Sets new Fonts Objects','Function Set_newfon(_code, _prn, _color, _cFname, _nWid, _nHei, _lBo, _nEsc, _nOrie, _nWe, _lIta, _lUnd, _lStr, _nCha, _noPre, _nClPre, _nQual, _nPit,','','','','','Function Set_newfon(_code, _prn, _color, _cFname, _nWid, _nHei, _lBo, _nEsc, _nOrie, _nWe, _lIta, _lund, _lStr, _nCha, _noPre, _nClPre, _nQual, _nPit, _descr)\r\n\r\n\r\nCreates a new font with code _code. IF _code allready exists then changes the parameters of font. \r\nThe new font exists until the end of session. If you change it into a printout, the font deleted when printout finished. \r\n\r\n_code (n) : The Font Code\r\n_prn  (l): If .t. then the font used to printout. It must created after can_print() called (or into printout)\r\n_color (n) : Font Color Code (RGB Color)\r\n_cFName (c): Face Name\r\n_nWidth (n) : Optional. Font Width\r\n_nHeight  (n) : Optional. Font Height\r\n_lBold (l) : Optional. \r\n_nEscapement (n): Optional. \r\n_nOrientation (n): Optional. \r\n_nWeight (n): Optional. \r\n_lItalic (l) : Optional. \r\n_lUnderline (l) : Optional. \r\n_lStrikeOut (l) : Optional. \r\n_nCharSet (n): Optional. \r\n_nOutPrecision (n): Optional. \r\n_nClipPrecision (n): Optional. \r\n_nQuality (n): Optional. \r\n_nPitchFamily  (n): Optional. \r\n_description (c): Optional','2011-01-31','23:50:35','tesae','0100-01-01','','',''),(546,'QUITPEGAS()','Unconditional quit of application','QuitPegas()','C','PEG','CLOSEPEGAS()','','Closes the application without any question\r\n','2014-06-30','15:09:14','tesae','0100-01-01','','',''),(547,'GETRELPTH()','Finds the module from a path','getRelPth(_pth, _module)','C','PEG','getflepth()','W312','Finds the relative path (i.e. ..\\..\\basic\\_001) for a path name. \r\nReturns (c) the prelative path name. \r\n\r\nArguments \r\n    _pth (c) : The path name to look for\r\n    _module (l): Default = .t. If .t. then returns the module name \r\n\r\n\r\nExample\r\n       getrelpth(\'c:\\pegasus\\basic\\_001\', .t.)   // basic\r\n       getrelpth(\'c:\\pegasus\\basic\\_001\', .f.)   // ..\\..\\basic\\_001\r\n','2009-12-29','18:34:49','dias','0100-01-01','','',''),(548,'GETFLEPTH()','Finds a file path name','getFlePth(_file, _ext)','C','PEG','getrelpth()','W312','Looks into current directory and then the directories of set_path()\r\nReturns (c) the directory of _file. \r\n\r\nArguments\r\n       _file (c): file to look for\r\n       _ext(c): extension of file\r\n\r\nExample\r\n      getflepth(\'a01_d\', \'dbf\')   // c:\\pegasus\\basic\\_001\r\n      getflepth(\'d01_d\', \'dbf\')   // ..\\..\\csm\\_001\r\n\r\n    \r\n\r\n','2012-12-14','10:58:08','tesae','0100-01-01','','',''),(549,'OPENNEWOBJ()','Opens a new Pegasus Object and runs a Method','openNewObj(_meth, _wait, _par1, _par2, ...., _par10)','C','PEG','dopeg(), opennewprj()','W312','Executes a Pegasus Method with till 10 parameters (method uses them as _par1, _par2, ....  _par10)\r\nReturns (c) the empty string\r\n\r\nArguments\r\n   _meth (c): the method to execute. If method is to another directory then changes dir, executes it and returns to old direcrtory\r\n   _wait (l) : (optional) if it is .t., the application waits to close the new screen, else runs independent. Default=.f.\r\n   _par1, _par2, ..... _par10 : Optional. The parameters passed to method. If they aren\'t character type (c) tey are transofrmed as characters\r\n\r\n\r\n','2015-09-09','11:26:36','tesae','0100-01-01','','',''),(550,'DBF2XML()','Creates an xml file from a dbf','DBF2XML(_dbf, _filename, _obj, _header)','C','XML','','W312','Creates an xml file from a dbf file. \r\nReturns (l) .t. if the file is created\r\n\r\nArguments \r\n      _dbf (c): The dbf file name \r\n      _filename (c): The xml file name to be created\r\n      _obj (o): Optional. It is a n get object to show the progress of execution\r\n      _Header (c): Optional. The xml header. Default=\'<?xml version=\"1.0\" encoding=\"windows-1253\"?>\'\r\n\r\nExamlpe\r\n\r\n     dbf2xml(\'etf\', \'c:\\xml\\etf.xml\')\r\n','2010-08-25','12:04:42','tesae','0100-01-01','','',''),(551,'TXT2DBF()','Appends data from a txt file to a dbf file','TXT2DBF(_dbf, _txt, _obj)','C','PEG','copyto(), appendfrom()','W312','Appends data from a txt file to a dbf. \r\nTxt file has rows separated by Enter and fixed length columns\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n     _dbf (c): The dbf file name\r\n     _txt (c): The ascii (txt) file name\r\n     _obj (o): A get object to show the progress of append. \r\n\r\n','2010-01-07','09:02:32','dias','0100-01-01','','',''),(552,'DOVALID()','Validates a screen class data','doValid(_desc, _type)','L','PEG','dopeg(), getdata()','W312','Executes the Integrity method of a screen class.\r\n\r\nReturn (l) .t. if no RETURN value exists to integrity method. \r\n\r\nArguments\r\n     _desc (c): The screen class\r\n     _type (n): The integrity type to execute\r\n \r\n       _type=1 : Executes integrity for save new record   (##BEGNEW\', \'##ENDNEW\' area of integrity method)\r\n       _type=2 : Executes integrity for save old record    (##BEGCHAN\', \'##ENDCHAN\' area of integrity method)\r\n       _type=3 : Executes integrity for cancel new record   (##BEGCANNEW\', \'##ENDCANNEW\' area of integrity method)\r\n       _type=4 : Executes integrity for cancel old record   (##BEGCANOLD\', \'##ENDCANOLD\' area of integrity method)\r\n       _type=5 : Executes integrity for delete record   (##BEGDEL\', \'##ENDDEL\' area of integrity method)\r\n       _type=6 : Executes integrity for on init section   (##BEGINIT\', \'##ENDINIT\' area of integrity method)\r\n\r\n       _type=11 : Executes the start tab section (\'##BEGSTARTTAB\', \'##ENDSTARTAB\')\r\n       _type=12 :  Executes the close tab section ( \'##BEGCLOSETAB\', \'##ENDCLOSETAB\')\r\n\r\n       _type=20 : Executes integrity for on init section   (\'##BEGOPENIT\', \'##ENDOPENIT\' area of integrity method)\r\n       _type=21 : Executes integrity for on init section   (##BEGCLOSEIT\', \'##ENDCLOSEIT\' area of integrity method)\r\n\r\ndovalid() exept _desc executes also \r\n\r\n a.   ..\\..\\localdata\\integrity\\\' + <module> + \'_\' + _desc + \'.peg\'\r\n b.   ..\\..\\localdata\\integrity\\\' + <module> + \'_\' + _desc + \'_mode_\' + pegtrim(ker_mode) + \'.peg\'\r\n\r\n              <module> = directory fo _desc. If _desc is stored to basic\\_001\\ then <module>=basic\r\n              ker_mode = application can gives a value for extra cheks. \r\n\r\nSo if _desc=basic\\_001\\a55_d application executes the methods \r\n    a. ..\\..\\localdata\\integrity\\basic_a55_d.peg\r\n    b. ..\\..\\localdata\\integrity\\basic_a55_d_mode_.peg \r\n\r\n','2019-04-04','17:00:50','tesae','0100-01-01','','',''),(553,'RECARRAY()','Find a value to an array as record','recArray(_array, _fname, _def, _item, _newvalue, _newwhen)','','ARRAY','pegSetArr(), pegGetArr(), pvget(), pvset(), pvdef(), ?query?funp1501','W312','Reads an array with record elements. Each element has name, value1, value2 ..... \r\nReturns the value of field\r\n\r\nArguments\r\n     _array (a): the array to look for. Array of this form creates the savepubl()\r\n     _fname (c): Field name to look for. It is not Case Sensitive.\r\n     _def : Optional. Default =\'\' . The value to return if no field found or if value is nil\r\n     _Item (n): Optional. Default=1. The array item (after first) to be returned\r\n     _newvalue : Optional. If exists then sets the value of item. If \"Record\" not found then add this with _fname and new value. Rest arguments of new record are seted to nil.\r\n     _newwhen (l): Optional Default=.f. If .t., then if _newvalue=nil, _newvalue=_def\r\n\r\n\r\nExample\r\npeg_arr = {  {\'name\', \'MyName\'}, \r\n                  {\'age\', 30}, \r\n               }\r\n\r\nrecArray(peg_arr, \'name\')  // MyName\r\nrecArray(peg_arr, \'age\')   //30\r\n\r\n','2019-06-06','13:00:22','tesae','0100-01-01','','',''),(554,'ASSARR()','Assigns values to variables using a 2 dimension array','assArr({ {_par1, _val1}, {_par2, _val2}, ...} )','C','PEG','asschr(), p_val()','W312','Assigns values to variables using an array. It is usefull when we need more thn one assignments with an expression. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n\r\n    _par1 (c): the name of parameter to get value\r\n    _val1 (c): the Expression that sets _par1 value\r\n\r\nIF _par1 has name like n<name> and exists the o<name> object, then refreshes the object. \r\n','2010-03-15','16:20:31','dias','0100-01-01','','',''),(555,'GIVENUMPIC()','Returns Picture for Numbers','givenumpic(_len, _dec, _comma)','C','PEG','transform()','W311','Returns (c) picture for a number. \r\n\r\nArguments\r\n\r\n     _len (n) : Total length of number\r\n     _dec (n) : Decimals of number\r\n     _comma (l) : Default .f. If .t. then the number uses the thousants separator','2010-05-11','20:35:32','tesae','0100-01-01','','',''),(556,'PREEXEC()','Executes a pegasus expression','PreExec(_expression, _def, _msg)','','PEG','','W312','Executes a Pegasus Expression and returns the result. If expression has error returns the _default value\r\n\r\nIt is usefule if we need to read an expression that isn\'t sure that hasn\'t errors.\r\n\r\n\r\nArguments\r\n\r\n    _expression (c): expression to execute\r\n    _def : If expression has error returns _def as valur\r\n    _msg (l): If .t. then appears message if error exists. \r\n\r\n','2010-05-13','18:24:42','tesae','0100-01-01','','',''),(557,'ODBCSCRIPT()','execute a script','odbcscript(_command, _type, _session, _nomsg, _erstop)','C','ODBC','odbcexec()','','Is the same as odbcexec(). \r\nIt executes more than one queries separeted by /*peg_end*/ (it is case sensitive)\r\nIf exists section  (all labels are case sensitive)\r\n##BPEG \r\n##EPEG \r\n/*peg_end*/\r\nexecutes pegasus methods \r\n\r\n\r\nArguments\r\n========\r\n  _command (c) : The command to execute. \r\n                        If the first character of _command is = (the equal symbol) Pegasus executes an odbctrans(_command) \r\n                        IF _session:cargo[2] <> 0 (see odbcget_names) then  _command=strchcp(_command, 0, _session:cargo[2]) \r\n  _type (l) : If execution returns data =.f. else =.t.\r\n  _session (o) : The session to close. If parameter is missed closes the default session. It is usefull when you open more than one odbc sessions to an Application\r\n   _nomsg (l) : Optional. If .t. then no error message appears if an error exists. Default values=.f.\r\n   _erstop (l): Optional. Default=.t.  If .t. then stops sql execution on error. Error code updates odbc_error public variable\r\n\r\nExample of Script\r\n********************\r\n\r\nDELETE FROM t0t ;\r\n/*peg_end*/\r\n\r\n##BPEG \r\n   msginfo(\'t01 table deleted\')\r\n##EPEG \r\n/*peg_end*/\r\n\r\nSET @n1:=0;\r\n/*peg_end*/\r\n\r\nINSERT INTO t00 (nr01, p01, p02)\r\nSELECT @n1:=@n1 + 1, \r\n             a01.p21 as p01, \r\n             a01.p19 as p02\r\nFROM a01;\r\n/*peg_end*/','2016-05-16','15:48:43','tesae','0100-01-01','','',''),(558,'PUBSTRVARS()','Create Public Variables','PubStrVars(_variables)','C','PEG','relstrvars()','W312','Creates public variables\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n    \r\n   _variables (c) : List of variables with initial values. \r\n                          _var1=_val1, _var2=_val2\r\n                         i.e. \"_date=date(), _num1=0, _num2=9999\"\r\n\r\n','2010-07-29','19:37:39','tesae','0100-01-01','','',''),(559,'RELSTRVARS()','Releases public variables from memory','RelStrVars(_variables)','C','PEG','PubStrVars','W312','Releases public variables. \r\n\r\nReturns (c) the emtpy string\r\n\r\nArguments\r\n*************\r\n     _variables (c): The list of variables separated by ,  (i.e. \"_date1, _num1, num2\")','2010-07-29','19:39:12','tesae','0100-01-01','','',''),(560,'ODBCBINUPD()','Updates a binary field to a table','odbcBinUpd(_table, _field, _value, _where, _peg, _sess, _len, _silen )','C','ODBC','odbcupdate()','W312','Updates a binary field with a value\r\nReturns (c) the empty string\r\n\r\nArguments\r\n    _table (c): table name\r\n    _field (c): Field name\r\n    _value (c): The new value (binary)\r\n    _where (c) : Where clause (as odbcupdate() )\r\n    _peg (l) : If .t. then updates the rem fields (as odbcupdate() )\r\n    _sess (o): Optional. The session (as odbcupdate() )\r\n    _len (n): Optional. Default = 1024. The length of buffer used to read an send data to table. \r\n    _silen (l): Optional. Def=.f. If .t. then not appears window with uploading progress\r\n\r\n','2019-07-22','13:56:30','tesae','0100-01-01','','',''),(561,'ODBCTBLFIELDS()','Returns an array with table fields','odbcTblFields(_table, _sess, _nolocal)','A','ODBC','odbcisfield()','W312','Returns (a) an array with names, types and length of a table. Types are to pegasus Terms \r\narray is like \r\n{ \r\n{field1, odbctype1, type1, length1, decimal1 }, \r\n{field2, odbctype2, type2, length2, decimal2 }, \r\n}\r\nfield1 = field name \r\nodbctype1 = odbc type of field\r\ntype1 = Pegasus type of field\r\nlength1 = Pegasus Field Length\r\ndecimal1 = Pegasus Decimals\r\n\r\nArguments \r\n     _table (c): Table to check\r\n     _sess (o): Optional. odbc Session\r\n    _nolocal (l): Optional. Default=.f.  If .t. then look directly to data base and not to local saved information (cashe)','2014-04-09','17:45:21','tesae','0100-01-01','','',''),(562,'ASCAN()','Scans an array and execute a command for any element','ascan(_array, _block)','N','ARRAY','aadd','','Scans an array, execute an block and returns (n) the element that found. \r\n\r\nArguments\r\n      _array : array to look for\r\n      _block : block to execute form each elemenet. \r\n\r\n\r\n\r\n  _i:=ascan(_arr, {|x| upper(alltrim(x))==_fld})','2013-06-13','15:23:21','tesae','0100-01-01','','',''),(563,'DTOCGR()','Transofrms a date to characcter to dd-mm-yy format','DtoCgr(_date)','C','DATE','dtoc(), dtocNy()','W312','Returns (c) a string from a date, formating as dd/mm/yy\r\n\r\nArguments\r\n************\r\n     _date (d): Date to format','2010-09-30','11:23:37','tesae','0100-01-01','','',''),(564,'TOTREFR()','Send refresh messages to windows','totrefr(_doit)','C','PEG','refrit()','W312','used to send refresh messages to windows. \r\nUsefull after refrit() \r\n\r\nArguments\r\n************\r\n    _doit (l) : If .f. then not send messages','2010-10-21','17:01:03','tesae','0100-01-01','','',''),(565,'TEXTAPPEND()','Appends a string to a file','TextAppend(_file, _string, _maxsize)','C','PEG','textsave(), textread()','W312','Appends a string to the end of a text file. \r\nReturns (c) the empty string\r\n\r\nArguments\r\n************\r\n       _file (c): File name to update. If not exists, create it\r\n       _string (c): String to append\r\n       _maxsize (n): Optional. Maximum size (to KB) of file. If variable exists and the file is allready >=_maxsize then copies it to\r\n                            <filename>_<date>_<time>.<ext> and creates new one to append the text.','2013-10-01','16:53:04','tesae','0100-01-01','','',''),(566,'ASSLOG()','Changes the (logic) value of an array of variables','assLog( _nr, _array)','C','SCR','','W312','Changes the logic value of variables as only one of them is .t.  (as if it was a ratio)\r\nChanges the value of _nr/th variable from .t. to .f. , or from .f. to .t. It is useful to screen that you want to have logic variables with only one with .t. value\r\n\r\nReturns (c) the empty string\r\n\r\nArguments \r\n************\r\n      _nr (n) :Site of variable to change into variables array\r\n      _array (a) : Thw array of variables names (as characters) to change\r\n\r\n\r\nExamples\r\n************\r\nnp01:=.t.\r\nnp02=.f.\r\nnp03=.f.\r\nnp04=.f.\r\n\r\nasslog( 1, {\'np01\', \'np02\', \'np03\', \'np04\'} )\r\n             // sets np01=.f., np02=.t.,  np03=.f., np04 = .f.','2010-11-19','15:34:01','tesae','0100-01-01','','',''),(567,'EXEPATH()','Finds the path of executable file.','ExePath()','C','PEG','','W312','Finds the path of executable file of application. It is usefull because there ara all executable files - utilities  need to run\r\nReturns (c) the file path name. \r\n','2010-12-30','12:58:00','tesae','0100-01-01','','',''),(568,'ODBCGET_NAMES()','gets the character set for MySQL data base','odbcGet_Names(_sess)','C','ODBC','odbcSet_Names() odbcCon()','W312','When Pegasus connects to a MySQL data base if exists the table  PegasusSetNames with field p01 reads the character set tha must have to connect. Sets _sess:cargo={name set,  code page of character set}\r\n\r\np01= 0 -> _sess:cargo={\'Greek\', 0}\r\n     = 1 -> _sess:cargo={\'Utf8\', 65001}\r\nIf not exists then uses Greek. So after connection executes the SET NAMES command. \r\n\r\n\r\nThis function executed from odbccon() internally.\r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n************\r\n   _sess (o): Optional. The _session to execute','2011-02-21','16:20:08','tesae','0100-01-01','','',''),(569,'ODBCSET_NAMES()','exexute the SET NAMES command','odbcset_names(_sess)','C','ODBC','odbcget_names() odbccon()','W312','Executes the SET NAMES command for character set returns the odbcget_names()\r\n\r\nReturns (c) the empty string\r\n\r\nThis command executed internally from odbccommand()\r\nArguments \r\n************\r\n   _sess (o): Optional. The session.','2011-02-21','16:09:54','tesae','0100-01-01','','',''),(570,'EDITBRLINE()','edits a line to browse using screen class','editbrline(_obj, _desc, _new, _aFkeys, _aLkeys, _aKeys, _aValidFlds)','A','SCR','inirec(), ?QUERY?CFPP01303','W312','Edits a browse line using a screen class. \r\nReturns (a) an array with {0=Esc/1=Save and go down/-1=save and go up, last key pressed}\r\n\r\nArguments \r\n************\r\n     _obj (o): browse object\r\n     _desc (c): Screen Class\r\n     _new (l): if new record or old one\r\n     _aFkeys (a) : Optional. Def = {38, 18}. Array with key codes that if pressed to first cell ends (with save) and go up\r\n     _aLkeys (a) :  Optional. Def = {40, 13, 3, 123}. array with key codes that if pressed to last cell ends (with save)  and go down\r\n     _aKeys (a) :   Optional. Def = {40, 38, 18, 3, 123}. array with key codes that if pressed  ends  (with save) edit\r\n     _aValidFlds (s): Optional. Def=nil. Array with field names than can edit. If nil then edit visible fields that are editable (from _desc class)\r\n\r\n\r\nDialog Box Created is _curwin.','2015-10-21','17:54:52','tesae','0100-01-01','','',''),(571,'ARRAYMEMB()','Searches an element into an array.','ArrayMemb(_val, _array, _caseinsens)','N','ARRAY','','W312','Returns (n) the site of an element into an array. If no found returns 0\r\n\r\nArguments \r\n************\r\n      _val : Value search for\r\n      _array (a) : Array of elements look into. Element are same type of _val. \r\n      _caseinsens (l): Optional. Default=.f. If .t. then the equality is case Insensitive (i.e. \'p01\'=\'P01\' in other case \'p01\'<>\'P01\'). It\'s used only if _val is type of C ot M. \r\n\r\n','2016-02-02','18:45:57','tesae','0100-01-01','','',''),(572,'EXECLINE()','Executes a Pegasus Instruction ( a line with pegasus expression)','execline(_instr, _def, _ermsg, _titmsg)','','PEG','execinstr(), pegvar()','W311','Executes a Pegasus Exression  and returns its value. If expression has error returns the _def value\r\n\r\nArguments\r\n*************\r\n\r\n     _instr (c): Instruction to execute \r\n     _def : value returned if error occured\r\n     _ermsg (l): Optional. Default = .t.. If .t. then display the error. \r\n     _titmsg (c): Optional. Default =\'\'. Title added to error window. \r\n\r\n','2019-08-27','15:24:23','tesae','0100-01-01','','',''),(573,'STR_TRN()','Pegasus Translation into a string','str_trn(_str, _sep)','C','STR','execline()','W311','Translates Pegasus exressions into a string. \r\nReturns (c) the new string \r\n\r\nArguments \r\n************\r\n      _str (c): String to be translated \r\n      _sep (c): Optional. Default = \'!:\'. The string separates the expressions \r\n\r\n\r\nExample \r\n\r\npeg_str1:=\'456\'\r\npeg_str2:=\'789\'\r\n\r\nstr_trn(\'123!:peg_str1!:peg_str2\')   // 123456789\r\n\r\n','2011-06-02','12:08:57','tesae','0100-01-01','','',''),(574,'PRINTMTXT()','Prints a text to myltiple lines','printmtxt(_at, _al, _astr1, _len, _afon)','C','PRINT','printtext()','W312','Prints a string to multiple lines. \r\nReturns (c) the emtpy string\r\n\r\nArguments\r\n************\r\n     _at, _al (n) : the coordinates (column, line) will be printed the text. Pegasus transforms automatically the coordinates into Pixels\r\n     _astr (c) : the text will be printed\r\n     _len (n) : The string length to be printed\r\n     _afon (n): the code of the font will be used\r\n','2011-06-27','10:16:26','tesae','0100-01-01','','',''),(575,'CALLFPEG()','calls a pegasus method','callfpeg(_cpegfile, _pararr, _retarr, _beglab, _endlab, _exact, _memopeg)','','PEG','dopeg()','W312','Calls a pegasus method (like dopeg())\r\nThe difference is that we can pass _pararr that internally can used as pub_arr1. So we can pass parameters to method. \r\nAlso we can use internally pub_arr2 and pub_arr3 \r\nAfter the end of callfpeg() the pub_arr1 and pub_arr2 have their previous values. So we can call callfpeg() from a callfpeg() and so on. \r\n\r\nReturns the ##RETURN Value or pub_arr2. \r\n\r\nArguments \r\n*************\r\n        _cpegfile (c) : The method file to execute\r\n        _pararr (a) : Array of parameters Internally used as pub_arr1\r\n        _retarr (l): Optional. Default = .f. If =.t. then returns the pub_arr2 else returns the ##Return value\r\n        _beglab, _endlab (c) : Optional.  Labels of begin and end of submethod to execute. \r\n        _exact (l): Optional = .f.  If =.t. then it doesn\'t execute the pegasus alternate files\r\n        _memopeg (m): Optional. If it exists is a memo with method. Then function executes this method with alias _cpegfile\r\n','2014-02-14','18:44:35','tesae','0100-01-01','','',''),(576,'PEGMSG()','Translates a string with value','pegmsg(_str)','C','STR','pegpict()','W312','Used to transalate a parametered string (usually internally). \r\nReturns (c) the string\r\n\r\nArguments \r\n************\r\n       _str (c) : the string to translate\r\n\r\n\r\nExample\r\n**********\r\n\r\npeg_str:=\"test\"\r\n\r\npegmsg(\'!:peg_str; no found\')     // test   (the value of peg_str variable)\r\npegmsg(\'!:peg_mystr; no found\')     // no found (peg_mystr doesn\'t exists)\r\n','2011-11-14','19:32:57','tesae','0100-01-01','','',''),(577,'PEGPICT()','Translates a picture argument','pegpict(_str)','C','PEG','pegmsg()','W312','Used internally to translate a picture string for pegasus. You can use if you need to create a screen file from code \r\n\r\nReturns (c) the picture string\r\n\r\nArguments\r\n************\r\n      _str (c): string to translate \r\n\r\n','2014-04-24','18:54:20','tesae','0100-01-01','','',''),(578,'GET_OBJ()','Returns the object by name','get_obj(_obj)','O','PEG','exec_obj(), oset_stat()','W312','Returns an object. If object doesn\'t exists returns nil. \r\n\r\nUsually called with a string argument that is object variable name If it is active returns the object, else returns nil\r\n\r\nArguments \r\n************\r\n        _obj (o -c): the objet to look for if exists\r\n','2015-02-19','18:46:58','tesae','0100-01-01','','',''),(579,'OSET_STAT()','Set status (enable - disable) of an object','oset_stat(_obj, _status)','C','PEG','oset_pos(), obut_activ()','W312','Sets an object enable or disable.  For button Objects use obut_activ()\r\nReturns (c) the empty string\r\n\r\nArguments\r\n*************\r\n     _obj (o-c): The object\r\n     _status (l): If .t. then enables the object, else disables it.','2014-07-18','19:05:19','tesae','0100-01-01','','',''),(580,'STRSP()','Tranforms a number to string','strsp(_num, _len, _dec, _gr, _sep, _empty)','C','STR','str(), tranform()','W312','Transforms a number to a string. \r\nReturns (c) the string. \r\n\r\nArguments \r\n************\r\n      _num (n) : Number to be transformed \r\n      _len (n) : Length as digits of transformed string\r\n      _dec (n): Optional. Default = 0. Decimals of number\r\n      _gr (l): Optional. Default = .f.. If .t. then the number will be in greek mode (, for decimals and . thousands separator) \r\n                 Can be used variable peg_grdec (default decimal point is greek)\r\n      _sep (l): Optional. Default=.f. If .t. then the number is separated per thousands\r\n      _empty (l): Optional. Drefault = .f..  If .t. then if _num=0 return empty string. \r\n\r\n','2019-09-11','15:34:47','tesae','0100-01-01','','',''),(581,'ODBCCOPYTO()','Copies data from odbc table to local dbf file','odbccopyto(_command, _session, _file, _createnew, _silence)','C','PEG','odbcput()','W312','Creates a dbf file from a odbc command. Used mainly to browse the data. \r\nIt is similar to odbcput(). The difference is that odbccopyto() doesn\'t changes the data types as odbcput does\r\n\r\nReturns (c) the empty string \r\n\r\nArguments\r\n************\r\n       _command (c): SELECT query for data to copy \r\n       _session (o): Oprional. Default is default session. The session used. \r\n       _file (c): The filename to create (without extensions)\r\n       _createnew (l): Optional. Default = .t. If it .f. then the _file must exists and odbccopyto() appends new data, else creates new file. \r\n       _silence (l): Optional. Default = .f.. If it is .f. then appears wait window.\r\n\r\n','2015-11-24','17:05:20','tesae','0100-01-01','','',''),(582,'TRANSVAR()','Transforms a variable value to a data type','TransVar(_var, _type)','','PEG','str(), val(), dtoc(), ctod(), odbcstr()','W312','Transforms a variable value to another type, to be used to replace a dbase field. \r\nReturns the new value\r\n\r\nArguments\r\n*************\r\n            _var : The variable or value to transform\r\n            _type (c): The type (C, M, N, D, L) to be transformed into. \r\n \r\n','2015-09-04','10:55:50','tesae','0100-01-01','','',''),(583,'ODBCADDARRAY()','Adda to an array elements to use for odbc functions','odbcAddArray(@_array, _fldname, _value, _len)','C','PEG','odbcinsert(), odbcupdate()','W312','Adds variables to an array used from odbc functions as odbcinsert(), odbcupdate()\r\n\r\nRetusn (c) the empty string \r\n\r\nArguments \r\n*************\r\n     _array (a) : array to update. It has 2 elements, as arrays with values to be used \r\n     _fldname (c): Field name to add \r\n     _value : Value to add\r\n     _len (n): Optional. Length of value to add\r\n\r\nExamples\r\n***********\r\npeg_arr:={}\r\nodbcAddArray(@peg_arr, \'nr01\', odbcnew_rec(\'a01\'))\r\nodbcAddArray(@peg_arr, \'p19\',  \'TEST LTD\' )\r\nodbcinsert(\'a01\', peg_arr[1], peg_arr[2], .t.)\r\n\r\n','2015-07-03','16:15:53','tesae','0100-01-01','','',''),(584,'ODBCSTR()','Creates a string to be used to update a dbase field','odbcStr(_var, _len)','C','PEG','odbcAddArray(), odbcinsert(), transvar()','W312','Returns (c) a string transforming _var as character to be used to update a dbase field \r\n\r\nArguments\r\n************\r\n     _var: variable to be transformed\r\n     _len (n): Optional. Length of string to be returned\r\n\r\n','2015-09-04','10:55:10','tesae','0100-01-01','','',''),(585,'HTMLTOMEMO()','Converts a Pegasus html to memo','HtmlToMemo(_html, _onlypeghtml, _total)','M','PEG','memotohtml(), puthtmlheader(), isPeghtml(), callfpeg(\'?query?funp030\', {_memo}, .f.)','W312','Converts a pegasus html to memo. Deletes main tags that html has. The html must be a Pegasus html (iSPegHtml(_html)=.t.\r\nReturns (m) the memo\r\n\r\nhtml2memo() deletes basic html tags. You can use callfpeg(\'?query?funp030\', {_memo}, .f.) , that returns the text of html object\r\n\r\nArguments \r\n************\r\n     _html (m): html to be converted\r\n     _onlypeghtml (l): Optional. Default = .t..  If .t. then convertes only html memo created from Pegasus html managment (IsPegHtml(_memo)=.t.)\r\n     _total (l): Optional. Default = .f. If .t. then uses \"htmlfile\" object to convert all html tags. Otherwise converts only standard (used from Pegasus) tags. \r\n','2016-10-18','13:33:33','tesae','0100-01-01','','',''),(586,'RESGETDATA()','Resizes a dialog box','ResGetData(_obj, _repaint)','C','PEG','getdata()','W312','Resizes a dialog box created with getdata(). It is usefull if you change the :aOrCoor (array {top, left, bottom, right}) of dialog box objects. \r\n\r\nReturns (c) the empty string. \r\n\r\nArguments\r\n************\r\n      _obj (o): The dialog box (ie:_curwin)   \r\n      _repant (l): Set .t. to repaint the window allways. \r\n','2012-05-24','16:19:52','tesae','0100-01-01','','',''),(587,'PEGSTRTRAN()','Creates a new string by replacing tags with strings from array','PegStrTran(_str, _array, _delimiter)','C','PEG','strtran()','W312','Returns (c) a new string by replacing tags (like #1#, #2#) with strings from an array\r\n\r\nArguments \r\n************\r\n    _str (c) : String to be replaced \r\n    _arr (a): Array with strings to replace tags\r\n    _delimiter (c): Optional. Default=\'#\'\r\n\r\nExamples\r\n\r\n   PegStrTran(\"This #1# a #2#\", {\'is\', \'pc\'} )     // This is a pc\r\n   PegStrTran(\"This @1@ a @2@\", {\'is\', \'pc\'}, \'@\' )     // This is a pc\r\n','2012-05-29','16:08:17','tesae','0100-01-01','','',''),(588,'NPGETBRROW()','Finds the row clicked in a browse','nPGetBrRow(_obr, _nrow)','N','PEG','getdata()','W311','Returns (n) the line clicked by mouse. \r\nIt is usefull into methods of browse objects. \r\n\r\nArguments\r\n*************\r\n    _obr (o): browse object\r\n    _nrow (n): the Row clicked by mouse. \r\n\r\nnPGetBrRow(obr01, _eventpar[1])','2012-09-18','14:21:56','tesae','0100-01-01','','',''),(589,'DXML_GETVAL()','Returns a value from an xml record','DXML_getval(_xmlarray, _record, _fieldname, _retlen, _toansi)','C','XML','dxml_fldval(), dxml_fopen(), dxml_records()','W312',' Finds from an array created by Dxml_Records() values\r\n Returns (c) the value it found\r\n\r\nArguments\r\n************\r\n     _xmlarray (a) : array created by dxml_records()\r\n     _record (n) : the record site to search\r\n     _fieldname (c): The field name (no case sensitive)\r\n     _retlen (n): the lenght to return. if zero returns entire value\r\n     _toansi (l) : Optional (default = .t.). If it is .t. then tansforms the returned value to Ansi (usualy data readed as oem )\r\n','2012-10-11','13:52:11','tesae','0100-01-01','','',''),(590,'REALFNAME()','Finds the full filename searching  at application paths','realfname(_filename)','C','FILE','fname(), cFilename()','W312','Returns (c) the full file name searching to all paths seted with set_path()\r\n\r\nArguments\r\n************\r\n    _filename (c): The filanem to look for. If no extension exists then adds the \'.dbf\'\r\n\r\nExamples \r\n***********\r\nset_path(\"..\\..\\syllo\\_001;..\\..\\basic\\_001;\")\r\nrealfname(\'syla01_d.dbf\')    // ..\\..\\syllo\\_001\\syla01_d.dbf\r\n\r\n','2012-11-15','18:07:22','tesae','0100-01-01','','',''),(591,'FILEMODULE()','Finds the module (application subdirectory) of a file','fileModule(_fname)','C','FILE','realfname()','W312','Returns (c) the application subdirectory of a file. Application subdirectories has structure <subname>\\_001\r\nFunction searches into current application subdirectory and paths that used with set_path()\r\n\r\nArguments \r\n************\r\n    _fname (c): Filename to search for\r\n\r\nExamples \r\n***********\r\nset_path(\"..\\..\\syllo\\_001;..\\..\\basic\\_001;\")\r\nrealfname(\'syla01_d\')    // ..\\..\\syllo\\_001\\syla01_d.dbf\r\nfilemodule(\'syla01_d.dbf\')    // syllo\r\n\r\n','2012-11-15','18:06:56','tesae','0100-01-01','','',''),(592,'PEGTRIM()','Delete leading and trailing spaces','pegTrim(_str, _onlychar, _view)','C','PEG','alltrim(), getstr()','W312','Returns (c) a strting without leading and trailing spaces. \r\n\r\nIF characters contains chr(0) then gets the string until chr(0). \r\n\r\nArguments \r\n========\r\n    _str (c): String to trim \r\n    _onlychar (l): Default = .t. If .t.t then if argument isn\'t character type returns the empty string. If it is .f. then returns the argument transformed to string. \r\n    _view (l): Default=.f.  If .t. then the numeric values returned with , as decimal symbol if ker_grdec=.t.\r\n','2014-09-11','09:16:22','tesae','0100-01-01','','',''),(593,'PEGIF()','Executes instructions if a condition exists','pegIf(_condition, _ifArrayy, _elseArray)','C','PEG','pegWhile(), if(), execinstr()','V312','Executes the _ifArray instruction if _condition is .t. else it executes _elseArray Istructions.\r\nReturns (c) the empty string \r\n\r\n\r\nArguments\r\n========\r\n    _condition (l): Expression to check\r\n    _ifArray (a): Optional. Array of pegasus Instructions to execute if _condition = .t.\r\n    _elseArray (a): Optional. Array of pegasus Instructions to execute if _condition = .f.\r\n','2013-07-18','11:06:30','tesae','0100-01-01','','',''),(594,'PEGWHILE()','Executes an array of instructions while a condition is true','pegWhile(_cond, _array)','C','PEG','pegif()','W312','Returns (c) the empty string \r\n\r\nArguments\r\n========\r\n     _condtion (c): The expression to check \r\n     _array (a): Array of istructions to execute.','2013-07-18','11:08:30','tesae','0100-01-01','','',''),(595,'CLEARFEM()','Clears no valid, to fem, characters','clearFem(_str)','C','STR','femchr()','W312','Clears a string from no valid characters for FEMs. \r\nReturns (c) the new string \r\n\r\nArguments\r\n========\r\n    _str (c): The strint to clear','2013-10-30','17:42:00','tesae','0100-01-01','','',''),(596,'ADDTIME()','Adds minutes to a date - time and returns new date - time','addTime(@_date, @_time, _min)','C','DATE','addmonth()','W312','Adds minutes to _date, _time and finds new _date, _time values\r\nReturns (c) the emty string\r\n\r\nArguments\r\n========\r\n     _date (d): Date to change\r\n     _time (c): Time to Change. It\'s a string of tyle \'HH:MM\'\r\n     _min (n) : Minutes to add','2013-12-19','14:39:57','tesae','0100-01-01','','',''),(597,'RELPUBL()','Releases Public Variables from memory','RelPubl(_array)','C','PEG','savePubl()','W312','Releases variables. \r\nReturns (c) the empty string\r\n\r\nArguments\r\n  _array (a) : array with variable names. It\'s structure is { {\'variable_name\', _variable_value} }. Is same as array  created by savepubl()\r\n\r\n','2014-03-06','11:05:46','tesae','0100-01-01','','',''),(598,'ODBCSENDRECS()','Sends Records from an dbf file to a table','odbcSendRecs(_table, _dbf, _cond, _buffer, _peg, _sess, _duplicate, @_variable, _object, _afields, _nofields)','C','ODBC','','W312','copies data from an dbf file to an ODBC table. \r\n\r\nReturns (c) the empty string\r\n\r\nArguments\r\n========\r\n     _table (c) : table name\r\n     _dbf (c): dbf file with data to be copied.\r\n     _cond (c): Optional Default = \'.t.\'  The condition for dbf records to be copied\r\n     _buffer (n): Number of records to be sended per time \r\n     _peg (l) : if .t. then updates remdate, remtime, remuser fields. \r\n     _sess (o): Optional. Session to be used for database connection\r\n     _duplicate (l): If .t. then on duplicate keys update the fields\r\n     _variable : Optional. Screen Variable name (c) to be updated per progress. \r\n     _object (o-c): The _variable object to be refreshed\r\n     _afields (a). Oprional. If not empty, the field name to be sent. If empty (default) function sends all common fields of dbf and table. \r\n     _nofields (a): Optional. Array with field names not to be sent\r\n','2018-11-12','11:11:18','tesae','0100-01-01','','',''),(599,'PEGLOAD()','Loads to memory a Pegasus Method or a text file to reuse It.','pegLoad(_cpegfile, _isdbf, _header, _clear)','C','PEG','dopeg()','W312','If ker_tomem=.t. (public variable) then Pegasus loads methods and sql files used from odbccommand, to memory. When executes a method,with dopeg() or dopegtxt(), first checks if exists to memory. If exists use the loaded method, else loads it and then execite it. \r\n\r\npegload() checks if exists a method or a file to memory. If not, load it to memory. Return (m) the method or text file as memo\r\n\r\nArguments\r\n========\r\n     _cpegfile( c): Method file name \r\n     _isdbf (l): Optional. Default=.t.. If method is dbf file (standard methods) or text file. \r\n     _header (c): Optional. If not empty, adds header to file name (usefule to be unique). \r\n     _clear (l). Optional. Default = .f.  If .t. then clears method from memory. Usefull if needed to change and execute it again\r\n     _memo (m). Optional. If exists then add this memo to memory. Used if _isdbf=.f.\r\n\r\n','2014-04-29','15:30:02','tesae','0100-01-01','','',''),(600,'ORDKEY()','Returns expression of index key','OrdKey(_index)','C','DBPEG','','W312','Returns (c) the key expression of an index\r\n\r\nArguments\r\n==========\r\n     _index (n): Optional. Default is current index. Is index nubler of work area','2014-04-25','12:57:01','tesae','0100-01-01','','',''),(601,'PEGGETSTR()','Returns the first not empty string of an array','PegGetStr(_aStr, _aSstr, _lClear)','C','PEG','','W312','Returns (c) the first not empty element of an array of string\r\n\r\nArguments\r\n=========\r\n    _aStr (a): Array of Strings\r\n    _aSStr (a): Optional. Array of Strings with same length as _astr. If it isn\'t nil, Function returns the element from this array\r\n    _lClear (l): Optional. Default=.f. If .t. then transofrms string \"__\" with a blank \r\n\r\nExamples \r\n========\r\nPegGetStr({ \'\', \'1\', \'2\'})   //1\r\nPegGetStr({ \'\', \'1\', \'2\'}, {\'a\', \'b\', \'c\'})   //b\r\n','2018-03-22','12:23:23','tesae','0100-01-01','','',''),(602,'ODBCCHANVIEW()','Changes a view using the screen class','odbcChanView(_desc, _sess)','C','ODBC','odbcchanstru()','W312','Changes the view (or creates it if not exists) that screen class _desc defines\r\nReturns (c) the empty string\r\n\r\nArguments\r\n========\r\n    _desc (c) : The screen class uses \r\n    _sess (o): Optional. Default is current session','2014-05-13','16:48:25','tesae','0100-01-01','','',''),(603,'GRVAL()','convertes a string to number','grval(_str, _grdecimal)','C','STR','val() str(), strsp()','W312','Convertes a string to number. String can use as decimal symbol period (.) or comma (,)\r\nReturns (n) the number\r\n\r\nArguments\r\n==========\r\n     _str (c): String to be converted\r\n     _grdecimal (t): Optional. Default = .t. If .t. then decimal point is comma (,). Else it is period (.)\r\n\r\n\r\n','2014-11-03','13:56:14','tesae','0100-01-01','','',''),(604,'STOPEVNT()','Stop executes Events on a dialog box','stopevnt(_odlg)','C','PEG','startevnt(), enableevnt()','W312','Stop to execute events from user (usually from keyboard and mouse). \r\nReturns (c) thje empty string. \r\n\r\nUsually used if user must not press an button on current dialog box, until a method to be executed. \r\n\r\nArguments \r\n=========\r\n    _odlg (o): The dialog box. We can use _curwin.\r\n\r\n','2014-12-24','16:03:41','tesae','0100-01-01','','',''),(605,'STARTEVNT()','Enables Events to dialog box.','startevnt(_odlg)','C','PEG','stopevnt(), enableevnt()','W312','Enables events to a dilaog box. Events must be stoped with stopevnt()\r\nReturns (c) thje empty string. \r\n\r\nUsually used if user must not press an button on current dialog box, until a method to be executed. \r\n\r\nArguments \r\n=========\r\n    _odlg (o): The dialog box. We can use _curwin.\r\n\r\n','2014-12-24','16:05:30','tesae','0100-01-01','','',''),(606,'ENABLEEVNT()','Returns if events have been stoped or not','enableevnt(_odlg, .f.)','C','PEG','startevnt(), stopennt()','W312','Returns (l) if events are enabled (.t.) or not (.f.). Events can be disabled or enabled with stopevnt() and startevnt()\r\n\r\nArguments\r\n=========\r\n    _odlg (o): The dialog box. We can use _curwin.\r\n    _msg ((l): Optional. Default = .f.  If .t. then Alerts if cannot execute. \r\n','2015-08-06','11:37:22','tesae','0100-01-01','','',''),(607,'EXEC_OBJ()','Executes a method or returns an object property','exec_obj(_obj, _meth, _def)','','PEG','get_obj()','W312','Executes an object method and returns the value. If object isn\'t valid returns the _def value. It\'s usefull in case, the object isn\'t allways initiated. \r\n\r\nArguments \r\n=======\r\n    _obj (c): Object name \r\n    _meth (c): Method - expression - to execute\r\n    _def : Optional. If exists, function returns the _def value in case method returned value is nil\r\n\r\n','2015-02-19','18:46:46','tesae','0100-01-01','','',''),(608,'GETPEGFILE()','Translates a pegasus file name','GetPegFile(_filename)','C','PEG','getdata(), opendesc()','W312','Translates a Pegasus File Name using public parameter peg_cpath\r\nReturns (c) the new file name \r\n\r\nArguments\r\n=========\r\n     _filename (c): The file name to translate \r\n\r\n\r\npeg_cpath usually holds the module subdirectory (i.e. basic\\_001) of application. If peg_cpath is empty uses the exepath() as root path. \r\nGetPegFile() find the full path name of a relative file name using masks. \r\n\r\n     ?FileName => <root>\\FileName\r\n     ?module?FileName => <root>\\module\\_001\\FileName\r\n\r\nExamples \r\n=======\r\n    peggetfile(\"?basic\\_001\\ascp0\")   // c:\\pegasus_erp\\basic\\_001\\ascp0\r\n    peggetfile(\"?basic?ascp0\")   // c:\\pegasus_erp\\basic\\_001\\ascp0\r\n','2018-11-15','17:05:55','tesae','0100-01-01','','',''),(609,'?QUERY?CFPP001','MEMO: Edit - View a memo or htm field','callfpeg(\'?query?cfpp001\', {_memo, _type,  _get, _title, _cent, _top, _lef})','C','ERPM','callfpeg()','','Edit or View a memo field as memo or html \r\nReturns (c) the new memo\r\n\r\nArguments\r\n=======\r\n    _memo (m): Memo to edit\r\n    _type (n) : 1 = Html type, 2=memo type \r\n                    11 = Html type but _memo is variable name\r\n                    12 = Memo type but _memo is variable name\r\n    _get (l): If .t. then edit the memo. \r\n    _title (c): Window title \r\n     _cent (l): Optional. Default = .f., If =.t. then window is centered\r\n     _top (n): Optional. Default = -1 (means standard). The top corner. \r\n     _left (n): Optional. Default = -1 (means standard). The left corner. \r\n\r\n\r\n\r\nExamples\r\n=======\r\ncallfpeg(\'?query?cfpp001\', {np30, 2,  .t., \'\'})\r\ncallfpeg(\'?query?cfpp001\', {\'np30\', 12,  .t., \'\'})\r\n','2019-05-09','11:41:43','tesae','0100-01-01','','',''),(610,'?QUERY?CFPP002','_D: Compares old and new values of a dialog box','callfpeg(\'?query?cfpp002\', {_array, _type, _novpref, _novars})','C','ERPM','','','Compares new and old values of a dialog box. \r\nOld values have been saved to _array using savepubl()\r\nReturns (c) a string with changed values. \r\n\r\nArguments \r\n=========\r\n     _array (a): Array with old values, Created by savepubl()\r\n     _type (n): Defines if the returned string contains changed field names (=1) or descriptions (=2)\r\n     _novpref (c): Defines variable prefix  not to check (i.e. \'nv\')\r\n     _novars (c): Defines variables, separated with #, not to be cheched (i.e. \'#NP01#NP02#\')\r\n\r\n','2016-02-03','15:45:41','tesae','0100-01-01','','',''),(611,'?QUERY?CFPP003','_D: Shows The changed Variables created by ?query?cfpp002','callfpeg(\'?query?cfpp003\', {_string})','C','ERPM','','','Returns (c)  The changed Variables created by ?query?cfpp002\r\n\r\nArguments\r\n=======\r\n    _string (c): The string as created by ?query?cfpp002\r\n','2015-08-04','12:22:01','tesae','0100-01-01','','',''),(612,'?QUERY?CFPP00401','Checks if exists relations for a record','callfpeg(\'?query?cfpp00401\', {_table, _field, _value, _anotbl, _views, _reltypes, _noshow})','C','ERPM','','','Checks if a record has relation into data base. \r\nReturns (c) \'00\' if find relations or \'01\' if not. \r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = table to look for relations\r\n   _field (c) = table\'s field to look for \r\n   _value (c) = value to look for (as char)\r\n   _anotbl (a) = array of tables to exclude  (upper(names)) (i.e. {\'I01\', \'I04\'})\r\n   _views (l) = if .t. checks views too\r\n   _reltypes (c) = List of relations types i.e. \"\'1\', \'2\', \'3\'\". If empty -> all types\r\n   _noshow (l) = if .t. then no shows relations\r\n\r\n','2015-08-04','12:22:24','tesae','0100-01-01','','',''),(613,'?QUERY?CFPP00402','Change Related Records','callfpeg(\'?query?cfpp00402\', {_table, _field, _oldvalue, _nevalue, _anotbl, _reltypes})','C','ERPM','','','callfpeg(\'?query?cfpp00402\', {_table, _field, _oldvalue, _nevalue, _anotbl, _reltypes})\r\n\r\nChanges Related Records Values into data base. \r\nReturns (c) \'00\' if find relations or \'01\' if not. \r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = table to look for relations\r\n   _field (c) = table\'s field to look for \r\n   _oldvalue (c) = value to look for (as char)\r\n   _newvalue (c) = new value to set (as char)\r\n   _anotbl (a) = array of tables to exclude  (upper(names)) (i.e. {\'I01\', \'I04\'})\r\n   _reltypes (c) = List of relations types i.e. \"\'1\', \'2\', \'3\'\". If empty -> all types\r\n','2015-03-03','11:00:27','tesae','0100-01-01','','',''),(614,'?QUERY?CFPP00403','Delete Related Records Values into data base.','callfpeg(\'?query?cfpp00403\', {_table, _field, _value, _reltypes})','C','ERPM','','','\r\nDelete Related Records Values into data base. \r\nReturns (c) \'00\' if find relations or \'01\' if not. \r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = table to look for relations\r\n   _field (c) = table\'s field to look for \r\n   _value (c) = value to look for (as char)\r\n   _reltypes (c) = List of relations types i.e. \"\'1\', \'2\', \'3\'\". If empty -> all types\r\n\r\n','2015-03-03','11:00:32','tesae','0100-01-01','','',''),(615,'?QUERY?CFPP005','url encoding a string','callfpeg(\'?query?cfpp005\', {_string, [_nochars], [_noletters], [_type]})','C','ERPM','','','Transforms the _string to url encoding.\r\nReturns (c) the url encoded string \r\n\r\nArguments\r\n=========\r\n    \r\n   _string (c) = _string to transform\r\n   _nochars (c) = Optional. Default = \'\'. String with characters to be deleted from string. \r\n   _noletters (l) = Optional. Default = .f. . If it is .t. then encodes only special characters. It is usefull if the returned string needs to be utf encoded\r\n   _type (c) = Optional. Default = \'\'. If not empty, _nolletters not used and encodes all characters\r\n                    W =  Windows encoding  (i.e. chr(193) GREEK A => %C1)\r\n                    U = UTF8 encoding         (i.e. chr(193) GREEK A => %C3%81)\r\n\r\nexample \r\n======\r\npeg_str1:=callfpeg(\'?query?cfpp005\', {peg_str, \'\', .t.})     //url encode only special characters\r\npeg_str1:=StrChCp(peg_str1, 0, 65001)       // utf-8 encoding','2018-05-25','15:37:09','tesae','0100-01-01','','',''),(616,'?QUERY?CFPP006','Opens A file with Default Programm','callfpeg(\'?query?cfpp006\', {_filename, _option})','C','ERPM','','','Opens A file with Default Programm    \r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n    \r\n   _filename (c) = File to open\r\n   _option (c) = Optional. Default = \'open\'. Sets what to do with file. Possible values are \'open\', \'print\'\r\n   \r\n   If file type is .txt or .asc uses notepad to open it','2015-03-03','11:00:40','tesae','0100-01-01','','',''),(617,'?QUERY?CFPP007','Uploads data to a table from local dbf.','callfpeg(\'?query?cfpp007\', {_table, [_type]})','C','ERPM','','','Uploads data to a table from local dbf. \r\nUsefull to initialize data to data base\r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = Table to update\r\n   _type (n) = Optional. Default = 2. \r\n               If =1 then uploads data with no more checks. \r\n               If =2 then uploads data if table is empty\r\n   \r\n      \r\n','2015-03-03','11:00:43','tesae','0100-01-01','','',''),(618,'?QUERY?CFPP008','Gets a Value','callfpeg(\'?query?cfpp008\', {_title, _varname, _picture, _type, _top, _left})','L','ERPM','sayget()','','Gets a varible to dialog box. Is similar with SayGet(), but the dialog box is like the rest Pegasus dialog boxes\r\nReturns (l) .t. if user changed value. \r\n\r\nArguments\r\n=========\r\n    \r\n   _title (c) = Dialog box Title\r\n   _varname (c) = The variable Name\r\n   _picture (c) = Optional. Default =\'\'. Picture to use to edit value\r\n   _type (c) = Optional. Default = get it by _varname. It is the type of variable\r\n   _top (n) = Optional. The top corner of window. -1=the default \r\n   _left (n) = Optional. The left corner of window -1=the default','2015-04-09','10:46:58','tesae','0100-01-01','','',''),(619,'?QUERY?CFPP009','Updates the remdate and remtime of a random table record.','callfpeg(\'?query?cfpp009\', {\'table1\', \'table2\', ....})','C','ERPM','','','Updates the remdate and remtime of a random table record. \r\nIt is usefull when updates a big set of records, to set the latest updated record nest than set. \r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n    \r\n   _table1 (c) = The name of table1\r\nwe can have a list of tables separated by comma (,)\r\n    \r\n','2015-03-03','11:00:51','tesae','0100-01-01','','',''),(620,'?QUERY?CFPP010','Executes the internal method for a table.','callfpeg(\'?query?cfpp010\', {\'table\'})','C','ERPM','','','Executes the internal method for a table. \r\nPegasus has methods to be executed after mass updates of tables. This method executes it. It\'s used internally. \r\nReturns (c) the empty string \r\n\r\nInternal methods and scripts incluted into q21, p21, w06 tables as records. \r\nExecutes : \r\n   method of q21.p08 where p01=\'table\'\r\n   scripts of p21.p30 where p01=  \'#table#\'\r\n   scripts of w06.p07 where p01= 1000 && p04=\'#table#\'\r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = The name of table\r\n    \r\n','2017-05-03','19:05:41','tesae','0100-01-01','','',''),(621,'?QUERY?CFPP011','JSON:Transforms a JSON string to a Pegasus Array.','callfpeg(\'?query?cfpp011\', {_json}, .t.)','A','ERPM','recarray()','','Transforms a JSON string to a Pegasus Array. \r\nArray can be accessed by recarray()\r\nReturns (a) the array\r\n\r\nArguments\r\n=========\r\n    \r\n   _json (c) = The json as string\r\n   \r\n    \r\n','2015-08-04','12:04:50','tesae','0100-01-01','','',''),(622,'?QUERY?SORP011','Browse Sorting by Header Pressing.','callfpeg(\'?query?sorp011\', {_brobj, _alias, _indexfile, _expr, _orderno, _search_fields})','C','ERPM','','','Browse Sorting by Header Pressing. \r\nUsed to temporary dbf files or temporary ODBC tables. \r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n    \r\n   _brobj (o) = The browse object\r\n   _alias (c) = Optional. Default = Read it from _brobj. alias used to browse area\r\n   _indexfile (c) = Optional. The name of temporary index to create. If it is empty, then creates a new file. \r\n                         In Case of ODBC table, we can use the query for records. If empty, Pegasus finds the default of area. \r\n   _expr (c) = Optional. Default = \'\'. Expression used as prefix to index. ie. \"dtos(p01)\" if we want to sort by p01 (date) and then by the field user selects. In case of ODBC table, it is a mysql expression. \r\n   _orderno (l) = Optional. Default = .f. If = .t. then after sorting, no index used to browse. \r\n   _search_fields (c) = Optional. Default = \'\'. Field Names (upper cases), separated by #, that, if pressed, then user search with a value. If _search_fields isn\'t empty and user press a field of them, then _orderno:=.f.\r\n          If _search_fields=\'##\' then searches for all fields. \r\n   \r\n   \r\n    \r\n','2017-07-11','15:43:44','tesae','0100-01-01','','',''),(623,'?QUERY?SORP0111','ODBC Browse Sorting by Header Pressing.','callfpeg(\'?query?sorp0111\', {_brobj, _alias, _query, _expr})','C','ERPM','','','ODBC Browse Sorting by Header Pressing. \r\nUsed to temporary tables. \r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n    \r\n   _brobj (o) = The browse object\r\n   _alias (c) = Optional. Default = Read it from _brobj. alias used to browse area\r\n   _query (c) = Optional. default =\'\'. We can use the query for records. If empty, Pegasus finds the default of area. \r\n   _expr (c) = Optional. Default = \'\'. Expression used as prefix to index. ie. \'p01, p02 desc\'','2015-03-03','11:01:17','tesae','0100-01-01','','',''),(624,'?QUERY?RUNP01_1','Executes a Pegasus Method in a new \"running window\".','callfpeg(\'?query?runp01_1\', {_user, _ms1, _ms2, _meth, _stop, _fin, _title, _top, _left, _width, _hight, _type, _cfile})','C','ERPM','','','Executes a Pegasus Method in a new \"running window\". \r\nReturns (c) the empty string \r\n\r\nWe can use following variables, into method: \r\nnrun_pp1, nrun_pp2: 2 get objects. \r\nnrun_stop: If =.t. then closes the window. \r\nnrun_says: Stop Alert appears if user stop execution\r\nnrun_sayf: Finished Info appears if user stop execution\r\n\r\n\r\nArguments\r\n========\r\n    _user (l) : can user cancel .t./.f.\r\n    _ms1 (c) : message 1. Starting with run_pp1:=ms1 \r\n    _ms2 (c) : message 2. Starting with run_pp2:=ms2 \r\n    _meth (c-a): method or array of instructions to execute\r\n    _stop (l): Appears Alert window with stop information, if user closes the window\r\n    _fin (l): Appears Info window when method finished\r\n    _title (c): Optional window title\r\n    _top (n): Optional. Default=-1 . Top corner of window\r\n    _left (n): Optional. Default=-1 . Left corner of window\r\n    _width (n): Optional. Default=-1 . Window width (in pixels)\r\n    _hight (n): Optional. Default=-1 . Window high (in pixels)\r\n    _type (n): Optional. Default=0. Window type (0=normal, 1=minimized, 3=no window)\r\n    _cfile (c): Optional. If it setted, it is a file name, where saves the window coordinates. When it run agan reads the coordinates from this file. \r\n','2015-03-06','11:22:25','tesae','0100-01-01','','',''),(625,'?QUERY?FUNP10','Check if user has a privilege','callfpeg(\'?query?funp10\', {_priv, _user, _msg})','C','ERPM','','','Check if user has a privilege\r\nReturns (c) \'00\' if user hasn\'t the privilege\r\n\r\nArguments\r\n=========\r\n    \r\n   _priv (c) = Privilege Code\r\n   _user (c) = Optional. Default (or if is empty)= current user of application (user_pswd).  User code. \r\n   _msg (l) = Optional. default =.f.  If = .t. and _user hasn\'t the _priv privilege, Alert apears to user.\r\n   \r\n   \r\n','2017-10-25','11:54:58','tesae','0100-01-01','','',''),(626,'?QUERY?FUNP09','Check if table structure is similar as _desc describes','callfpeg(\'?query?funp09\', {_table, _desc}, .t.)','A','ERPM','','','Check if table structure is similar as _desc describes\r\nReturns (a) {.t.} if must change structure of table\r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = Table to check\r\n   _desc (c) = Description File.  \r\n\r\nExamples\r\n========\r\n   ##IF callfpeg(\'?query?funp09\', {\'a00\', \'?basic?a00_d\'})[1]=.t.\r\n        odbcchanstru(\'a00\', \'?basic?a00_d\')\r\n   ##ENDIF','2015-03-03','11:01:02','tesae','0100-01-01','','',''),(627,'?BASIC?EIDP023100','Product Price','callfpeg(\'?basic?eidp023100\', {_cust, _prod, _qty, _date, _contr, _table, _xcode}, .t.)','A','ERPM','','','Finds aproduct price for specific customer. \r\nReturn (a) array = {price, %discount1, %discount2}\r\n\r\n\r\nArguments \r\n========\r\n         _cust (n): Customer Code. If =0 then uses Retail Customer. \r\n         _prod (c): Product Code \r\n         _qty (n): Quantity\r\n         _date (d): Date used to find price\r\n         _contr (n): Contract code\r\n         _table (c): Optional. Default = \'\' It can be \'i11\' (lots) ot \'i31\' (Serial Numbers).\r\n         _xcode (c): Optional. Default = \'\'. If _table<>\'\' then find timh1, timh2, timh3, timh4 from _table.','2017-09-11','17:02:40','tesae','0100-01-01','','',''),(628,'?QUERY?FUNP07','Multi Select: Creates Where Clause for Select, from table','callfpeg(\'?query?funp07\', {_table, _desc, _ord, _vwh, _vor, _vdis, _defwh, _deford, _defv})','C','ERPM','','','Creates Where and order clauses, to be used from queries. User uses the multiple select screen\r\nReturns (c) the empty string\r\n\r\nuse !:basic\\multy_cr.bmp  to buttons\r\n\r\nArguments\r\n=========\r\n    \r\n   _table (c) = Table \r\n   _desc (c) = Description File.  \r\n   _ord (c) = If = \'1\' then user cannot select order. \r\n   _vwh (c) = The name of variable for where clause to be returned. If empty, then not used.\r\n   _vor (c) = Optional. Default = empty String. The name of variable for order clause to be returned. If empty, then not used.\r\n   _vdis (c) = Optional. Default = empty String. The name of variable for Selection String to be returned. If empty, then not used.\r\n   _defwh (c) = Optional. If not empty then &_vwh=_defwh if user not selected records \r\n   _deford (c) = Optional. If not empty then &_vor=_deford if user not selected order\r\n   _defv (c) = Optional. If not empty then &_vdis=_defv if user not selected records\r\n\r\n\r\n\r\n','2015-12-14','12:39:55','tesae','0100-01-01','','',''),(629,'ODBCCHANDELS()','Create _dels table for deleted records of a Pegasus table','odbcchandels(_table, _desc, _morefields, _ex, _sess, _defchar, _defcol, _engine)','C','ODBC','odbcChanStru()','W312','Creates a table with name <table>_dels. It\'s used to store deleted records for pegasus tables (i.e. tables with name of length 3 or 6 characters)\r\nReturns (c) the empty string \r\n\r\nArguments\r\n_table (c) : the table name\r\n_desc (c) : The screen class used to create table. If empty, then creates a non Pegasus table with morefields\r\n_morefields (a) : [Optional] An array with more definitions. \r\n                        If this array exists it must define the Primary KEY. \r\n_ex (l): Optional. Default .t. \r\n                If it is .t. then it appends data from table. If it is .f. the table is empty after Change Structure\r\n_sess (o) : Optional. Default = current odbc session. \r\n_defchar (c): Optional. It is the Character Set of Table Default =\'greek\' \r\n_defcol (c): Optional. It is the Character Collation of Table Default =greek_general_ci\' \r\n_engine (c): Optional. Default = \'InnoDB\' The table Engine\r\n','2015-06-03','10:05:01','tesae','0100-01-01','','',''),(630,'WNDLINE()','Draws a line','wndline( _odlg, x, y, z, w, _style, _width, _color, _font )','C','PEG','wndtext()','W312','Draws a line \r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n    _odlg (o): window object\r\n    x, y, z, w (n): top, left, bottom, right of line\r\n    _style (n) :  A value from 0 to 5 for line style. \r\n                     0 = solid line, 1 =dash, 2=dot, 3=dash dot, 4=dash dot dot, 5=null\r\n   _width (n) : line width\r\n   _color (n): color code. \r\n   _font (n): Optional. Default = std screen font. Font code to be used.','2015-05-28','16:47:51','tesae','0100-01-01','','',''),(631,'WNDTEXT','Writes a text to a window object','wndtext( _odlg, x, y, _text, _style, _color )','C','PEG','wndline','W312','Writes a text on an object \r\nReturns (c) the empty string \r\n\r\nArguments\r\n========\r\n    _odlg (o): The object (windw like _curwin, image etc.)\r\n    x, y (n): line, column of text\r\n   _text (c): text to print\r\n    _color (n): the text color','2015-05-27','18:37:44','tesae','0100-01-01','','',''),(632,'GET_FOBJ()','Returns a specific font object','get_fobj(_fcode, _def)','O','PEG','get_fonts(), getcssval()','W312','Returns (o) a specific font object, by font code. \r\n\r\nArguments\r\n========\r\n     _fcode (n): The code of font\r\n     _def (n): The default font (if _fcode not exists). If =0 then uses the _scrfont (std screen font code)\r\n','2015-05-28','16:59:14','tesae','0100-01-01','','',''),(633,'GET_FCOLOR()','Returns a font color','get_fcolor(_font, _def)','N','PEG','get_fobj(), set_fcolor()','W312','Returns (n) the font color code \r\nArguments\r\n========\r\n     _fcode (n): The code of font\r\n     _def (n): The default font (if _fcode not exists). If =0 then uses the _scrfont (std screen font code)\r\n','2015-05-28','17:00:21','tesae','0100-01-01','','',''),(634,'SET _FCOLOR()','Sets the color to a font','set_fcolor(_font, _color)','C','PEG','get_fcolor()','W312','Sets the color to a font\r\nReturns (c) the empty string \r\n\r\nArguments\r\n=========\r\n      _font (n): The font code\r\n      _color (n): the new color (as RGB number)','2015-05-28','17:02:06','tesae','0100-01-01','','',''),(635,'?QUERY?VIEP02','View: Creates Select from a pegasus view','callfpeg(\'?query?viep02\', {\'_viewname\', \'_where\', _clear})','C','ERPM','','','Returns a SELECT query using the code of a view\r\nReturns (c) the query (witout the last semi colon - ;). If _viewname isn\'t a view (doesn\'t start with \"create or replace view\") then reutns entire command, as it is, with _where.  \r\n\r\nArguments\r\n=========\r\n    \r\n   _viewname (c) = The View Name. Can be used and user views (located into table w06) called as _w06_<UID> i.e. _w06_10.\r\n   _where (c) = Optional. Default = \'\'. It is the where condition will be used to create WHERE Clause to query. Into the query must exists thw tage /*peg_where*/ tha replaced with _where. \r\n   _clear (l) = Optional. Default = .t. If .t. then clears returned value from chr(13) and chr(10) characters.','2018-04-11','11:15:14','tesae','0100-01-01','','',''),(636,'?QUERY?FUNP08','Restore a sql file created by mysqldump','callfpeg(\'?query?funp08\', {_file}, .f.)','C','ERPM','','','Restore Uploads a sql file created by mysqldump     \r\nReturns (c) the empty string \r\n\r\nArguments\r\n=======\r\n   _file (c) The file to be restored. \r\n','2015-06-17','13:07:10','tesae','0100-01-01','','',''),(637,'?QUERY?FUNP020','_D: Creates a screen class (_d) from a memo','callfpeg(\'?query?funp020\', {_desc, _memo}, .f.)','C','ERPM','','','Create a description file (_d) in purpose to be used for temporary creation or browse. \r\nRetuirns (c) the empty string\r\n\r\nArguments\r\n=========\r\n     _desc (c): The description File name \r\n     _memo (m): The memo with fields of _d. \r\n                        fieldname;Title;Type;Len;Dec;picture;browsecolor  (after dec are optional)','2017-03-27','17:18:38','tesae','0100-01-01','','',''),(638,'?QUERY?HTMP9500','Shows an html message','callfpeg(\'?query?htmp9500\', {_title, _message, _type, _codepage, _imagetype, _wait, _method}, .t.)','A','ERPM','','','Shows a message as html\r\nReturns (a) an array with the selected item \r\n    {0}=NO \r\n    {1} = goon (YES)\r\n\r\nArguments\r\n========\r\n    _title (c): The dialog box Title\r\n    _message (m): The message of window\r\n    _type (n): Optional. Default=0. Possible types are:  \r\n                   -1=No Buttons\r\n                   0= One Buton [go On]\r\n                   1= [Yes]/[No] / Buttons\r\n \r\n    _codepage (c): Optional. Default = \'windows-1253\'. Is the charset of html page\r\n    \r\n    _imagetype (n): Optional. Default=0. Determines the image of message\r\n                        0=no image, 1= info, 2=alert, 3=stop\r\n\r\n    _wait (n): If it is not empty, window will close into _wait seconds (i.e. 10 seconds)\r\n\r\n    _method (c): Optional. Default = \'\'.  This method is executed when window is opened.','2017-07-14','14:57:05','tesae','0100-01-01','','',''),(639,'?QUERY?GEOP00','Opens google maps link to find an address','callfpeg(\'?query?geop00\', {_address, _object, _top, _lef, _bot, _right, _lang}, .t.)','A','ERPM','callfpeg(\'?query?geop01\')','','Opens Google maps page and returns the appropriate adresses. \r\nReturns (a) an arrayya with selected address values\r\n\r\n{selected (l) = .t. if user selected an address,   address(c), city (c), area(c), lat(c), lng(c), country code(c), country(c), postal code(c)}\r\nlat and lng are coordinates for selected address. \r\n\r\nArguments\r\n========\r\n    _address (c): Requested address (ie. Chlois 26, zografos)\r\n    _object (o): The object used to relate the selection box coordinates\r\n    _top, _left, _bot, _right (n) :  the selection box coordinates\r\n    _lang (c): Optional. Default = \'el\'. The language to be used to google. \r\n\r\n\r\n','2015-07-06','11:33:30','tesae','0100-01-01','','',''),(640,'?QUERY?GEOP01','shows an address to google maps','callfpeg(\'?query?geop01\', {lat, lng})','C','ERPM','callfpeg(\'?query?geop00\')','','Opens web browser with address location (lat and lng) you give \r\nreturns (c) the empty string \r\n\r\nArguments\r\n========\r\n    lat, lng (c): Location coordinates retusn the callfpeg(\'?query?geop00\') for specific address','2015-07-06','11:33:44','tesae','0100-01-01','','',''),(641,'?QUERY?CFPP012','PSW: Gets and Confirms a password field','callfpeg(\'?query?cfpp012\', {_var_name, _obj_name, _len, _topobject} )','C','ERPM','','','Appear a dialog box for input (inpu and confirm) password fields\r\n\r\nReturns (c) the emtpy string. \r\n\r\nArguments \r\n======== \r\n    _var_name (c): The name of variable. It\'s value will be changed. \r\n    _obj_name (c): Optional. Def =\'\' The name of object to be refreshed\r\n    _len (n): Optional. Default = length of _var_name value. Is the length of returned value\r\n    _topobject (o): Optional. The object used as top of new dialog box. If empty, then the dialog box is centerd to current window. \r\n','2015-10-13','11:03:04','tesae','0100-01-01','','',''),(642,'?QUERY?CFPP01101','JSON: Creates a json from a Record Array','callfpeg(\'?query?cfpp01101\', { _array })','C','ERPM','?query?cfpp011, recarray()','','Creates a json from a record array. Recod Array is an array of arrays like { {\'field1\', \'value1\'}, {\'field2\', \'value2\'} }\r\nValues of fields, into json, are transformed with odbcStr() function, so have string values apropriate for sql commands. \r\nRead recarray() documentation. \r\n\r\nReturns (c) the json\r\n\r\nArguments\r\n========\r\n          _array (a): Record Array to be transformed','2015-08-04','12:09:29','tesae','0100-01-01','','',''),(644,'DIRECTORY()','Creates an array with files of a folder','Directory( _cDir, _cAttr )','A','ARRAY','listarray()','W312','Returns (a) an array with a folder (directory) files. Each item of array is an array with values \r\n{1:file name (c), 2:file size (n), 3:last update date (D), 4:Last Update Time (C), 5:File Attribute (C), 6:extendend file Attr. size (n), 7:Creation Date (D), 8:Creation Time (C), 9:Last opening date (D), 10:last opening Time (T)} \r\n\r\nArguments\r\n========\r\n    _cDir (c): Optional. is a character string specifying the drive, path and file from which file information is read into an array. A file mask can be defined by using \"wildcards\" (* or ?) as part of the file name. If no _cDir is specified, \"*\" is used, and all file information in the current path is read. \r\n\r\n    _cAttr (c): The argument _cAttr is a string which can be used to extend the files placed in the array based on their file attributes. _cAttr may specify one or more of the following characters: \"D\",\"H\",\"S\",\"V\". When \"V\" is specified only the name of the disk volume (volume) is retrieved and the files are ignored. The meaning of the valid characters for _cAttr is as follows: \r\n      D: Directory  directories are also listed          \r\n      H: Hidden     hidden files are also listed         \r\n      S: System     system files are also listed         \r\n      V: Volume     retrieves name of the disk volume and ignores files                    \r\n','2015-08-05','18:37:04','tesae','0100-01-01','','',''),(645,'OBUT_EXEC()','Executes a button action','obut_exec( _obj)','C','PEG','obut_activ()','W312','Execute the button action, if button is active. \r\nReturns (c) the empty string \r\n\r\nArguments\r\n========\r\n     _obj (c-o) : the button object.','2015-08-06','11:41:05','tesae','0100-01-01','','',''),(646,'?QUERY?FUNP021','Get Parameters (passed as array)','callfpeg(\'?query?funp021\', {_array, _help, _saved, _title, _bbar}, .t.)','A','ERPM','?query?funp020, ?query?funp022','','Edit parameters passed as array. \r\nReturns (a) the new array of, changed, parameters\r\n\r\nArguments\r\n========\r\n      _array (a): Array of parameters. It\'s Structure is { {field name, title, value, type, len, dec, picture, select function, table, screen, code field, descr field, value descr} }. Fields after dec are optional\r\n                     Recognizes picture started by M: (combo)\r\n          select function (c) = Function used to select the parameter. \r\n                                     = \'*multy\' -> multiselection of table and screen\r\n          table, screen, code field, descr field (c) = If exist then selects values from table i.e \r\n{\'p01\', \'Customer\', 1, \'n\', 10, 0, \'\', \'\', \'a01\', \'a01_d\', \'nr01\', \'p19\'}\r\n\r\n      _help (m): help memo. \r\n      _saved (c): Optional. Default = empty. The name of a logic variable, This is setted =.t. If user press Save, else setted -= .f.\r\n      _title (c): Optional. Default =\'\'. The dialog box title\r\n      _bbar (c) : optional. Default =\'\'. The button bar used to dialog box\r\nExample                  \r\n\r\naadd(my_type, {\'c\', \'p01\', \'This is a char field \', \'c\', 100, 0} )\r\naadd(my_type, {\'l\', \'p02\',  .t., \'l\', 1, 0} )\r\naadd(my_type, {\'d\', \'p03\', date()-10, \'d\', 10, 0} )\r\naadd(my_type, {\'m\', \'p04\', \'memo test\', \'m\', 10, 0} )\r\naadd(my_type, {\'n\', \'p05\', \'100\', \'n\', 10, 2} )\r\nmy_type:=callfpeg(\'..\\..\\query\\_001\\funp021\', {my_type, \'help\'}, .t.)','2019-05-14','16:23:17','tesae','0100-01-01','','',''),(647,'?QUERY?FUNP022','Edits an array and returns a recod Array','callfpeg(\'?query?funp022\', {_pararray, _valarray, _help, _saved, _title, _datafile, _bbar}, .t.)','A','ERPM','?query?funp021','','Edits an arrays elements. Returns (a) a Record Array with new values. \r\nIt is similar to funp021. Differs, to _valarray and that returned array is similar to _valarray. We can pass a Record Array with values of parameters array\r\n\r\nArguments\r\n=========\r\n      _pararray (a) :Array of parameters.   It\'s Structure is { {field name, title, value, type, len, dec, picture, select function, table, screen, code field, descr field, value descr} }. Fields after dec are optional\r\n          select function (c) = Function used to select the parameter. \r\n                                     = \'*multy\' -> multiselection of table and screen\r\n          table, screen, code field, descr field (c) = If exist then selects values from table i.e \r\n{\'p01\', \'Customer\', 1, \'n\', 10, 0, \'\', \'\', \'a01\', \'a01_d\', \'nr01\', \'p19\'}\r\n\r\n      _valarray (a): Array with parameter values. It\'s Structure is { {field name, value} }. If _datafile exists, _valarray intialized from this. \r\n      _help (m): help memo. \r\n      _saved (c): Optional. Default = empty. The name of a logic variable, This is setted =.t. If user press Save, else setted -= .f.\r\n      _title (c): Optional. Default =\'\'. The dialog box title\r\n      _datafile (c): Optional. Default =\'\'. If exists then saves the returned array into this file. \r\n      _bbar (c) : optional. Default =\'\'. The button bar used to dialog box\r\n\r\nExample                  \r\n\r\naadd(my_type, {\'c\', \'p01\', \'This is a char field \', \'c\', 100, 0} )\r\naadd(my_type, {\'l\', \'p02\',  .t., \'l\', 1, 0} )\r\naadd(my_type, {\'d\', \'p03\', date()-10, \'d\', 10, 0} )\r\naadd(my_type, {\'m\', \'p04\', \'memo test\', \'m\', 10, 0} )\r\naadd(my_type, {\'n\', \'p05\', \'100\', \'n\', 10, 2} )\r\n\r\naadd(my_type1, {\'p01\', \'this is new char\'} )\r\naadd(my_type1, {\'p02\', .f.} )\r\n\r\nmy_type:=callfpeg(\'?query?funp022\', {my_type, my_type1, \'help\'}, .t.)','2017-10-11','15:13:44','tesae','0100-01-01','','',''),(648,'?BAS00?ERPI00P01','Find a product balance','callfpeg(\'?bas00?erpi00p01\', {_code, _date, _inv1, _inv2, _sn, _lot, _color, _size})','N','ERPM','','','Returns (n) the product balance\r\n\r\nArguments\r\n========\r\n    _code (c): The product code\r\n    _date (d): The date for balance\r\n     _inv1, _inv2 (n): Warehouses (from...to...)\r\n     _sn (c): Serial Number. If it isn\'t empty, returns the Serial Number balance. \r\n     _lot (c): Lot Number. If it isn\'t empty, returns the Lot Number balance. \r\n     _color, _size (c): Color and size codes. If they aren\'t empty, returns the Color  Size balance.','2015-08-25','16:09:45','tesae','0100-01-01','','',''),(649,'GETFIELDV()','Return A Field\'s Value','getfieldv(_fld, _def)','','DBPEG','replfld(), pegvar()','W312','Retutns a field value from current record. If field doesn\'t exists returns the default value. It is usefull when it is possible field not exists\r\n\r\nArguments\r\n========\r\n    _fld (c): Field name \r\n    _def : Value to be returned if field not exists\r\n','2016-04-26','16:46:34','tesae','0100-01-01','','',''),(650,'CORCOORDS()','Corrects a dialog box coordinates','corcoords(@_top, @_left, @_bottom, @_right)','C','PEG','odbclist()','W312','Corrects coordinates to be used to a window. Changes them, if they are out of Desktop\r\nReturns (c) the empty string','2015-09-11','12:01:12','tesae','0100-01-01','','',''),(651,'?QUERY?CFPP01301','Browse:Change Browse Columns by Profile','callfpeg(\'?query?cfpp01301\', {_desc, _module, [_profile], [_brobj]}, .t.)','A','ERPM','?query?cfpp01302, chcolumns()','','Changes columns of a browse object, using profile settings\r\nReturns (a) the array o columns selected\r\n\r\nArguments\r\n========\r\n     _desc (c): Description of browse \r\n     _module (c): The module _desc belongs to\r\n     _profile (n): Optional Default = user profile. \r\n     _brobj (o): Optional. If exists changes the columns. \r\n','2015-10-16','13:17:47','tesae','0100-01-01','','',''),(652,'?QUERY?CFPP01302','Browse:Change Browse Columns (temporary tables)','callfpeg(\'?query?cfpp01302\', {_code, _brobj}, .t.)','A','ERPM','?query?cfpp01302, chcolumns()','','Changes columns of a browse object, using linear settings (w04)\r\nReturns (a) the array o columns selected\r\n\r\nArguments\r\n========\r\n     _code (n): The linear screen code (w04.nr01)\r\n     _brobj (o): Optional. If exists changes the columns.','2015-10-16','13:17:54','tesae','0100-01-01','','',''),(653,'AINS()','Insertes an element to an array','ains(_array, _nelement, _expr)','A','ARRAY','aadd()','W312','Inserts an element into an array to a specific site\r\nReturns (a) a reference to array\r\n\r\nArguments\r\n========\r\n    _array (a) : Array to be changed\r\n    _nelement (n): The site of new elemenet\r\n    _Extr : Optional. Default = nill. Thw expression - value - of new element.','2015-10-16','10:04:07','tesae','0100-01-01','','',''),(654,'?QUERY?CEPP001','ERP: Returns Product Cost','callfpeg(\'?query?cepp001\', {_code, _method, _from, _to, _inv1, _inv2, _balance})','N','ERPM','','','Returns (n) a product\'s cost, computing by method you want. \r\n\r\nArguments\r\n========\r\n     _code (c): Product\'s Code\r\n     _method (n): Optional. Default is parameters method. Method code to use.                       \r\n     _From (d): Optional. Default = empty date. Date form, to use transactions for computing. \r\n     _To (d): Optional. Default=date(). Date to, to use transactions for computing. \r\n     _inv1 (n). Optional. Default = 0. code of first warehouse\'s transactions  to use. \r\n     _inv2 (n). Optional. Default = 99999999. code of last warehouse\'s transactions to use. \r\n     _balance (n). Optional. Default =0. Used to FIFO method. \r\n','2016-02-25','16:52:37','tesae','0100-01-01','','',''),(655,'?QUERY?CFPP01303','Browse Edit','callfpeg(\'?query?cfpp01303\', {_dbfalias, _screen, _brobject, _method})','C','ERPM','editbrline()','','Edits data to a browse list. \r\nReturns (c) the empty string \r\n\r\nArguments\r\n========\r\n      _dbfalias (c) : alias name of dbf is browsed\r\n      _screen (c) : the screen class used to edit record\r\n      _brobject (o): Browse Object\r\n      _method (c): Optional. Default = \'\'. A method to be executed after update data and before releasvar(_screen)','2016-03-04','13:21:06','tesae','0100-01-01','','',''),(656,'?QUERY?CFPP01102','Create a variable array','callfpeg(\'?query?cfpp01102\', _array, .t.)','A','ERPM','pub2file(), file2pub(), savepubl()','','Creates a variable array, like array pub2file() uses. \r\nReturns (a) the array\r\n\r\nArguments\r\n========\r\n     _array  (a): Array with variable names to be saved (c) \r\n\r\nExample \r\n=======\r\npeg_arr:=callfpeg(\'?query?cfpp01102\', {\'np01\', \'np02\'} , .t.)\r\nPub2File(peg_arr, \'c:\\myfile\')','2015-12-03','17:53:14','tesae','0100-01-01','','',''),(657,'ODBCGETCP()','Gets the Session code Page','odbcgetcp(_session)','N','ODBC','','W312','Returns (n) the session code page. \r\n\r\nArguments\r\n========\r\n    _session (o): Defalult = odbc_obj (the current selected _session)','2015-11-02','16:57:51','tesae','0100-01-01','','',''),(658,'NEWARRAY()','Creates a new array','newArray(_el1, _el2, _el3, .....)','A','ARRAY','retArray()','W312','Returns (a) an array with ellements the function arguments. \r\n','2015-11-12','18:31:00','tesae','0100-01-01','','',''),(659,'PEGIFNIL()','Returns a default value if argument is nil','pegIfNil(_var, _def)','','PEG','pegvar()','W312','Returns a default value if first argument is nil. \r\n\r\nArguments\r\n=======\r\n      _var : Variable that checks\r\n      _def: Value to be returned if _var=nil\r\n\r\n','2016-05-06','17:18:30','tesae','0100-01-01','','',''),(660,'?QUERY?CFPP01304','Odbclist Browse: Change columns to odbclist()','callfpeg(\'?query?cfpp01304\', {_brarray, _object, _screen})','C','ERPM','chcolumns(), chbrowse(), odbclist()','W312','Changes columns of odbclist() browse using a fields array\r\nCan use ?query?cfpp01301 or ?query?cfpp01302 to create array\r\nReturns (c) the empty string\r\n\r\nArguments\r\n========\r\n     _brarray (a) : array with fields. Can use ?query?cfpp01301 or ?query?cfpp01302 to create array\r\n     _object (o): The browse object. Usually = _brobj\r\n     _screen (c): Screen Class (_d) file.','2015-11-20','11:55:53','tesae','0100-01-01','','',''),(661,'?QUERY?FUNP072','Multi Select Fom List: Selects records from List. Returns where and temporary with selected','callfpeg(\'?query?funp072\', {_table, _desc, _ltemp, _lwhere, _cpubvars, _cwhere, _cdispl, _cfield}, .t.)','A','ERPM','','','User selects from list records into a temporary file. The list is same as std Pegasus list managment\r\nReturns (a) {temporary with selected records, where with selected records}\r\n\r\nuse !:basic\\multy_cr.bmp  to buttons\r\n\r\nArguments\r\n========\r\n       _table (c): table name \r\n       _desc (c): Description file to be used\r\n       _ltemp (l): Optional. Default .f. If .t. then creates temporary with selected records.\r\n       _lwhere (l): Optional. Default .f. If .t. then creates where condition with selected records. \r\n       _cpubvars (c): Optional. File created with Pub2File. Used to initialize variables to list. ascp0 variables can be used. \r\n       _cwhere (c): Optional. Default = \'\'. Variable name to be updated with where condition. \r\n       _cdispl (c): Optional. Default = \'\'. Variable name to be updated with selected records. \r\n       _cfield (c): Optional. Default = \'\'. Field name, ot _table, to be used to _cdispl\r\n\r\n\r\nExample\r\npeg_arr:=callfpeg(\'?query?funp072\', {\'d00\', \'d00_d\', .f., .t., \'\', \'ncp_where\', \'ncp_memo\', \'p19\'}, .t.)\r\n','2017-11-30','15:24:08','tesae','0100-01-01','','',''),(662,'CREATE_TOT_WHERE()','Creates a where to search for a string to any field of table','create_tot_where(_table, _desc, _str)','C','ODBC','create_sel_fld(), create_sel_desc()','W312','Creates a where for searching _str string into all fields of _table \r\nReturns (c) the where expression. \r\n\r\nArguments\r\n========\r\n       _table (c): table for searcing \r\n       _desc (c): description file for table \r\n       _str (c): string to search for.','2015-12-16','10:51:51','tesae','0100-01-01','','',''),(663,'PEGVAR()','Retrieves the value of a variable','PegVar(_cVar, _def)','','PEG','execline()','W312','Returns the value of a variable, using its name, If variable isn\'t defined returns the _def value. \r\n\r\nArguments\r\n************\r\n       _cVar (c): variable name \r\n       _def : Default value returned if _cvar not exists.','2015-12-17','12:18:46','tesae','0100-01-01','','',''),(664,'?QUERY?RUNP030','_D: Reads a screen class and returns it\'s data','callfpeg(\'?query?runp030\', {_screen, _incfields, _excfields, _separator, _prefix, _notempty})','C','ERPM','?query?runp033','','Reads a screen class and returns (c) a string with fields titles and values\r\n\r\nArguments\r\n========\r\n       _screen (c): Screen class\r\n       _incfields (c):  Optional . Default=\'\'. Fields to include separated with # (ie. #p01#p02#). If empty then all fields used\r\n       _excfields (c):  Optional . Default=\'\'. Fields to exclude separated with # (ie. #p01#p02#). \r\n       _separator (c): Optional . Default=\', \'. Separator of fields (i.e. chr(13) + chr(10)\r\n       _prefix (c): Optional . Default=\'n\'. Values prefix (i.e. \'n\', \'asctem1->\') \r\n       _notempty (l): Optional. Default=.t. If it is .t., then only not empty values used. \r\n','2019-09-26','11:21:07','tesae','0100-01-01','','',''),(665,'PEGSETARR()','Seta a Value to a Pegasus Record Array','PegSetArr(_array, _varname, _value)','','ARRAY','pegGetArr(), recarray()','W312','Sets value to a Pegasus Record Array. \r\nA Pegasus Record Array has the structure { {\'variable_name\', value} }\r\nReturns the old value of variable \r\n\r\nArguments\r\n========\r\n      _array (a): Pegasus Record Array\r\n      _varname (c) : Variable name. It isn\'t Case Sensitive. \r\n      _value : The new value to be setted to variable \r\n\r\n','2016-02-11','11:28:03','tesae','0100-01-01','','',''),(666,'PEGGETARR','Geta value from a Pegasus Record array','pegGetArr(_array, _varname, _def)','','ARRAY','pegsetarr(), recarray()','W312','Gets value from a Pegasus Record Array. \r\nA Pegasus Record Array has the structure { {\'variable_name\', value} }\r\nReturns the value of variable \r\n\r\nArguments\r\n========\r\n      _array (a): Pegasus Record Array\r\n      _varname (c) : Variable name. It isn\'t Case Sensitive. \r\n      _def : The value to be used if _varname hasn\'t a value. \r\n\r\n','2017-04-07','09:49:44','tesae','0100-01-01','','',''),(667,'DEFINEICON()','Create an Icon Object','defineicon(_icofile)','O','','pegtray()','W312','Createa an icon object\r\nReturns (o) the object\r\n\r\nArguments\r\n========\r\n     _icofile (c): the .ico file. \r\n\r\n','2016-03-21','15:53:11','tesae','0100-01-01','','',''),(668,'PEGTRAY()','Creates a System Tray Icon for a Pegasus Window','pegtray(oWnd,oIcon,cTip,uLClick,uRClick,uMMoved,uLDblClick,uLButtonUp,uRButtonUp)','O','','defineicon()','W312','Creates a System Tray Icon for a Pegasus Window. Return (o) the tray object\r\n\r\nArguments \r\n========\r\n       oWnd (o): The window, that pegasus will create System Tray Icon\r\n       oIcon (o): Icon pobject created with defineicon()\r\n       cTip (c): Optional. Defauls = Window Title. The Tray Title. \r\n       uLClick (b): Optional. Block executed on Left Click. If not exists, then Show() / Hide() window\r\n       uRClick (b): Optional. Block executed on Right Click. If not exists, , then Show() / Hide() window\r\n       uMMoved (b): Optional. Block executed on moved.\r\n       uLDblClick (b): Optional. Block executed on Double Left Click. \r\n       uLButtonUp (b): Optional. Block executed on Left Mouse Botton Up. \r\n       uRButtonUp (b): Optional. Block executed on Right Mouse Botton Up. \r\n\r\nTray Object Methods \r\n================\r\nstop() : ends object and clear system tray\r\nrefresh(oIcon, cTip ) : refresh icon\r\n                                        oicon (o): Optional the new icon. \r\n                                        cTip (c): optionan. The new title. \r\n','2016-03-21','16:01:14','tesae','0100-01-01','','',''),(669,'?QUERY?CFPP01802','Manage a Record to a Table','callfpeg(\'?query?cfpp01802\', {\'table\', _nr01} )','C','ERPM','?query?cfpp01804','W312','Manage a record of table, using the default (p07.p05) method\r\nReturns (c) the empty string \r\n\r\nArguments\r\n==========\r\n     _table (c) : Table name \r\n     _nr01 (n): The nr01 field value of record \r\n\r\n','2016-04-12','15:07:18','tesae','0100-01-01','','',''),(670,'?QUERY?CFPP01804','Execute Table list managment','callfpeg(\'?query?cfpp01804\', {\'table\'} )','C','ERPM','?query?cfpp01802\'','W312','Manage a table, using the default (p07.p051) method\r\nReturns (c) the empty string \r\n\r\nArguments\r\n==========\r\n     _table (c) : Table name \r\n\r\n','2016-04-12','15:08:48','tesae','0100-01-01','','',''),(671,'GR2LATIN()','Transforms greek characters to same latin characters','GR2Latin(_str, _nochars)','C','STR','abschr()','w312','Transforms greek characters of a string to same (view) latin. These characters are (Α, Β, Ε, Ζ, Η, Ι, Κ, Μ, Ν, Ο, Ρ, Τ, Υ) \r\nReturns (c) the new string in upper case\r\n\r\nArguments\r\n========\r\n          _str (c): String to be changed\r\n          _nochars (c): String with characters not to be contained in new string.      \r\n\r\nSQL\r\n===\r\nPegasus creates SQL Command peg_gr2latin() too, with same arguments but not exists optional argument\r\n','2016-05-16','11:06:39','tesae','0100-01-01','','',''),(672,'ODBCCOMMAND()','Translates a SQL expression to Pegasus Form','odbcCommand(_command)','C','ODBC','odbcuse(), odbcexec(), odbprintfld()','W312','Translates an SQL expression. It used internally to main Pegasus Functions \r\nReturns (c) the new transalted expression\r\n\r\nArguments\r\n========\r\n     _command(c): command to be executed \r\n     CASE  substr(_command, 1, 2)==\'==\'\r\n         Executes odbcSQLtrans(substr(_command, 3, len(_command)) )\r\n     CASE  substr(_command, 1, 2)==\'*=\'\r\n         Executes odbcReadCommand( pegtrim(substr(_command, 3, len(_command))), .t., .t., .t. ) \r\n     CASE  substr(_command, 1, 1)==\'=\'\r\n         Executes odbctrans(substr(_command, 2, len(_command)) )\r\n     CASE  substr(_command, 1, 1)==\'*\'\r\n         Executes odbcReadCommand( pegtrim(substr(_command, 2, len(_command))), .t., .t. ) \r\n','2016-05-09','12:29:30','tesae','0100-01-01','','',''),(673,'CHR2SEAR()','Transforms a string to a searchable string.','chr2Sear(_str, _type, _spec)','C','STR','gr2latin(), abschr(), spec_char()','W312','Transforms a string to string to be used for db searhing. \r\nReturns (c) the new string \r\n\r\nArguments\r\n========\r\n       _str (c): String to be transormed \r\n       _type (n): Optional . Default = ker_strtype (public variable can be setted be pegasus). It is the transformation type. Possible values\r\n                      0 = No change String \r\n                      1 = Returns gr2latin(_str)\r\n                      2 = Returns abschr(_str)\r\n       _spec (n): Optional. Default =0. It sets the special characters transformation. Possible Values:\r\n                      0 = No change String \r\n                      1 = Changes Special characters for SQL. Returns spec_char(_str)\r\n                      2 = Changes Special characters for SQL and like expressions. Returns spec_char(_str, .t.)\r\n           \r\nSQL\r\n===\r\nPegasus creates SQL Command peg_ch2sear()  too, with the first and second arguments, only,  but not exists optional argument\r\n','2016-05-16','11:07:32','tesae','0100-01-01','','',''),(674,'?QUERY?FUNP030','Returns Text from an html memo','callfpeg(\'?query?funp030\', {_memo}, .f.)','C','ERPM','htmltomemo()','','Returns (c) the text of an html memo. Creates an html document object and retutns the document:body:createTextRange. \r\n\r\nArguments\r\n=======\r\n      _memo (c): Memo to be used.','2016-05-12','14:45:42','tesae','0100-01-01','','',''),(675,'ODBCISFUNC()','Checks if exists a function or a procedure, to data base','odbcisfunc(_func, _sess, _type, _nolocal)','L','ODBC','odbcistable()','','Search if exists a function or a procedure\r\nReturns (l) .t. if exists\r\n\r\nArguments \r\n _func (c) : The function or procedure  name to search for. \r\n_sess (o) : Optional. Session to execute command. Default is defeault session\r\n_type (n): Optional. Default = 1. 1=look for function, 2=look for procedure\r\n_nolocal (l): Optional. Default=.f.  If .t. then look directly to data base and not to local saved information (cashe)\r\n\r\n','2016-05-12','17:40:23','tesae','0100-01-01','','',''),(676,'?BAS00?KEYP01F','String Keyboard screen','callfpeg(\"?bas00?keyp01f\", { _val_name, _val_object, _title, _center, _top, _left, _password})','C','ERPM','sayget()','W312','Creates a screen with keyboard, for input data. \r\nReturns (c) \'00\' string if user exit without data. \r\n\r\nArguments\r\n=========\r\n      _val_name (c): The name of variable to be edited \r\n      _val_object (c): The name of object to be refreshed. Can be the empty string \r\n      _title (c): Title. \r\n      _center (l): Optional. Default = .f., If .t. then the dialog box is centered. \r\n      _top (n) :  Optional. Default = -1. If <>-1 then it is the top corner of window. If = -1 the default is used. \r\n      _left (n) :  Optional. Default = -1. If <>-1 then it is the left corner of window. If = -1 the default is used. \r\n      _password (l): Optional. Default=.f.. If .t. then edit buffer is password type\r\n','2019-01-29','10:27:53','tesae','0100-01-01','','',''),(677,'?BAS00?KEYP02F','Numeric Keyboard screen','callfpeg(\"?bas00?keyp02f\", { _val_name, _val_object, _title, _picture, _center, _top, _left, _type})','C','ERPM','sayget()','w312','Creates a screen with numeric keyboard, for input data. \r\nReturns (c) \'00\' string if user exit without data. \r\n\r\nArguments\r\n=========\r\n      _val_name (c): The name of variable to be edited \r\n      _val_object (c): The name of object to be refreshed. Can be the empty string \r\n      _title (c): Title. \r\n      _picture (c): The pticture to be used to input (i.e. 99999.99)\r\n      _center (l): Optional. Default = .f., If .t. then the dialog box is centered. \r\n      _top (n) :  Optional. Default = -1. If <>-1 then it is the top corner of window. If = -1 the default is used. \r\n      _left (n) :  Optional. Default = -1. If <>-1 then it is the left corner of window. If = -1 the default is used. \r\n      _type(n): Optional. Default =1. Valid values = { 1=normal window, 2=only numbers (no decimal point), 3=normal with euro buttons}\r\n\r\n','2017-03-10','18:59:46','tesae','0100-01-01','','',''),(678,'?QUERY?CFPP00490','Returns an array with record relations','callfpeg(\'?query?cfpp00490\', {_table, _valnames, _notbls, _views, _reltypes, _proc, _varn}, .t.)','','','','','callfpeg(\'?query?cfpp00490\', {table, [value pref \'n\'], [no_tbls_array {}], [views too .f.], [rel types, no show \'1, 2\']}, .t.)\r\n\r\nReturns (a) an array with record relations. Array\'s structure is { {\'table\', \'condition\', \'title\'} }\r\n\r\nArguments\r\n=========\r\n    _table (c): Table name. \r\n    _valnames (c): Optional. Default = \'n\'. The record value variables prefix\r\n     _notbls (a) : Optional. Default = {}.  Array with tables not be checked.\r\n     _views (l). Optional. Default=.f. If = .t. then checks views too\r\n     _reltypes (c): Optional. Default = \'1, 2\'. Relation types are 1= one to one, 2=1 to many. \r\n     _proc (c): Procedure. Default = 0. \r\n                   Possible values:\r\n                   0=do nothing \r\n                   1=check if exist relations\r\n                   2=delete relations\r\n     _varn (c): Variable name. Default =\'\'. If not empty, then variable assigned with string containing tables related with _table.  \r\n\r\n\r\nExamples \r\n\r\n1. \r\ninitrec(\'a55\', \'a55_d\', .f.)\r\ncallfpeg(\'?query?cfpp00490\', {\'a55\', \'n\'}, .t.)       \r\n\r\n2. \r\nodbcuse(\"SELECT * FROM a55 WHERE nr01=1;\", .f., \'chkit\')\r\ncallfpeg(\'?query?cfpp00490\', {\'a55\', \'chkit->\'}, .t.)       \r\nclosefile(\'chkit\')\r\n','2018-04-05','15:06:04','tesae','0100-01-01','','',''),(679,'?QUERY?CFPP019','Returns the VAT % for a period','callfpeg(\'?query?cfpp019\', {a26.p01, i13.p01, date() }, .t.)','A','ERPM','','','returns (a)  {i13.p01, i13.p02, i13.p03, VAT%}\r\nIt is usefull to find the VAT% for a VAT category to a period. Uses table i99001','2016-06-23','14:08:48','tesae','0100-01-01','','',''),(680,'?QUERY?CFPP020','Return a date from a string using d, m, y parameters',' callfpeg(\'?query?cfpp020\', {_cdate })','D','ERPM','date(), dtoc(), ctod()','','Returns (d) a date from a string, using day(), month() and year() parameters. \r\n\r\nArguments\r\n========\r\n           _cdate (c): The date string. It has format dd/mm/yyyy. If _cdate returns the empty date (wrong date) then method returns date()\r\n                            You can use any number (i.e. 01/01/2000) or strings \r\n                            dd= current day\r\n                            mm= current month\r\n                            yyyy= current year \r\n                            i.e. 01/mm/yyyy  is the first day of current month \r\n                            A Oegasus expression can be used i.e. 01/01/{y+1} is the first day of next year \r\n                           \r\n\r\n\r\n \r\n\r\n','2017-10-11','10:57:48','tesae','0100-01-01','','',''),(681,'?BAS00?SELP1','Select record using touch screen','callfpeg(\'?bas00?selp1\', { _table, _screen, _where, _order, _show_fld, _get_fld, _instr, _row, _col, _Title, _fcol, _bcol, _type, _exit, _more_sel}, .t.)','A','ERPM','odbclist()','W312','creates a dialog box with buttons to select a record. \r\nReturns array with selected values. \r\n\r\nArguments\r\n========\r\n     _table (c): table name or query without last ;\r\n     _screen (c): screen class, If empty, then _table is a query to be used. \r\n     _where (c): Optional. Default = \'\'. Where Class. Used if _screen is not empty\r\n     _order (c): Optional. Default = \'\'. Orderr Class. Used if _screen is not empty\r\n     _show_fld (c): Field name or expression used to create title of button\r\n     _get_fld (c): Expression used to return values. Returned value should be an array (i.e. {nr01, p01})\r\n     _instr (c): Optional. Default =\"pub_arr2:=ntb_varar[ntb_sel]\". Instruction to be used when button be pressed. \r\n     _row (n): row of dialog box. If =-1 then it is centered\r\n     _col (n): colun of dialog box\r\n     _Title (c): Title of dialog box. If empty and _screen isn\'t empty _title=DescTitle(_screen, 2)\r\n     _fcol (n) : Foreground color of buttons. If nil or <0 default color is used.\r\n     _bcol (n) : BackGround color of buttons. If nil or <0 default color is used.\r\n     _type (n): Optional. Default =1. \r\n                Valid Values 1=>Big screen, 2=>small screen\r\n     _exit (l): Optional. Default=.t. If .t. when a button is pressed then exit \r\n     _more_sel (a): Optional. If exists is an array with more selections not included int table ({ {_show_field, _get_field} })\r\n     \r\n\r\nExample\r\n======\r\ncallfpeg(\'?bas00?selp1\', { \'este55\', \'este55_d\', \'este55.p02=1\', \'este55.nr01\', \'p01\', ; \r\n                 \"{nr01, p01}\", ;\r\n                  \"assarr({{\'np_ser\', \'ntb_varar[ntb_sel][1]\'}, {\'nvp_ser\',  \'ntb_varar[ntb_sel][2]\'}})\", ; \r\n                  -1, -1, \'\', -1, -1, 1, .t.}, .t.)','2017-04-11','18:03:20','tesae','0100-01-01','','',''),(682,'?QUERY?CFPP0051','Greeklish Transform','callfpeg(\'?query?cfpp0051\', {_string, [_nochars]})','C','ERPM','tranchr()','','Transforms the _string to GreekLish. It is usefull when we need to show greek characters to an output device that not support Greek Characters. \r\nReturns (c) the new string \r\n\r\nArguments\r\n=========\r\n    \r\n   _string (c) = _string to be transformed\r\n   _nochars (c) = Optional. Default = \'\'. String with characters to be deleted from string. \r\n\r\n','2016-08-23','17:59:19','tesae','0100-01-01','','',''),(683,'?BAS00?ERPA80P3200','Returns customer points','callfpeg(\'?bas00?erpa80p3200\', {_a01nr01, [_a55nr01], [_cond]})','N','ERPM','','','Returns (n) the total points for a customer usimf erpa80_d03 view. \r\n\r\nArguments\r\n========\r\n     _a01nr01 (n): Customer code. If empty (0) not be used to condition\r\n     _a55nr01 (n): Optional. Default = 0. Document code. If empty (0) not be used to condition\r\n     _cond (c) : Optional. Default = \'\'. If not empty it added to where clause. Tables can be used to where are, a01, a55, a10, t01, t02, i01, i15, erpa80\r\n\r\nExamples\r\n=======\r\ncallfpeg(\'?bas00?erpa80p3200\', {10})   // total points of customer 10 (a01.nr01=10)\r\ncallfpeg(\'?bas00?erpa80p3200\', {0, 10})   // total points of ducument 10 (a55.nr01=10)\r\ncallfpeg(\'?bas00?erpa80p3200\', {10, 0, \"a55.p01>=\'2016-01-01\'\"})   // total points for customer 10 of documents with date>01-01-2016 (a01.nr01=10 && a55.p01>=\"2016-01-01\")\r\n\r\n\r\n','2016-09-16','10:20:54','tesae','0100-01-01','','',''),(684,'GETPROFSTR()','','GetProfStr(_cSection, _cEntry, _cDefault)','C','','WriteProfs','W312','Returns (c) the value of a Section Entry From win.ini (Profile)\r\n\r\nNewer windows version look at registry keys\r\nHKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\IniFileMapping\\win.in\\[_cSection] variable \r\ni.e. \r\nHKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\IniFileMapping\\win.in\\devices \r\nThis variable may send to another registry key i.e.\r\nHKEY_CURRENT_USER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Devices\r\nHKEY_USERS\\[user-name]\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Devices\r\n\r\n\r\nArguments\r\n========\r\n _cSection (c): Section of Frofile\r\n _cEntry (c): Optional. Default =\'\'. Entry to look for. If empty the first entry checked\r\n _cDefault (c):  Optional. Default =\'\'. Default value to be ruterned if no entry value found\r\n\r\nExamples \r\n=======\r\nGetProfStr(\"Devices\")   // Returns Installed Printers\r\nGetProfStr(\"Windows\", \"Device\")   // Returns the Default Printer\r\n\r\n','2018-02-07','17:54:35','tesae','0100-01-01','','',''),(685,'WRITEPROFS','Upadates an win.ini entry','WriteProfs( _cSection, _cEntry,  _cString)','L','','GetProfStr()','W312','Update an entry to win.ni\r\nReturns (l) .t. if entry isupdated\r\n\r\nArguments\r\n========\r\n _cSection (c): Section of Profile\r\n _cEntry (c): Entry to be updated\r\n _cString (c):  New value\r\n\r\nExamples \r\n=======\r\nWriteProfS(\"Windows\", \"Device\", \"MYprinter, winspool, win:\")   // Returns the Default Printer\r\n\r\n','2016-10-07','17:21:47','tesae','0100-01-01','','',''),(686,'?QUERY?SORP012','Returns Order By field from browse header,','callfpeg(\'?query?sorp012\', {_brobj, _alias}, .t.)','A','ERPM','','','Find Order By expression by Header Pressing. \r\nReturns (a) an array with {\'field Name\', \'ASC\' or \'DESC\'}. If first argument is empty then no field has been selected\r\nChanges the headers (bt putting +, -, > character according to sorting selected)\r\n\r\nArguments\r\n=========\r\n   _brobj (o) = The browse object\r\n   _alias (c) = Optional. Default = Read it from _brobj. alias used to browse area\r\n\r\n\r\nexamples \r\n=======\r\n   callfpeg(\'?query?sorp012\', {\'oasbr01\', \'asctem1\'}, .t.)   RETURNS {\'P19\', \'ASC\'}\r\n   \r\n    \r\n','2016-12-16','11:27:41','tesae','0100-01-01','','',''),(688,'?QUERY?FUNP13','adds a priviledge to all users','callfpeg(\"?query?funp13\", {\'_priv_code\'})','C','ERPM','?query?funp10','','Adds to all users wit priviledges a new one. \r\nReturns (c) the empty string\r\n\r\nArguments\r\n========\r\n     _priv_code (c): the new priviledge code','2017-02-08','18:14:55','tesae','0100-01-01','','',''),(689,'?QUERY?CFPP022','Returns Barcode code-128 of a string','callfpeg(\'?query?cfpp022\', {_string})','C','ERPM','pegtrim(), ?query?cfpp025','','Returns (c) Barcode code 128 encoding of _string\r\nTo print a code-128 Barocde, must encode the string to code-128 (see https://en.wikipedia.org/wiki/Code_128)\r\n\r\nArgument\r\n=======\r\n    _string (c): String to be encoded\r\n\r\n','2018-06-29','12:57:59','tesae','0100-01-01','','',''),(690,'?BAS00?ERPT00P021','Returns ballance of a customer or supplier','callfpeg(\'?bas00?erpt00p021\', {nCode, nType, nfStore, ntStore, nfSite, ntSite, dDate})','N','ERPM','','','Returns (n) the ballance of a customer or a supplier \r\n\r\nArguments \r\n=======\r\n      _ncode (n) : Customer/Supplier code \r\n      _nType (n): [Optional. Default=1]. If 1 the nCode is supplier else is Customer\r\n      _nfStore (n) : [Optional. Default=0]. our store From (t01.p09)\r\n      _ntStore (n) : [Optional. Default=999999999]. our store To (t01.p09)\r\n      _nfSite (n) : [Optional. Default=0]. site From (t01.p900)\r\n      _ntSite (n) : [Optional. Default=999999999]. site To (t01.p900)\r\n      _dDate (d): [Optional. Default=date()]. Date until it finds balance. \r\n\r\n','2017-03-30','11:02:38','tesae','0100-01-01','','',''),(691,'PVSET()','Sets value to a dynamic variable','PVSet(_cvar, _value)','C','PEG','pvget(), PegSetArr()','W312','Sets value to a dynamic variable. \r\nDynamic variables are local to Pegasus Functions (called with callfpeg()). They are stored to pub_arrv array\r\n\r\n\r\nArguments \r\n========\r\n     _cvar (c): Variable Name\r\n     _value : _value expression\r\n\r\n','2017-04-06','18:40:54','tesae','0100-01-01','','',''),(692,'PVGET()','Get (return) value of a dynamic variable','pvget(_varname, _def)','','PEG','pvset(), PegSetArr() , pvdef()','','Return value of a Dynamic Variable\r\nDynamic variables are local to Pegasus Functions (called with callfpeg()). They are stored to pub_arrv array\r\n\r\nArguments\r\n========\r\n      _varname (c) : Variable name. It isn\'t Case Sensitive. \r\n      _def : The value to be used if _varname hasn\'t a value. \r\n\r\n','2018-10-17','16:42:03','tesae','0100-01-01','','',''),(693,'PVDEF','sets default value to a dynamic variable','pvdef(_varname, _def)','','PEG','pvget(), pvset(), pegsetarr()','w312','Sets the _def value to Dynamic Variable, if variable is nil. \r\nDynamic variables are local to Pegasus Functions (called with callfpeg()). They are stored to pub_arrv array\r\n\r\nArguments\r\n========\r\n      _varname (c) : Variable name. It isn\'t Case Sensitive. \r\n      _def : The default value to be used \r\n\r\n','2017-04-07','10:03:35','tesae','0100-01-01','','',''),(694,'PEGDEFARR','Sets default value to a Pegasus Record Array Variable','PegDefArr(_array, _varname, _value)','','PEG','pegsetarr(), peggetarr(), pvset(), pvget()','w312','Sets default value to a Pegasus Record Array Variable, if it\'s value is nil\r\nA Pegasus Record Array has the structure { {\'variable_name\', value} }\r\nReturns the value of variable \r\n\r\nArguments\r\n========\r\n      _array (a): Pegasus Record Array\r\n      _varname (c) : Variable name. It isn\'t Case Sensitive. \r\n      _def : The Default value.\r\n\r\n','2017-04-07','10:05:45','tesae','0100-01-01','','',''),(695,'?QUERY?CFPP01001','Executes the internal method for a record of a table.','callfpeg(\'?query?cfpp01001\', {\'table\', _nr01})','C','ERPM','','','Executes the internal method for a record of a table. \r\nPegasus has methods to be executed after mass updates of tables. This method executes it. It\'s used internally. \r\nReturns (c) the empty string \r\n\r\nInternal methods and scripts incluted into q21, p21, w06 tables as records. \r\nExecutes : \r\n   method of q21.p09 where p01=\'table\' with nr01 as argument\r\n   scripts of p21.p30 where p01=  \'#table#\' \r\n   scripts of w06.p07 where p01= 1000 && p04=\'#table#\'\r\n\r\nScripts executed only if exists /*peg_where*/ tag. Replaces  /*peg_where*/ with \'table.nr01=_nr01\' \r\n\r\nArguments\r\n=========   \r\n   _table (c) = The name of table\r\n   _nr01 (n) = value for nr01 field of table.\r\n','2017-05-03','19:07:30','tesae','0100-01-01','','',''),(697,'?QUERY?CFPP02301','Opens dialog box to change a record','callfpeg(\'?query?cfpp02301\', {_table, _nr01, _msg})','C','ERPM','','W311','Opens a dialog box to change a record. Uses the default method of table. \r\nReturns (c) the empty string \r\n\r\nArguments \r\n========\r\n       _table (c): Table name \r\n       _nr01 (n): The unique ID (NR01 field value) of record \r\n       _msg (l): Optional. Default = .f.  If .t. then if no method exists Return an alert. \r\n','2017-07-10','10:17:51','tesae','0100-01-01','','',''),(698,'?QUERY?RUNP032','Returns Array with Fields Arguments form Description Filea','callfpeg(\'?query?runp032\', {_desc, _fieldname}, .t.)','A','ERPM','getfarray()','W312','Returns an array with field arguments, as they are described into _desscription File. \r\nArray is  {Search_title, field_name, picture, Field_type, Field_Length, Field_Decimals, Field_Get_Width, Field_Get_Hight}, same as getfarray() returns. \r\n\r\nArguments\r\n========\r\n       _desc (c): Description file \r\n       _fieldname (c): Field Name to search.','2017-07-13','16:12:18','tesae','0100-01-01','','',''),(699,'WAITSECOND','Waits until continue','WaitSecond(nSecs)','U','DATE','time(), sleep()','W312','Waits application nsecs Seconds. \r\n','2017-07-14','12:40:43','tesae','0100-01-01','','',''),(700,'?QUERY?CFPP02302','Checks if is running a Pegasus process with specific window title','callfpeg(\'?query?cfpp02302\', {_wintitle})','C','ERPM','','','Checks if is running a Pegasus process with specific window title  \r\nReturns (c) \r\n  \'0\'=Cannot check it (tasklist1 not exists)\r\n  \'1\'=pego312.exe with window title is running\r\n  \'2\'=pego312.exe with window title IS NOT running\r\n\r\nArguments\r\n========\r\n      _wintitle (c): Window Title of process','2017-09-13','10:28:19','tesae','0100-01-01','','',''),(701,'?BAS00?ERPT01P01','Prints a t01 record if it\'s defined to by printed','callfpeg(\'?bas00?erpt01p01\', {nt01nr01})','C','ERPM','','','Prints the form for a t01 record if it\'s defined to be printed. \r\nReturns (c) the emtpy string\r\n\r\nArguments \r\n=======\r\n      ntnr01 (n): t01.nr01\r\n\r\nIf t01.p06 = \'\' then updated with counter.','2018-01-12','16:08:06','tesae','0100-01-01','','',''),(702,'NEWALIAS','Returns an alias name to open file','NewAlias()','C','DBPEG','aselect()','W312','Returns (c) a name isn\'t used as alias. \r\n','2018-03-01','16:01:54','tesae','0100-01-01','','',''),(703,'?QUERY?CFPP025','Returns Barcode EAN-13 of a string','callfpeg(\'?query?cfpp025\', {_string})','C','ERPM','pegtrim(), ?query?cfpp025','','Returns (c) Barcode EAN-13 encoding of _string\r\nTo print a EAN-13 Barcode, must encode the string to EAN-13\r\n\r\nArgument\r\n=======\r\n    _string (c): String to be encoded. It must be a right EAN13 barcode. \r\n\r\n\r\n','2018-07-04','11:08:49','tesae','0100-01-01','','',''),(704,'STRTOXML','transforms a string to xml string','strToXml(_string)','C','XML','','W312','Returns (c) an xml encoded string \r\n\r\nArguments\r\n========\r\n     _string (c): String to be transformed','2018-07-10','13:13:14','tesae','0100-01-01','','',''),(705,'STRTOCSV','Transforms a string to a csv column','StrToCsv(_str, _eq, _sep, _delim)','C','STR','csvtostr()','W312','Returns (c) the string as a csv column. \r\n\r\nArgument\r\n=======\r\n      _str (c) : String to be encoded\r\n      _eq (l): Optional. Default = .f..  If .t., then adds the equal symbol (=) as start character of string. It\'is usefull to character fields with number digits (i.e. barocdes).  \r\n           If exists character chr(10) or chr(13) into _str \r\n           or the first charactert of _str is not \'0\'  \r\n           or the string is date \r\n           then _eq:=.f.\r\n       So, if _eq=.t., the equal symbol (=) added only if fisrt character of _str is \'0\' digit or _str is a memo\r\n      _sep (c): Optional. Default = \';\'. The separator character.\r\n      _delim (c): Optional. Default = \'\"\'. The delimiter character.\r\n\r\nExamples\r\n=======\r\n\r\n? strtocsv( \'12345\' )     // \"12345\";\r\n? strtocsv( \'12\"345\' )     // \"12\"\"345\";\r\n','2019-07-10','17:13:53','tesae','0100-01-01','','',''),(706,'CSVTOSTR','Decodes a csv column (encoded with strtocsv)','csvtostr(_str, _sep, _delim)','C','STR','strtocsv()','W312','Returns (c) the decoded csv column _str\r\n\r\nArgument\r\n=======\r\n      _str (c) : String to be decoded\r\n      _sep (c): Optional. Default = \';\'. The separator character.\r\n      _delim (c): Optional. Default = \'\"\'. The delimiter character.\r\n\r\nExamples\r\n=======\r\n\r\n? csvtostr( \'\"12345\";\' )     // 12345\r\n? csvtostr( \'\"12\"\"345\";\' )     // 12\"345\r\n','2018-10-11','12:30:43','tesae','0100-01-01','','',''),(707,'PEGREFRDLG','Refreshes specific objects of dialog box','PegRefrDlg(_odlg, _classname)','C','SCR','refrdata()','W312','Refreshes objects of specific classe of dialog box . \r\nReturns (c) the empty string \r\n\r\nArguments\r\n========\r\n     _odlg (o): Te dialog box object.\r\n     _Classname (c): Optional. Default = \'\' (empty string) The class name to be refreshed. If empty, then all classes are refreshed\r\n\r\nExamples\r\n=======\r\nPegRefrDlg(_curwin, \'PBROWSE\')','2018-07-18','11:50:49','tesae','0100-01-01','','',''),(708,'?QUERY?CFPP017','Deletes records from a table','callfpeg(\'?query?cfpp017\', { _table } )','C','ERPM','?query?cfpp017101','W312','Deletes records from table, updating Pegasus relative tables (i.e. p25, a96, ..)\r\nReturns (c) the empty string. \r\n\r\nArguments\r\n========\r\n     _table (c): The table name. \r\n','2018-08-01','11:13:31','tesae','0100-01-01','','',''),(709,'?QUERY?CFPP017101','Drops a table triggers','callfpeg(\'?query?cfpp017101\', { _table } )','C','ERPM','?query?cfpp017, ?query?cfpp01702','W312','Drops table triggers. \r\nReturns (c) the empty string. \r\n\r\nArguments\r\n========\r\n     _table (c): The table name. \r\n','2018-08-01','13:06:42','tesae','0100-01-01','','',''),(710,'?QUERY?CFPP017102','Creates Table Triggers','callfpeg(\'?query?cfpp017102\', { _table } )','C','ERPM','?query?cfpp017, ?query?cfpp01701','W312','Creates table triggers. \r\nReturns (c) the empty string. \r\n\r\nArguments\r\n========\r\n     _table (c): The table name. \r\n','2018-08-01','13:07:32','tesae','0100-01-01','','',''),(711,'GETDIR()','Select a drirectory','cGetDir( _cTitle, _cInitDir, _cTitle2, _cdef)','C','FILE','getfile()','W312','Opens the \"Select a Forlder\" window. User selects a directory (folder)\r\nReturns (c) the selected directory.\r\n\r\nArguments\r\n========\r\n        _cTitle (c): Optional. Default = \'\'. The window title. \r\n        _cInitDir (c): Optional. Default = \'\'. The Initial Directory.\r\n        _cTitle2 (c): Optional. Default = \'\'. The inner title of tree.\r\n        _cdef (c): Optional. Default = \'\'. Value to be returned, if user not selected a direcotry.','2018-09-06','17:55:57','tesae','0100-01-01','','',''),(712,'PEGSTRSTUF()','Inserts a string into another string','PegStrIns(@_str, _site, _instr, _len)','C','STR','pegStrTrans()','W312','Inserts a string into another to a specific site. Ovewrites the characters of string. \r\nReturn (c) the new string. \r\n\r\nArguments\r\n========\r\n     _str (c): String to be changed \r\n     _site (n): site where to be inserted _instr. \r\n     _instr (c): String to be inserted\r\n     _len (n): Optional. Default = len(_instr)\r\n\r\nExamples\r\n=======\r\npegStrStuf(\'123456789\', 3, \'abc\')       //12abc6789\r\npegStrStuf(\'123456789\', 3, \'abc\', 2)   //12ab56789\r\n','2018-09-28','16:16:35','tesae','0100-01-01','','',''),(713,'?QUERY?FUNPIM01','transfors an image file to a new type','callfpeg(\'?query?funpim01\', {_oldfile, _newfile})','L','BMP','','W312','Creates a new image file with new format. \r\nReturns (l) .t. if new file is created. \r\n\r\nThe _newfile name extension defines the new file image type. \r\nSupported extensions are:\r\nbmp, ico, jpeg, jpg, jng, pcx, png, tig, gif. \r\nIf new file has another extension it is saved as bmp file with give extension.\r\nArguments\r\n========\r\n       _oldfile (c): The old file name \r\n       _newfile (c): The new file name. \r\n\r\nExamples\r\n=======\r\ncallfpeg(\'?query?funpim01\', {\"c:\\images\\myphoto.bmp\", \"c:\\newimages\\myphoto.jpg\")\r\n','2018-10-02','12:53:31','tesae','0100-01-01','','',''),(714,'?BAS00?KEYP02FD','Date Keyboard screen','callfpeg(\"?bas00?keyp02fd\", { _val_name, _val_object, _title, _center, _top, _left})','C','ERPM','sayget()','W312','Creates a screen with keyboard, for input data. \r\nReturns (c) \'00\' string if user exit without data. \r\n\r\nArguments\r\n=========\r\n      _val_name (c): The name of variable to be edited \r\n      _val_object (c): The name of object to be refreshed. Can be the empty string \r\n      _title (c): Title. \r\n      _center (l): Optional. Default = .f., If .t. then the dialog box is centered. \r\n      _top (n) :  Optional. Default = -1. If <>-1 then it is the top corner of window. If = -1 the default is used. \r\n      _left (n) :  Optional. Default = -1. If <>-1 then it is the left corner of window. If = -1 the default is used. \r\n','2019-01-29','10:28:02','tesae','0100-01-01','','',''),(715,'?QUERY?CFPP026','Convert a file to a new format using Excel Application','callfpeg(\'?query?cfpp026\', {_source, _target})','A','ERPM','','W312','Convertes a file using excel application. I the_target file is uknown type then it isn\'t created.\r\nReturns (a) the empty array. \r\n\r\nArguments\r\n========\r\n      _source (c): Sourse file (to be converted). Usually is a csv file. \r\n      _target (c): New file name. If exists, method delete it. \r\n\r\nFile types of _target, you can use are:\r\nPDF \r\nXPS\r\nXLA\r\nCSV\r\nXLSB\r\nXLS\r\nHTM\r\nHTML\r\nODS\r\nXLSX\r\nXML\r\nWK1\r\nWK3\r\nWK4\r\nWKS\r\nXLTX\r\nXLTM\r\nXLSM\r\nXLT\r\nTXT\r\nPRN\r\nMHTML\r\nMHT\r\n','2019-04-17','15:55:46','tesae','0100-01-01','','',''),(716,'?QUERY?FUNP14','Edit a memo with Text Editor','callfpeg(\'?query?funp14\', {_cmemo_var, _cmemo_obj})','C','ERPM','editmemo()','W311','Edit a memo using a TextEditor \r\nReturns (c) the empty string. \r\n\r\nArguments\r\n========\r\n     _cmemo_var (c): The name of memo variable\r\n     _cmemo_obj (c): Optional. The name of memo object. \r\n\r\nExample\r\n=======\r\ncallfpeg(\'?query?funp14\', {\'np30\', \'op30\'})','2019-05-09','14:19:33','tesae','0100-01-01','','',''),(718,'?BAS00?ERPA30P901','Returns Basic Values from dataBase','callfpeg(\'?bas00?erpa30p901\', {_code, _filename})','M','ERPM','?bas00?erpa30p902, ?query?funp022','W312','We can save Basic Values for some methods, into dataBase (table erpa30). \r\nMethod Returns (m) initial values for specific code. \r\n\r\nArguments\r\n========\r\n          _code (c): Variables code. \r\n          _filename (c): Optional. If exists then method returns values from filename and updates database. \r\n                              The _filename is deleted. \r\n                              It is usefull in cases we used local file to save variables untill now.','2019-05-10','11:18:28','tesae','0100-01-01','','',''),(719,'?BAS00?ERPA30P902','Save Basic Values into dataBase','callfpeg(\'?bas00?erpa30p902\', {_code, _values})','C','ERPM','?bas00?erpa30p901, ?query?funp022','W312','We can save Basic Values for some methods, into dataBase (table erpa30). \r\nMethod Saves initial values for specific code. \r\nReturn (c) the empty string\r\n\r\nArguments\r\n========\r\n          _code (c): Variables code. \r\n          _values(m): Values memo','2019-05-10','11:20:54','tesae','0100-01-01','','',''),(720,'?QUERY?FUNP02301','Select From list of combo field','callfpeg(\'?query?funp02301\', {_cpict, _nval, _cdescr, _obj, _ntop, _nleft, _nbot, _nright}, .t.)','A','ERPM','?query?funp02302','W312','User select from list of a combo field data. \r\nReturns (a) array with {selected value, selected desscription}\r\n\r\nArguments\r\n========\r\n       _pict (c): Picture defines combo box\r\n                     M:0, option1, option2 or M:;0; option1; option2 (if:;0 then separator is ;)\r\n                     Creates combo with 1=option1, 2=option2, ...... \r\n\r\n                     M:1, array1, array2 or M:;1; array1; array2 (i.e. M:;1;{0, 1, 2}; {\'sel1\', \'sel2\', \'sel3\'})\r\n                     Creates combobox. Array1 gives values, array2 is titles\r\n       _nval (n): default value\r\n       _cdescr (c): default description\r\n       _obj (o): parent object of list. Usually is _curwin\r\n       _ntop, _nleft, n_bot, _nrigth (n): coordinates (pixel) of list\r\n  \r\n','2019-05-14','17:24:21','tesae','0100-01-01','','',''),(721,'?QUERY?FUNP02302','Returns value fron a combo list','callfpeg(\'?query?funp02302\', {_cpic, _nval, _cdescr}, .t.)','A','ERPM','?query?funp02301','W312','Returns (a) array {value, desscription} using _nval value\r\n\r\nArguments\r\n========\r\n       _pict (c): Picture defines combo box\r\n                     M:0, option1, option2 or M:;0; option1; option2 (if:;0 then separator is ;)\r\n                     Creates combo with 1=option1, 2=option2, ...... \r\n\r\n                     M:1, array1, array2 or M:;1; array1; array2 (i.e. M:;1;{0, 1, 2}; {\'sel1\', \'sel2\', \'sel3\'})\r\n                     Creates combobox. Array1 gives values, array2 is titles\r\n       _nval (n): value is used to find _cdescription\r\n       _cdescr (c): default description, if not found _description fron _nval','2019-05-14','17:26:50','tesae','0100-01-01','','',''),(722,'?QUERY?FUNP1501','Select value form a \"recarray\" array','callfpeg(\'?query?funp1501\', {_array, _obj, _top, _left, _bottom, _rigt, _style, _defcode, _defdescr}, .t.)','A','ERPM','recarray(), listarray()','W312','User selects a value fom an array. Method Returns (a) array with {_code, _description}\r\nArray is same as recarray()\r\n\r\nArguments\r\n=======\r\n      _array (a): The array to be used. The first element is _code (srting) i.e. { {\'1\', \'one\'}, {\'2\', \'two\'} }\r\n      _obj (o): The parent object of selection window\r\n      _top, _left, _bottom, _rigt (n) coordinates of selection window.\r\n     _style (n): See listarray for valid values\r\n     _defcode, _defdescr (c): Default code and description if no selection exists','2019-06-06','14:35:29','tesae','0100-01-01','','',''),(724,'EXDOPEG()','Executes a Pegasus Method, locking events on an object','exdopeg(_dlg, _method)','C','PEG','dopeg()','W312','Locks dialog object _dlg and executes _method. It\'s usefull if we need to stop mouse and keyboard events on a dialog box when _method is executed. \r\nIt\'s used internally by Pegasus, when executes methods from dialog boxes. \r\nReturns (c) the empty string. \r\n\r\nArguments\r\n========\r\n      _dlg (o): object to be locked.\r\n      _method (c): method to be executed.\r\n','2019-08-28','15:51:22','tesae','0100-01-01','','',''),(725,'?CSM?DB6P902','Returns an array with Profil Field Values','callfpeg(\'?csm?db6p902\', {\'ctbl\', \'nprofil\', \'ndbnr01\', [\'cwhere\'], [\'corder\']})','A','ERPM','','','Returns (A) an array with field values of a specific profil record. \r\n{ {Field Code, Value, Value as String, Field Type} }\r\n\r\nUser can insert profiles into CRM\r\n\r\nArguments\r\n========\r\n      ctbl (c): Master Table Name. Empty string is used for d00 table. \r\n      nprofil (n): Profile code \r\n      ndbnr01 (n): nr01 value for Master Table\r\n      cwhere (c): Extra where condition\r\n      corder (c): extra order used to query\r\n\r\nIF ctbl, nprofil, ndbnr01 are empty, then uses cwhere to find the record. \r\nElse searches the last (by date) record o ctbl, nprofil, ndbnr01.','2019-09-20','15:40:31','tesae','0100-01-01','','',''),(726,'?QUERY?RUNP033','Returns a string with empty fields of a sreen class','callfpeg(\'?query?runp033\', {_screen, _incfields, _excfields, _separator, _prefix})','C','ERPM','?query?runp030','','Reads a screen class and returns (c) a string with empty fields titles \r\n\r\nArguments\r\n========\r\n       _screen (c): Screen class\r\n       _incfields (c):  Optional . Default=\'\'. Fields to include separated with # (ie. #p01#p02#). If empty then all fields used\r\n       _excfields (c):  Optional . Default=\'\'. Fields to exclude separated with # (ie. #p01#p02#). \r\n       _separator (c): Optional . Default=\', \'. Separator of fields (i.e. chr(13) + chr(10)\r\n       _prefix (c): Optional . Default=\'n\'. Values prefix (i.e. \'n\', \'asctem1->\') \r\n','2019-09-26','11:21:34','tesae','0100-01-01','','',''),(727,'?CSM?DA4P902','Returns an array with questionnaire Field Values','callfpeg(\'?csm?da4p902\', {n01nr01\', [\'cwhere\'], [\'corder\']})','A','ERPM','?csm?da4p902','','Returns (A) an array with field values of a questionnaire record. \r\n{ {Field Code, Value, Value as String, Field Type} }\r\n\r\nUser can insert profiles into CRM\r\n\r\nArguments\r\n========\r\n      nd01nr01 (n): nr01 of d01 record. \r\n      cwhere (c): Extra where condition\r\n      corder (c): extra order used to query\r\n\r\nIF nd01nr01 is empty, then uses cwhere to find the record. \r\nElse searches the last (by date) record o ctbl, nprofil, ndbnr01.','2019-09-27','12:02:51','tesae','0100-01-01','','',''),(728,'?QUERY?FUNP150','Display help screen using new object','callfpeg(\'?query?funp1502\', {hlpnr, hlpclass})','C','ERPM','gethelp()','','','2019-09-27','13:05:27','tesae','0100-01-01','','',''),(729,'?QUERY?FUNP1502','Display Help Screen using new object','callfpeg(\'?query?funp1502\', {hlpnr, hlpclass})','C','ERPM','gethelp()','W312','Displays a Help Screen using a new object\r\nReturns (c) the empty screen\r\n\r\nArguments\r\n========\r\n      hlpnr (n): Help code \r\n      hlpclass (c): Optional. Default is current help class. Is the help class will be used.','2019-09-27','13:10:04','tesae','0100-01-01','','','');
/*!40000 ALTER TABLE `q80` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `q81`
--

DROP TABLE IF EXISTS `q81`;
CREATE TABLE `q81` (
  `nr01` bigint(10) NOT NULL default '0',
  `p01` char(1) NOT NULL default '',
  `p02` char(15) NOT NULL default '',
  `remdate` date NOT NULL default '0100-01-01',
  `remtime` char(10) NOT NULL default '',
  `remuser` char(30) NOT NULL default '',
  `remfdate` date NOT NULL default '0100-01-01',
  `remftime` char(10) NOT NULL default '',
  `remfuser` char(30) NOT NULL default '',
  `remguc` char(30) NOT NULL default '',
  PRIMARY KEY  (`nr01`),
  KEY `p01` (`p01`),
  KEY `remdate` (`remdate`,`remtime`),
  KEY `remguc` (`remguc`)
) ENGINE=InnoDB DEFAULT CHARSET=greek;

--
-- Dumping data for table `q81`
--

LOCK TABLES `q81` WRITE;
/*!40000 ALTER TABLE `q81` DISABLE KEYS */;
INSERT INTO `q81` VALUES (1,'A','Array','0100-01-01','','','0100-01-01','','',''),(2,'B','Block','0100-01-01','','','0100-01-01','','',''),(3,'C','Character','0100-01-01','','','0100-01-01','','',''),(4,'D','Date','0100-01-01','','','0100-01-01','','',''),(5,'L','Logic','0100-01-01','','','0100-01-01','','',''),(6,'M','Memo','0100-01-01','','','0100-01-01','','',''),(7,'N','Numeric','0100-01-01','','','0100-01-01','','',''),(8,'O','Object','0100-01-01','','','0100-01-01','','',''),(9,'U','NIL','0100-01-01','','','0100-01-01','','','');
/*!40000 ALTER TABLE `q81` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `q82`
--

DROP TABLE IF EXISTS `q82`;
CREATE TABLE `q82` (
  `nr01` bigint(10) NOT NULL default '0',
  `p01` char(6) NOT NULL default '',
  `p02` char(30) NOT NULL default '',
  `remdate` date NOT NULL default '0100-01-01',
  `remtime` char(10) NOT NULL default '',
  `remuser` char(30) NOT NULL default '',
  `remfdate` date NOT NULL default '0100-01-01',
  `remftime` char(10) NOT NULL default '',
  `remfuser` char(30) NOT NULL default '',
  `remguc` char(30) NOT NULL default '',
  PRIMARY KEY  (`nr01`),
  KEY `p01` (`p01`),
  KEY `remdate` (`remdate`,`remtime`),
  KEY `remguc` (`remguc`)
) ENGINE=InnoDB DEFAULT CHARSET=greek;

--
-- Dumping data for table `q82`
--

LOCK TABLES `q82` WRITE;
/*!40000 ALTER TABLE `q82` DISABLE KEYS */;
INSERT INTO `q82` VALUES (1,'DBPEG','db Pegasus & xBase files','2004-03-06','10:50:43','tesae','0100-01-01','','',''),(2,'FILE','File managment','2004-03-06','10:50:53','tesae','0100-01-01','','',''),(3,'BMP','bmp files managment','2004-03-06','10:50:27','tesae','0100-01-01','','',''),(4,'PRINT','Printouts','2004-03-06','10:51:29','tesae','0100-01-01','','',''),(5,'MATH','Mathematical','2004-03-06','10:51:00','tesae','0100-01-01','','',''),(6,'STR','String Managment','2004-03-06','10:51:34','tesae','0100-01-01','','',''),(7,'DATE','Date - Time Managment','2004-03-06','10:50:37','tesae','0100-01-01','','',''),(8,'BFILE','Binary Files','2001-08-08','11:41:54','tesae','0100-01-01','','',''),(9,'PEG','General Pegasus Functions','2004-03-06','10:51:25','tesae','0100-01-01','','',''),(10,'MENUS','Menu Selections','2004-03-06','10:51:15','tesae','0100-01-01','','',''),(11,'MEMOS','Memo managment','2004-03-06','10:51:07','tesae','0100-01-01','','',''),(12,'MSG','Messages','2001-08-08','13:18:40','tesae','0100-01-01','','',''),(13,'DIR','Directories','2001-08-08','15:26:57','tesae','0100-01-01','','',''),(14,'ARRAY','Arrays','2001-08-09','11:25:05','tesae','0100-01-01','','',''),(15,'INT','Pegasus For Internet (html)','2004-03-06','11:49:21','tesae','0100-01-01','','',''),(16,'HTM','HTML handling','2004-12-22','16:02:43','tesae','0100-01-01','','',''),(17,'DLL','dll usage','2004-12-28','11:34:48','tesae','0100-01-01','','',''),(18,'TIPS','Tips & Taps','2005-04-12','18:24:30','dias','0100-01-01','','',''),(19,'ODBC','ODBC Functions','2005-04-12','19:37:08','dias','0100-01-01','','',''),(20,'OCX','ActiveX,  COM, .NET, OCX call','2005-06-10','19:06:05','dias','0100-01-01','','',''),(21,'TBL','Tables','2005-11-30','20:41:37','dias','0100-01-01','','',''),(22,'THR','Pegasus Theory','2005-12-02','12:16:38','dias','0100-01-01','','',''),(23,'TCP','TCP/IP (Sockets)','2006-06-02','18:49:29','dias','0100-01-01','','',''),(24,'XML','XML Support','2006-06-02','20:37:34','dias','0100-01-01','','',''),(25,'SCR','Screen Data Class','2007-12-27','10:21:46','dias','0100-01-01','','',''),(26,'ERPM','ERP Methods','2015-03-03','10:59:49','tesae','0100-01-01','','','');
/*!40000 ALTER TABLE `q82` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `q83`
--

DROP TABLE IF EXISTS `q83`;
CREATE TABLE `q83` (
  `nr01` bigint(10) NOT NULL default '0',
  `p01` char(6) NOT NULL default '',
  `p02` char(50) NOT NULL default '',
  `remdate` date NOT NULL default '0100-01-01',
  `remtime` char(10) NOT NULL default '',
  `remuser` char(30) NOT NULL default '',
  `remfdate` date NOT NULL default '0100-01-01',
  `remftime` char(10) NOT NULL default '',
  `remfuser` char(30) NOT NULL default '',
  `remguc` char(30) NOT NULL default '',
  PRIMARY KEY  (`nr01`),
  KEY `p01` (`p01`),
  KEY `remdate` (`remdate`,`remtime`),
  KEY `remguc` (`remguc`)
) ENGINE=InnoDB DEFAULT CHARSET=greek;

--
-- Dumping data for table `q83`
--

LOCK TABLES `q83` WRITE;
/*!40000 ALTER TABLE `q83` DISABLE KEYS */;
INSERT INTO `q83` VALUES (2,'I1','Pegasus for Web V 3.00','2005-07-20','14:15:50','dias','0100-01-01','','',''),(7,'B','Pegasus For Win V 3.10 & for Web V 3.00','2005-12-06','17:10:23','dias','0100-01-01','','',''),(8,'W3','Pegasus V 3.10 For Windows','2007-12-27','10:22:35','dias','0100-01-01','','',''),(9,'W311','Pegasus V3.11 For Windows','2007-12-27','10:22:27','dias','0100-01-01','','',''),(10,'W312','Pegasus V 3.12  For Windows','2009-11-19','18:13:39','dias','0100-01-01','','','');
/*!40000 ALTER TABLE `q83` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2019-09-30  8:29:54
