Read PDF Easily into dBase III Plus

Free download. Book file PDF easily for everyone and every device. You can download and read online Easily into dBase III Plus file PDF Book only if you are registered here. And also you can download or read online all Book PDF file that related with Easily into dBase III Plus book. Happy reading Easily into dBase III Plus Bookeveryone. Download file Free Book PDF Easily into dBase III Plus at Complete PDF Library. This Book have some digital formats such us :paperbook, ebook, kindle, epub, fb2 and another formats. Here is The CompletePDF Book Library. It's free to register here to get Book file PDF Easily into dBase III Plus Pocket Guide.

What are you trying to accomplish? I'll give it a try considering the information you've provided thus far Most common use of copy is to duplicate the structure of an existing table and populate it with some or all of it's [existing table] data. Example 1: Use myTable copy to newTable. Use myTable Index on lastName to lname. Red Flag This Post Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework. Close Box. Students Click Here Join Us! For other languages, these steps were tedious in the days of single- and double-digit megahertz CPUs.

The interpreter also handled automatically and dynamically all memory management i. Conversely, the ease and simplicity of dBase presented a challenge as its users became more expert and as professional programmers were drawn to it. More complex and more critical applications demanded professional programming features for greater reliability and performance, as well as greater developer productivity.

Over time, Ashton-Tate's competitors introduced so-called clone products and compilers that had more robust programming features such as user-defined functions UDFs to supplement the built-in function set, scoped variables for writing routines and functions that were less likely to be affected by external processes, arrays for complex data handling, packaging features for delivering applications as executable files without external runtime interpreters, object-oriented syntax, and interfaces for accessing data in remote database management systems.

Ashton-Tate also implemented many of these features with varying degrees of success. Eventually, it became clear that the dBase world had expanded far beyond Ashton-Tate, which was considered to be retarding innovation, growth and the impact of the technology. Paperback Software launched the flexible and fast VP-Info with a unique built-in compiler. They began using "xBase" to generically refer to the language and database design, to distinguish it from the Ashton-Tate product.

Ashton-Tate was invited to participate, but instead it saw the rise of xBase as an illegal threat to its proprietary technology. In December , U. District judge Terry Hatter, Jr. In October , while the case was still under appeal, Borland International acquired Ashton-Tate, and as one of the merger's provisions the U. By the end of , major software companies raised the stakes by acquiring the leading xBase products. Advisor Media built on its Data Based Advisor magazine by launching FoxPro Advisor and Clipper Advisor and other developer magazines and journals, and live conferences for developers.

By the year the xBase market had faded as developers shifted to new database systems and programming languages. Computer Associates later known as CA eventually dropped Clipper. Borland restructured and sold dBase. Of the major acquirers, Microsoft stuck with xBase the longest, evolving FoxPro into Visual FoxPro, but the product is no longer offered.

The era of xBase dominance has ended, but there are still xBase products. Today, implementations of the dBase language have expanded to include many features targeted for business applications, including object-oriented programming, manipulation of remote and distributed data via SQL, Internet functionality, and interaction with modern devices. The following example opens an employee table "empl" , gives every manager who supervises 1 or more employees a percent raise, and then prints the names and salaries. Note how one does not have to keep mentioning the table name.

The assumed "current" table stays the same until told otherwise. Because of its origins as an interpreted interactive language, dBase used a variety of contextual techniques to reduce the amount of typing needed. This facilitated incremental, interactive development but also made larger-scale modular programming difficult. A tenet of modular programming is that the correct execution of a program module must not be affected by external factors such as the state of memory variables or tables being manipulated in other program modules.

Because dBase was not designed with this in mind, developers had to be careful about porting borrowing programming code that assumed a certain context and it would make writing larger-scale modular code difficult. Alternatively, the alias command could be appended to the initial opening of a table statement which made referencing a table field unambiguous and simple. For example. Another notable feature is the re-use of the same clauses for different commands.

For example, the FOR clause limits the scope of a given command. This simplifies the learning of the language. This is an example of a feature that made dBase programming flexible and dynamic, sometimes called "meta ability" in the profession. This could allow programming expressions to be placed inside tables, somewhat reminiscent of formulas in spreadsheet software. However, it could also be problematic for pre-compiling and for making programming code secure from hacking.

