790 likes | 1.39k Views
ADABAS. Little Known Features Natural Conference in Philadelphia, PA October 17-20, 2006 Dieter W. Storr info@storrconsulting.com. Content. ADAM Files Hyperdescriptors Coupling Multi-client Files. ADAM. A dabas D irect A ccess M ethod How it works Performance issues
E N D
ADABAS Little Known Features Natural Conference in Philadelphia, PA October 17-20, 2006 Dieter W. Storr info@storrconsulting.com
Content • ADAM Files • Hyperdescriptors • Coupling • Multi-client Files Dieter W. Storr -- info@storrconsulting.com
ADAM Adabas Direct Access Method • How it works • Performance issues • Read access • Write access Dieter W. Storr -- info@storrconsulting.com
ADAM – How to Create ADACMP ADAMER REPORT ADALOD ADAMFILE ADABAS ADAULD ADABAS Dieter W. Storr -- info@storrconsulting.com
ADAM • Measurements and evaluations • ADAMPARM • ADAMOFLOW • DSSIZE • I/Os with FINDs and value not found, key values -1 to -99 • I/Os with hit rate 100% for ADAM and not ADAM descriptors • What happened if poor distribution of ADAM key • - Pros and Cons Dieter W. Storr -- info@storrconsulting.com
ADAM Dieter W. Storr -- info@storrconsulting.com
ADAMER Parameters ERROR-076, Mandatory parameter MAXISN missing Dieter W. Storr -- info@storrconsulting.com
ADAMER Parameters ADAMDE=UQ DE or ISN • No sub-, super-, hyper-, collation, or phonetic descriptor • No MU or PE field • No variable length field • No NU defined descriptor Dieter W. Storr -- info@storrconsulting.com
ADAMER Parameters BITRANGE=X,Y,Z Bit Truncation for ADAM Keys • X= minimum • Y = maximum • Z = incremental Dieter W. Storr -- info@storrconsulting.com
ADAMER Parameters DATASIZE=n1,n2,n3 Data Storage Size for Estimates • n1= min cylinders • n2 = max cylinders • n3 = increments • For example: DATASIZE=100,175,25 Dieter W. Storr -- info@storrconsulting.com
ADAMER LOAD ADALOD LOAD FILE=xxx ADALOD ADAMFILE ADAMDE=field | ISN ADALOD ADAMOFLOW=size ADALOD ADAMPARM=number | 0 <snip> Dieter W. Storr -- info@storrconsulting.com
ADAMER LOAD 16:35:10 ***** P R E D I C T 4.3.2 ***** 2006-08-22 - Modify Adabas attributes - File ID ......... TEST-BROY Added 2005-02-28 at 13:18 Contained in DA . TEST by M197/9 PDBnr ........... 200 PFnr ... 168 ADAM descriptor definition Field ID ........* Parm ............. Overflow ......... Additional attributes ..* S Dieter W. Storr -- info@storrconsulting.com
ADAMER Disadvantages ADAM key is not unique • Determine DS block with ADAM routine • Search DS block in buffer pool • DS block is not in buffer pool • DATA I/O to copy block into buffer pool • DS block not found • Access via normal descriptor in ASSO Dieter W. Storr -- info@storrconsulting.com
ADAMER Disadvantages ADAM key is not unique – cont’ • Search ASSO block in buffer pool • ASSO I/O to copy block into buffer pool • Found DE with ISN? • NO: record not found • YES: read AC and translate ISN to RABN • AC is normally in buffer pool, no I/O Dieter W. Storr -- info@storrconsulting.com
ADAMER Disadvantages ADAM key is not unique – cont’ • Access to DS overflow area • DS overflow area not in buffer pool • DATA I/O to copy block into buffer pool • Record is ready to be displayed Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptors • How it works • Hyperdescriptor Exits • What Approach • Pros and Cons Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit – Nucleus ADANUC HyperDE Exit ASSO DATA Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exits DDCARD Assembler routines located on a concatenated ADABAS load library. <snip> ADARUN DUALPLS=13500 ADARUN FASTPATH=NO ADARUN FMXIO=16 ADARUN HEX01=HYPEX001 ADARUN HEX02=HYPEX002 ADARUN INTNAS=3432 ADARUN LBP=288000000 <snip> Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit – Compress ADACMP HyperDE Exit ADALOD ASSO DATA Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exits -- ADACMP DDCARD <snip> ADARUN DBID=919,SVC=254 ADARUN DEVICE=9990,LP=65535 ADARUN PROGRAM=ADACMP ADARUN HEX01=HYPEX001 ADARUN MODE=MULTI <snip> Exit 1 assembler routine located on a load library, which is part of the ADACMP JCL Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exits – ADACMP DDKARTE ADACMP COMPRESS ADACMP FNDEF='01,AA,7,A,DE,FI' Field AA ADACMP FNDEF='01,AB,15,A,DE,MU,NU' Field AB ADACMP FNDEF='01,GA' Group GA ADACMP FNDEF='02,AC,15,A,NU' Field AC ADACMP FNDEF='02,AD,2,P,FI' Field AD ADACMP FNDEF='02,AE,5,P,NU' Field AE ADACMP FNDEF='02,AF,6,W' Field AF ADACMP COLDE='7,Y1=AF' Collation descriptor Y1 ADACMP SUBDE='BB=AA(1,4)' Subdescriptor BB ADACMP SUPDE='CC=AA(1,4),AD(1,1)' Superdescriptor CC ADACMP HYPDE='1,DD,4,A,MU=AB,AC,AD‘ Hyperdescriptor DD ADACMP PHONDE='EE(AA)' Phonetic descriptor EE ADACMP SUBFN='FF=AA(1,2)' Subfield FF ADACMP SUPFN='GG=AA(1,4),AD(1,1)' Superfield GG Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit – ADAINV ADAINV ADANUC HyperDE Exit ASSO DATA Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exits -- ADAINV DDCARD <snip> ADARUN PROGRAM=ADAINV ADARUN HEX01=HYPEX001 ADARUN MODE=MULTI <snip> Uses exit located in ADABAS nucleus Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exits – ADAINV DDKARTE ADAINV INVERT FILE=xxx ADAINV TEMPSIZE=100,SORTSIZE=50 ADAINV HYPDE='1,DD,4,A,MU=AB,AC,AD‘ DD is assigned to hyperexit 1 HyperDE DD (A4) consisting of fields AB,AC and AD Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor ExitInput Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor ExitOutput Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit -- Assembler Example ADABAS.ADA742.SRCE(USERHX01) ADABAS.ADA811.SRCE(USERHX01) 000021 * SAMPLE HYPER-EXIT ROUTINE TO BE USED TOGETHER WITH 000022 * FILE 2 (AUTOMOBILES) TO CREATE THE VALUES FOR THE 000023 * HYPERDESCRIPTOR HA: 000025 * HYPDE='1,HA,20,A,MU,NU=AA,AB,AC' 000027 * WHERE: 000029 * FNDEF='1,AA,20,A,NU' 000030 * FNDEF='1,AB,20,A,NU' 000031 * FNDEF='1,AC,15,A,NU' 000033 * THE FIELDS 'AA','AB' AND 'AC' CONTAINS THE 'MAKE','MODEL' 000034 * AND THE 'BODY'-DESCRIPTION OF A CAR. THE VALUES OF THOSE 000035 * FIELDS MAY CONSIST OF TWO VERBS DELIMITED BY A BLANK. 000036 * E.G. AA='GENERAL MOTORS'. Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit – UNIX/Win Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit – UNIX/Win Control Block Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit – UNIX/Win The routines should be written in the C programming language. The user must be present as a dynamic shared library. hy_mode = HY_REENTRANT hy_dlng = data transfer buffer length hy_xlng = index transfer buffer length hy_ilng = isn transfer buffer length (0 = not used) hy_plng = periodic transfer buffer length (0 = not used) hy_flng = optional: own FB length (0 = not used) hy_fptr = optional: own FB <snip> See ADABAS 5.1.3 Manual, User Exits and Hyperexits Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit Exit only called for update commands, for example STORE, UPDATE Not used for READ / FIND / HISTOGRAM 3.3 / 6.2 / 7.1 / 7.4 zaps @ SL24 Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Create "Superdescriptor" from more than 5 / 20 basic fields • Example from a German company • ADA51: Not clear how to handle NU fields • Field is in input parameter but leave the exit w/o filling the output parameter – why NU in hyper definition? • Customer wishes better documentation and more examples Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Create "Superdescriptor" from variable numbers of basic fields • Example from SAG-NA Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Create "Superdescriptor" from variable numbers of basic fields and files • Example from SAG-NA Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Translate from lower to upper case • Example from the Swiss government Bern • Store info in upper/lower case • For search in upper case only Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Translate from lower to upper case and “Umlaute” • Example from a German company, Bremen • ä/Ä = AE, ü/Ü = UE, ß = SS, ö/Ö = OE • Store info in upper case • Can be sorted • Predict: define as HY Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Create complementary values • Example from SAG-NA • Numeric values can be read in descending order • Since ADA6 hyperexit is no longer necessary:READ IN DESCENDING ORDER Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Create special phonetic descriptors • Summarize (compute) fields • Create calculation routines • Include compressed superdescriptors to build a hyperdescriptor Dieter W. Storr -- info@storrconsulting.com
Use of Hyperdescriptors • Create tables to check-out data • Build special descriptors for record types (entities) • Suppress values • Separate words • Build word groups Dieter W. Storr -- info@storrconsulting.com
Hyperdescriptor Exit ADA81:For extended MU/PU fields HEXV8V7 Must be linked with existing hyperdescriptor But: module not found inADABAS Version 8.1.0 (Beta Test II)ADABAS Version 8.1.1 (+ L002) Dieter W. Storr -- info@storrconsulting.com
File Coupling • Type • Logical Coupled Files • Physical Coupled Files • Soft Coupling • Natural Code • ADABAS Direct Calls • Pros and Cons Dieter W. Storr -- info@storrconsulting.com
File Coupling (0-N) belongs to SALESMEN #S-NR#A-NR#S-NAME#S-COMM AREA #A-NR#S-NR#A-TURNO points to (N C) Search salesmen with a commission of > 30% in an area with a planned turnover of more than 1 million. Dieter W. Storr -- info@storrconsulting.com
File Coupling (Two Views) DDM DBID 0 DDM FNR 235 SALESMEN T L DB Name F Leng S D Re - - -- ------------------- - ---- - - -- 1 AA S-NR N 5.0 N D 1 AB A-NR N 5.0 N D 1 AC S-NAME A 10 N 1 AD S-COMM N 3.0 N D DDM DBID 0 DDM FNR 236 AREA 1 AA A-NR N 5.0 N D 1 AB S-NR N 5.0 N D 1 AC A-TURNO N 8.0 N D Dieter W. Storr -- info@storrconsulting.com
Coupled Files (Logical) 0010 DEFINE DATA 0020 LOCAL USING LDA12345 /* two views 0030 END-DEFINE 0040 FIND SALESMEN WITH S-COMM = 30 0050 FIND AREA WITH AREA.S-NR = SALESMEN.S-NR 0060 AND A-TURNO > 1000000 0070 WRITE /* TITLE 'Logical coupled - 2 FINDs' 0080 / 'Logical Coupled - 2 FINDs' 0090 / '=========================' / 0100 / 'S-NR from SALESMEN:' SALESMEN.S-NR 0110 / 'A-NR from SALESMEN:' SALESMEN.A-NR 0120 / 'S-NAME from SALESMEN:' SALESMEN.S-NAME 0130 / 'S-COMM from SALESMEN:' SALESMEN.S-COMM 0140 / 'S-NR from AREA....:' AREA.S-NR 0150 / 'A-NR from AREA....:' AREA.A-NR 0160 / 'A-TURNO from AREA....:' AREA.A-TURNO 0170 / 'ISN from SALESMEN...:' *ISN(0040) 0180 / 'ISN from AREA.......:' *ISN(0050) 0190 END-FIND 0200 END-FIND Dieter W. Storr -- info@storrconsulting.com
Coupled Files (Logical) Logical Coupled - 2 FINDs ========================= S-NR from SALESMEN: 29 A-NR from SALESMEN: 79 S-NAME from SALESMEN: HUGO00029 S-COMM from SALESMEN: 30 S-NR from AREA....: 29 A-NR from AREA....: 79 A-TURNO from AREA....: 1000001 ISN from SALESMEN...: 15 ISN from AREA.......: 15 Dieter W. Storr -- info@storrconsulting.com
17:05:35 ***** NATURAL TEST UTILITIES ***** 2006-06-29 User ZINDWS - DBLOG Menu - Library LBZINDWS Code Function B Begin Logging of Adabas Commands E End and Display Log Records S Snapshot of Specific Adabas Commands . Exit Code .. b Command .. _Skip ....... _ Program .... COUPLLOG DBID ..... _FNR ........ _ Line from .. 0000 Low Resp . _High Resp .. 9999_Line to .... 0000 Optional Buffers for Code B FB .. x RB .. x SB .. x VB .. x IB .. _ TEST DBLOG MENU Dieter W. Storr -- info@storrconsulting.com
Coupled Files (Logical) No Cmd DB FNR Rsp ISN ISQ 1 S1 200 235 15 1 2 S1 200 236 15 1 3 RC 200 Dieter W. Storr -- info@storrconsulting.com
Coupled Files (Logical) TEST DBLOG MENU: SALESMEN File 235: Search Buffer: AD,3,U. Value Buffer: 030 Format Buffer: AA,005,U,AB,005,U,AC,010,A,AD,003,U. AREA File 236: Search Buffer: AB,5,U,D,AC,8,U,GT. Value Buffer: 0002901000000 Format Buffer: AA,005,U,AB,005,U,AC,008,U. S-NR S-NR Dieter W. Storr -- info@storrconsulting.com
Coupled Files (Logical) Dieter W. Storr -- info@storrconsulting.com