| System Administration Tips For D3 | Index Level | FlashBASIC release notes |
| Syntax | |
| Category | Article |
| Type | Article |
| Description |
using processing codes in a file-defining item.
The Power of Advanced Pick Dictionaries, Part 1: The File-Defining Item Contributed by Terri Hale (original article ran in PickWorld Magazine) Applications that used to take hundreds of lines of Pick/BASIC code can now be done using the Update processor (UP) and dictionaries with enhanced processing codes. Several months ago, I was in Boulder, Colorado at the offices of Rigden. Ray Hoffman, a senior programmer, was upgrading one of Rigden's (R83) client's applications to Advanced Pick (AP). I asked Ray how much FlashBASIC code he eliminated in the conversion. His answer may surprise you. "About 60 to 70%" was his reply. In AP, many application functions are performed at the 'system' level, thereby greatly reducing the need for large FlashBASIC programs while dramatically increasing its relational capabilities. Included with Advanced Pick's processing codes is the ability to call FlashBASIC subroutines from dictionaries. Applications which use the Update processor as their data entry tool consist of a varying number of small special function subroutines called from dictionaries, rather than one or more large data entry programs with multiple subroutine calls. Processing codes, formerly referred to as conversions and correlatives, have been greatly enhanced in D3 while maintaining compatibility with existing R83 conversions and correlatives. Data can be transformed at various processing times. Processing codes are stored in both file-defining items and in attribute-defining items and define file relationships and data manipulation rules. Processing codes can be defined in three attributes in both file-defining and attribute-defining items. In addition to increasing the functionality of existing dictionaries through the use of processing codes, four new attributes have been added to the Pick data dictionary. An inter-relationship exists between these new attributes and the Update processor. Before we examine the file-defining item in Advanced Pick, let's review the structure of the file-defining item in R83 or Classic Pick. Figure A. ATT# NAME DESCRIPTION 001 D/CODE DICTIONARY CODE 002 A/AMC BASE FRAME IDENTFICATION NUMBER 003 S/NAME MODULO OR NUMBER OF CONTIGUOUS FRAMES IN PRIMARY SPACE 004 S/AMC SEPARATION OR NUMBER OF FRAMES PER GROUP 005 L/RET PROVIDES ACCESS RESTRICTION 006 L/UPD PROVIDES ACCESS RESTRICTION 007 V/CONV 008 V/CORR 009 V/TYP DATA JUSTIFICATION 010 V/MAX WIDTH FOR OUTPUT 011 V/MIN 012 RESERVED 013 REALLOC USED TO RESIZE FILE Typically, the file-defining item includes a D/Code, Base FID, Modulo, Separation, V/Typ and V/Max. Programmers can modify the D/CODE, add security codes, change the length of item-ids and reallocate files. Now, enter Advanced Pick. To edit a dictionary in AP, the macro "ud", is used. This view is different than what is seen using the line editor in Classic Pick. The first thing you will notice is that the line numbers are not displayed. Secondly, the attribute names are displayed. Thirdly, four new attributes have been added to the data dictionary. Figure B shows a file-defining item for the ORDER file in AP. Figure B. NAME DATA DESCRIPTION DICTIONARY-CODE d VALID CODES ARE L,P,S,X,Y BASE 10193 BASE FID MODULO 67 MODULO STRUCTURE SEPARATION IS ALWAYS 1. RETRIEVAL-LOCK CONTROLS ACCESS TO FILE UPDATE-LOCK CONTROLS ACCESS TO FILE OUTPUT-CONVERSTON UNSED CORRELATIVE id100 ITEM-ID CORRELATIVE call update.order FlashBASIC PROGRAM CALL I43322a1 FILE INDEX CORRELATIVE bcustomer;2;6 BRIDGE CORRELATIVE ATTRIBUTE-TYPE l JUSTIFICATION COLUMN-WIDTH 10 WIDTH FOR OUTPUT INPUT-CONVERSION call default.order FlashBASIC CALL MACRO customer product qty DEFAULT INPUT ATTRIBUTES OUTPUT-MACRO customer ext.price DEFAULT OUTPUT ATTRIBUTES DESCRIPTION order file ON-LINE UP HELP MESSAGES REALLOCATION REALLOCATION FOR RESIZING All of the functions performed by the file-defining item in Classic Pick are still performed in AP. However, a closer look will show that application-oriented functionality has been added to the file-defining item in AP. Let's examine some of the enhancements to the 13 original attributes, as well as study the four new attributes contained in the file-defining item in AP. DICTIONARY-CODE. Several codes have been added to the existing (which are still valid) codes. This attribute must contain a d, and optionally the following codes: l Causes transaction logger to log updates p Primary filespace contains only pointer items s Item-ids are case sensitive x Do not save file y Do not save file. An empty file exists after restore. N Disable update protection U Enable update protection STRUCTURE. Separation is not specified in D3 file creation, since the system defaults to a separation of 1. CORRELATIVE. Processing codes on the correlative attribute are invoked at file time. In Figure B., there are several processing codes listed in multi-value format. The first value "id100" is the item-id correlative which is used in conjunction with the Update processor to assign predefined item-ids to new items. The user can define the format and beginning number of the item-id by using this correlative. The system will assign the item-id at file time and automatically increment the item-id counter. The second value "call update.order" tells the system to call a FlashBASIC subroutine named update.order when the item is filed from UP. Within this FlashBASIC subroutine, the item can be modified and/or data verification performed. This is the last chance to make amendments to the item before filing. The third value "I43322a1" represents a file index correlative which indicates that an index has been created. This data is inserted by the system when the create-index verb is executed. (i.e., create-index ORDER a1) Broken into parts, the "I" before the number "43322" is the processing code; "43322" is the root fid (or beginning frame address) of the index; the "a1" is the a-correlative expression defined in the creation of the index. NOTE: Any number of attributes may be indexed in a file. Once the index has been created, the user can scan forward or backward by utilizing the Update processor on the indexed attribute (aka "cruising"). The fourth value "bcustomer;2;6" is a bridge correlative. Bridge correlatives maintain a horizontal relationship between an attribute in one file and an item in the same file, or to an item in another file. Filing an item with UP automatically executes the bridge correlative. In this example, the bridge correlative uses attribute 2 of the ORDER file as the item-id in the CUSTOMER file and writes the ORDER item-id into attribute 6 of the CUSTOMER file. INPUT-CONVERSION. Processing codes on the input conversion attribute are applied before data entry. This dictionary is available only when used in conjunction with the Update processor. In Figure B., there is a FlashBASIC subroutine call to a program called default.order. This subroutine will be executed before the user gets control of the item. MACRO. This attribute may contain default attributes to be used by the Update processor in data entry mode. By utilizing multi- values here, you can take advantage of a new functionality called "multiple views" of the data. In Figure B., customer product and qty will be the attributes displayed for input when, for example, the tcl command :u order is executed. OUTPUT-MACRO. This attribute may contain user specific attributes to be used by the LIST Processor. In Figure B., customer and ext.price will be the attributes displayed for output by the list processor when, for example, the tcl-command :list order is executed. If the OUTPUT-MACRO attribute is null, then the MACRO attribute is used as the default attribute list for output as well as for input. If both the MACRO and OUTPUT-MACRO attributes are null, then only the item-ids will be listed for output. DESCRIPTION. This attribute may contain 'on-line' help documentation. In the Update processor, the description will be displayed, by typing "?" <return> at the item-id prompt. In summary, by taking advantage of the Update processor and the enhanced processing codes, the programmer can modify or verify data from the file-defining item before getting into the item, or at file time. In Part II of this series, you will see what enhancements have been made to the attribute-defining item in Advanced Pick. As a preview, the following chart summarizes the processing codes available for both the file-defining and the attribute-defining items. FILE-DEFINING ATTRIBUTE-DEFINING FUNCTION OUTPUT CORR INPUT OUTPUT CORR INPUT --------------------------------------------------------------- algebraic function x x x ascending order x attribute index correlative x bridge correlative x call BASIC subroutine x x x x x callx BASIC subroutine x character update x concatenate x x date conversion x x x display only x f-math correlative x x x file index correlative x group extract x x x item id correlative x length code x x x mask character x x x mask hexadecimal x x x mask left & right justify x x x mask time x x x must input x pattern match x x x range x x x remote index correlative x substitution x x x text extraction x x x translate x x x update stamp x user exit x x value code x za x x zip code x x x |
| Options | |
| See Also | processing codes ulk set-dptr |
| Example | |
| Warnings | |
| Compatibility | D3 7.0 AP |
| System Administration Tips For D3 | Index Level | FlashBASIC release notes |