But, dBase tended to be used for custom internal applications for small and medium companies where the lack of protection against copying, as compared to compiled software, was often less of an issue. Although the language has fallen out of favor as a primary business language, some find dBase an excellent interactive ad-hoc data manipulation tool. Whereas SQL retrieves data sets from a relational database RDBMS , with dBase one can more easily manipulate, format, analyze and perform calculations on individual records, strings, numbers, and so on in a step-by-step imperative procedural way instead of trying to figure out how to use SQL's declarative operations.

Its granularity of operations is generally smaller than SQL, making it easier to split querying and table processing into easy-to-understand and easy-to-test parts. For example, one could insert a BROWSE operation between the filtering and the aggregation step to study the intermediate table or view applied filter before the aggregation step is applied. Use this command to clear the screen of all pop-up menus, and release the memory used by pop-up menus. This is particularly useful in programs when you want the user to enter information before the program continues.

Any window definitions that you have not saved before issuing this command are lost. Any text that was covered up by the windows becomes visible. See Also , FILL, a Besides closing all database files, it closes any associated index. Defaults Unless the file is on the default drive or a path is set, the filename must include the drive designator. This command looks for a file with a. Ibg generated label ,. Earlier versions of dBASE did not generate object code files. You cannot modify an object file.

When you DO a program file, the source code is compiled into an object code file, and then the object code is executed. If the. If a macro appears in a command line, however, it is expanded and parsed at execution time. A typical. A source file can include more than one procedure, such as:. Any procedure found in an active.

This order is usually the same as given in the paradigms under the "Syntax" heading for each command and function.

Easily into dBase III Plus

Compile time can be improved for long commands by entering commands in the order given in the syntax paradigms. If you use constants in the source code, the compiler computes and saves the value in the object code file. For example, X. Comparing two string constants in an expression could cause a problem. If the record pointer is at the end of the file, EOF returns a logical true. The length of the field is determined by the numeric expression, which may be a number from 8 to The default is A three-byte hexadecimal number that records the date a lock was placed.

A zero- to character representation of the log-in name of the computer that placed a lock, if a lock is active. The count, time, and date portions of the field always take the first eight characters. If you use the CHANGE function, the count portion of the field is read from the disk again and compared to the previous value, which was stored in memory when the record was initially read. You can reset the value to false by repositioning the record pointer.

It indicates who has locked the record or file, and when the lock was placed. A directory listing of new files created by the COPY command shows the dates on which the new files were copied. This command automatically copies memo. You may specify field lengths, record lengths, number of fields, or number of records that are incompatible with other software. Note the file limitations of your other software program before exporting database files with COPY.

All fields are separated by commas. Records in the text file are variable length, and every record ends with a carriage return and line feed. Character data is not delimited, and fields are not separated with a character. Records are fixed length, the same length as the record in the database file, and every record ends with a carriage return and line feed. You should rename the file to include a. RPD RapidFile data.


  • Dbase III Plus | Databases | Database Index.
  • Life, Love, and the Moon (Latin Moon Book 4).
  • Retinal Degeneration: Methods and Protocols.

FW2 Framework II. Database records are converted to MultiPlan rows, and database fields are converted to columns. No file extension is written with the output file. DIF VisiCalc version 1. Database records are converted to VisiCalc rows, and database fields are converted to columns. WKS Lotus spreadsheet. Database records are converted to Lotus rows, and database fields are converted to columns. The file is created in row major order.

These letters are reserved as default alias names. You can, however, specify AA for example as a database filename. Example To copy all the records in the Transact database file whose Clientid is C to a database file called Temp:. Usage You must specify the filenames and file extensions for both files. If you want to copy a file to another drive or directory, you must also provide the drive designator and directory name. Tips If you copy a database file that has memo fields, you must copy the associated memo. You may use the COPY command to copy records from an open database file.

Do not use the single letters A through J, or the letter M, as database filenames because they are reserved as default alias names. Usage If you do not specify an. If a production. If you use a TO clause, the tag is written to the specified. You may copy a maximum of 47 index. Special Cases In a network environment, the database file must be in exclusive use before you attempt to copy an.

Usage This command exports the information from a memo field in the current record to a file on disk. If you want to copy a file to another drive or directory, you must provide the drive designator and directory name. You can precede the field name with an alias, and copy memo fields from other work areas. If you do not use the ADDITIVE option and the filename already exists on disk, the contents of the memo field overwrite any existing information in the file. Defaults The filename must include the drive designator and directory, if you want the resultant file written to a drive or directory other than the default.

Unless otherwise specified, the TO file is assigned a. The result is another database file with either an identical structure to the first file, or, if you specify the FIELDS option, with a subset of the fields in the first file. No records are copied. Example To copy the structure of the Client database file to a file called Temp:. Records in the new file contain the field name, data type, field width, number of decimal places in a numeric field , and index flag for each field in the active database file.

The structures of database files created with earlier versions of dBASE did not include index flags. The index tag being copied must come from an open. Only one tag can be copied at a time. Less than Special Cases In a network environment, the database file must be in exclusive use before you attempt to copy. Usage This command copies selected records and fields from a database file into an existing array.

Table of contents

For each record in the database file, the first field is stored in the first column, the second field in the second column, and so on. Each record becomes a row in the array. This process continues until there are either no more fields or no more array columns. If the database file has more fields than the array can hold, the excess fields are not stored. If the database file has fewer fields than the array, the excess array elements remain unchanged.

Memo fields cannot be copied to an array.

DOS Program - Clipper 5

If you declare a single-dimensioned array, such as. Unless you specify a scope, the process begins with the first record in the database file and continues until there are either no more records in the database file or there no more rows in the array. The data types of the array elements will be the same as the corresponding field types in the database file. If you use the FOR clause, the condition is evaluated before each record in the database file is copied to the array.

A record is copied to the array only if the condition evaluates to a logical true. If you use the WHILE clause, no further information is copied once the condition evaluates to a logical false. If you specify a condition with a FOR or WHILE clause, or limit the number of records with a scope, the tally indicates the number of records that meet the condition or fall within the scope. Both commands provide the same screen for designing the file structure.

The structure of a database file is the definition of field names, field types, field lengths, number of decimal places for numeric fields , and a flag indicating the presence of an. Defaults Unless you explicitly provide a drive and directory with the filename, CREATE writes the new database file in the default drive and directory location. Unless you specify a different extension, the database file is given a. This command can only modify the structure of the active database file. If a catalog is active when you create a database file, the file will be added to the catalog.

The structure contains definitions for each field in the database file. You define the structure of a new database file by providing the following information for each field: Field Name Type Width Decimal Places for a numeric field Field Index Flag if true, a tag is added to the production. The field name cannot contain embedded blank characters and the first character of the field name must be a letter.

You determine the field type by entering the first letter of the data type Character, Numeric [Binary Coded Decimal], Floating point numeric. Logical, Date, or Memo , or by pressing the Spacebar until the desired data type appears and then selecting it by pressing You must specify a field width for numeric and character fields. This is the maximum number of digits or characters you intend to enter in the field. Character fields may be up to characters long; numeric fields may be up to 20 digits, including the sign and a decimal point.

Logical, Date, and Memo fields all have predefined widths. A Logical field is one byte wide. Date fields are always 8 bytes. Memo fields are automatically assigned a length of 10 bytes in the database file, although each memo field entry may contain up to K. Data you enter in memo fields is not stored in the database. The 10 bytes identify the location of memo field entries in the memo file. You can define a record having up to fields. The maximum size of a record is 4, bytes, not including memo field entries. Each character position in a field takes up one byte.

Instructions and error messages appear at the bottom of the screen. The pull-down menus at the top of the screen allow you to work directly with the database file structure and records. You may print the database file structure, create indexes, sort the file, remove indexes, and append records to the file. After the structure modifications are completed, this command appends the contents from the backup files into the modified database file.

You should not change a field's name and its width or type at the same time. You also should not insert or delete fields from a database file and change field names at the same time. If you insert or delete fields as well as changing field names, therefore, you are changing field positions and could lose data. You can, however, change field widths or data types the same time as you insert or delete fields.

If you change field types, however, keep a backup copy of your original file, and check your new files to make sure the data has converted correctly. If you convert numeric fields to character fields, dBASE IV will convert numbers from the numeric fields to character strings. If you convert a character field to a numeric field, dBASE IV will convert numeric characters in each record to digits until it encounters a non-numeric character. If the first character in a character field is a letter, the converted numeric field will contain zero. You can convert logical fields to character fields, or vice versa.

You cannot convert logical fields to numeric fields. If you modify the field name, length, or type of any fields that have an associated tag in the production. In general, regarding the conversion of field data types, dBASE will attempt to make a conversion you request, but the conversion must be a sensible one or data may be lost. Numeric data can easily be handled as characters, but logical data, for example, cannot become numeric.

Tip Do not use the letters A through J, or the letter M, as database filenames, because they are reserved as default alias names. You can, however, use AA for example as a filename. Then you create a new database file with the same structure as Client. USE Client. USE Newnames.

Defaults Unless otherwise specified, this command supplies a. This closes the open database files and their associated files that form the view file. Defaults You must provide a filename for the application, or use the? You can, however, change the application name in the dialog box. The presence of an application object. If a catalog is open, only the application. Any other objects that you create.

Options If a catalog is open, the? If a catalog is not open, the?

Recent Version history

You can then choose the application you wish to modify. The label designer allows you to create label form. Ibl files using the fields specified in the current database file or in other related database files. Ibl extension and generates a file with an.


  • Americas Best Places to Run : Scenic | Historic | Amazing.
  • The Meaning of Freedom: And Other Difficult Dialogues.
  • Sponsored Links:.
  • Easily into dBase III Plus.
  • Database Viewer: dBase, Visual dBase 7, FoxPro, DBF, CSV, TXT.
  • Class-29: The Making of U.S. Navy SEALs;

Ibg file extension. Ibl file contains all the information needed to set up a display of the label design which can later be changed, and to print labels using data from a database file or view. You specify the size of the label you want to create and the number of printed lines on each label. These values should match the label forms or paper on which you want to print. The presence of a label form file, rather than the command verb you use, determines whether a create or modify operation will occur.

Ibl file exists, this command modifies it; if the. Ibl file does not exist, this command creates one. This file has the same name as the label form file, but with an. Ibo file, which contains the compiled object code of the. Ibg file, is written to disk. Ibo file whenever you print labels with this form. Ibl files associated with the active database file or view.

Ibl files on the disk. You can then choose the label form file you wish to modify. Special Cases You may also enter the label designer from the Control Center. If you erase the label form. An attempt to edit the file will generate a new label file if the old label file cannot be found. Ibg file, the changes will not be made to the. Ibl or. Ibo files. Ibo file. Ibo and. Ibg files to know when a new. Ibo should be compiled. If you modify a label form. Ibl file is saved with an. Usage A. The new query file will have a.

The presence of a query either. The new. If you do not specify an extension, the command first looks for a. When you use DO to perform the update query, a. You may rename this. You must rename the extension to. You can then choose the query file you wish to modify. Special Cases You may also enter the query designer from the Control Center. If you erase the. An attempt to edit these files will generate new query files if the old query files cannot be found.

The report form file contains all the information needed to set up a display of the report design which can later be changed, and to print reports using data from a database file or view. The presence of a report form. This file has the same name as the report form file, but with an. You can then choose the report form file you wish to modify.

Special Cases You may also enter the report designer from the Control Center. If you erase the report form. An attempt to edit the file will generate a new report file if the old report file cannot be found. If you modify a report form. The screen file contains the information in a form that you can later edit, and the format file contains the dBASE IV commands to display the data on the screen. When you design or modify a screen, you are working with the screen file. The presence of a screen. The format file has the same name as the screen file, but with an.

You can then choose the screen file you wish to modify. An attempt to edit the file will generate a new screen file if the old screen file cannot be found. If you modify a screen. Because of the double quote marks inside a format file, you should avoid using them in the surface design of a screen form.

It has no effect when executed from the dot prompt. Usage This command does not require a menu name; it deactivates the only active menu and erases it from the screen. The screen returns to displaying whatever is under the deactivated menu. Example This example defines a bar menu with two selections. It can display a directory listing or, alternately, deactivate itself:. Any text that was covered by the popup is displayed again.

If you press the Esc key, you bypass this command, deactivate the popup, and return to the dot prompt. Either option calls a procedure that evaluates the user's selection. Notice that the popup is deactivated as one of the options of the procedure file. Usage This command deactivates windows in the window name list by erasing them firom the screen. The debugger screen contains four windows that allow you to run a program or procedure and see the commands as they are executing, edit the program or procedure, set breakpoints to halt program execution, and display the results of expressions while the program is executing.

The screen is divided into a debug window, an edit window, a breakpoint window, and a display window. The debug window, at the bottom of the screen, displays the current work area, database file, program file, procedure, record number, line number, master index file, and the ACTION: prompt. This window, at the top of the screen, shows the program or procedure being executed.

You must save the file to avoid losing the changes. Once the changes are made, the debugger continues execution from the old file. The debugger may execute a command line that is not the line you expect to be executed, depending on how you changed the file. You may enter one or more conditions in the breakpoint window that will be evaluated after each line of code is executed. If one of the conditions evaluates to true. You may enter dBASE expressions on the left of this window. The results are displayed on the right of the display window.

If there is a DO in the current procedure, the called procedure will execute outside the debugger environment, although the breakpoint watch will remain in effect. If you precede the N with a number, you direct the debugger to execute that number of commands in the current procedure before returning to the ACTION: prompt. P Program Trace Show the program trace information, which includes the current program, procedure, and line number. Q R Quit Quit the debugger and cancel the program.

Export data to dBASE - Access

Run Run the program until a breakpoint or error is encountered. If you precede the S with a number, you direct the debugger to step through that number of commands before returning to the ACTION: prompt. Unlike N, procedures called from the current procedure are executed within the debugger environment.

quick·sil·ver

X Exit Exit the program and return to the dot prompt. You can only operate one DEBUG session at a time; it isn't possible to start a second while the first is suspended. If a Step, S, was last executed, 4 - 1 will execute a 1S. Pressing F9 Zoom removes the debugger windows from the screen to show the underlying screen information, or replaces the debugger windows on the screen.

The number of variables is not limited. In this paradigm, the curly braces indicate optional items. If you use the command from the dot prompt, the array is public. Usage The array definition list consists of the array names and array dimensions. Like memory variables, array names can be up to ten characters long. They can contain letters, numbers, and underscores. They must begin with a letter and cannot contain embedded blank spaces. The array dimensions consist of one or two numbers in square brackets. The first number is the number of rows in the array; the second is the number of columns in the array.

If only one number is used, the array is one-dimensional. If two are used, they are separated by a comma and the array is twodimensional. The maximum number of dimensions is two. Cost is the array name, and it contains fifteen elements. The elements are numbered starting at 1. It contains 24 elements, numbered by row and column position. One array may contain elements of different data types.

NOTE Any array, no matter how complex, is still handled as a memory variable. This means you can replace an array with a variable of the same name without seeing a warning message or needing to approve the replacement. Use caution when you create or replace memory variables with names similar to those of arrays present in memory.

The array name uses one slot from the same memvar pool used by other memory variables. Each array element, however, does not use a slot from this memvar pool, but is stored in a separate block allocated to hold the elements. If an array declaration exceeds available memory, the error message Insufficient Memory appears. After declaring an array, the elements are treated like any other memory variable. The elements are referred to by their array name and position in the array, beginning from left to right and top to bottom.

For example, Cost[4] or Items[5,2] are sample element names. All commands and functions which can be used with memory variables can also be used with array elements, as long as the array has been declared and the element is within the range of the array declaration. If you reference array coordinates that do not exist, the error message Bad array dimension s appears. Examples Using the Transact database file, store the number of orders and the sum of the Totalbill field to an array called Details:. Usage A bar is a single prompt or option that appears in a defined pop-up.

Use only positive whole numbers for the line numbers; fractional line numbers are truncated. If you define a second bar prompt for a line number that already has a bar prompt, the new bar prompt overwrites the earlier one. If you define a bar for a number that exceeds the total number of lines found in the pop-up window, then the prompts scroll vertically inside the pop-up window.

If a BAR value is missing, that row in the popup is left blank, and the selection bar skips over it. If the length of the bar prompt exceeds the horizontal line length in the popup window, the prompt is truncated. Horizontal scrolling is not permitted in a pop-up window. You must define at least one bar for a pop-up window; otherwise, the pop-up window is empty and cannot be activated.

The message is limited to 79 characters; all excess characters are truncated. The message is tied to the bar prompt with which it is defined; it appears at the bottom of the screen when the cursor in the pop-up window is on the bar prompt that was defined in the same DEFINE BAR command.


  • Seafood Proteins.
  • Oh no, there's been an error.
  • Information.
  • About this book;
  • Extracting DOS DBase III data - TechRepublic!
  • Taste of Macau: Portuguese Cuisine on the China Coast.
  • Description:?

Each bar prompt can have its own message line of 79 characters or less. The SKIP option is included to avoid selecting the separator line. A logical memory variable called Medit can be defined to make the Delete option display only while Medit evaluates to a logical true. The selection bar cannot be placed on bar 4 while Medit remains true, but can be selected when Medit evaluates to a logical false. Usage Use this command to define a box around report text for enhanced appearance.

This command is valid only for printed output. This command defines the beginning column on the left and last column on the right, the beginning line for the top of the box, and the height for the box. If the beginning coordinates are less than the current coordinates, they are ignored and the box begins at the current line. The default border is a single line.

Usage This command is the first step in creating a bar menu; by itself it does not create a bar menu. This command can only assign a name to a bar menu and associate an optional message with the menu name. The message is limited to 79 characters; excess characters are truncated. Each menu pad may have its own message, or one message may be used with all bar menu options.

To define more than one pad in a menu, repeat the command with the same menu name until all the pads are defined. Usage Use this command to define each pad for a given bar menu. The pad name follows the naming rules for field and alias names. If you use an existing pad name to define a different pad, the earlier pad is overwritten. The program adds a blank space to each side of the prompt message before displaying it. Menu prompts can be positioned anywhere on the screen. The optional screen coordinates define the beginning point for the prompt text.

You can create a vertical menu bar by using one set of column coordinates, but incrementing the row coordinates for each pad. If you do not specify coordinates, the program places the first prompt at the upper left corner of the screen. It places each subsequent prompt on the same line, one space after the end of the previous prompt.

The message line can be up to 79 characters long; any excess characters are truncated. The message appears centered at the bottom of the screen when the cursor is on the pad associated with it. The total number of pads you can define is limited only by the available memory. Example Before you define a pad, you define its menu. After defining pads, you define the pop-up menus for each one, then the bars that will appear on the popups. The following program example creates a menu named Main and its four pads, with pop-ups for each pad and a bar for the first pop-up.

You must assign a name to the pop-up menu so that you can call the pop-up menu to the screen after you define it. This window covers up any other text that is displayed on the screen, including the status line. Because only one popup can be active, several popups may be defined at the same screen coordinates. Deactivated popups are erased from the screen. The TO coordinates are optional; if you omit them, dBASE IV defines the window to be wide enough to accommodate the longest field and long enough to include the maximum number of lines.

The screen limits a pop-up window to the last column 79 and the line above the status bar If the status bar is off, the last line is the screen size, minus 1 24 lines on a line screen. The minimum size for a pop-up is one displayable row and one displayable column. If you use the TO coordinates, prompts that are too long to fit in the pop-up window are truncated to fit.

If all the prompts will not fit in the pop-up window, they scroll vertically within the pop-up menu window as you move the cursor. You may, however, precede a field name with an alias. The maximum message is 79 characters long; any excess characters are truncated. Example Here are four pop-up menus:. These pop-up menus have coordinates that would position them directly below corresponding pads on the menu bar.

Usage Use this command to define the screen coordinates and the display attributes of a window and its borders. The FROM coordinates determine the upper left row and column for the window, and the TO coordinates determine the bottom right row and column. Each time you activate a window, its coordinates are checked against the number of lines the screen can display, and the presence of the status line.

The border default is a single-line box. Alternately, you can define a doubleline box, define an inverse video panel, or suppress borders altogether. If no color is specified, screen attributes follow the colors that were in effect on the screen when the window was defined. These codes display on the screen, but cause problems with print drivers, or if you use the Shift-PrtSc key to print out the screen contents. The COLOR option allows you to set the foreground and background colors that will appear for standard and enhanced characters.

You may store up to 20 window definitions in memory at one time. Example This example opens a small window at the upper right corner of the screen. Usage This command does not remove records from the database file. In this mode, Ctrl-U both deletes and reinstates records. Example To mark record 6 for deletion:. Usage Multiple index. A production. The database file header contains an indication that there is an associated production. Deleting a tag index permanently removes it from the multiple index file, and restores space to the file.