1 / 38

Adabas v8.1 Adabas Control Block Extended ACBX

orli
Télécharger la présentation

Adabas v8.1 Adabas Control Block Extended ACBX

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Adabas v8.1 Adabas Control Block Extended (ACBX) Becky Albin Chief IT Architect Becky.Albin@softwareagusa.com

    2. Adabas Architecture

    11. Enhanced Direct Call Interface Adabas Calling Procedure between V7 and V8

    12. Enhanced Direct Call Interface Adabas Calling Procedure between V7 and V8 User Exit 1 is replaced by User Exit 11 Original ACB still supported Nucleus runs in ACBX mode Conversion normally performed during router logic New Adalinks no longer be provided in source form New ACBX interface required only with new features Read the COMMAND REFERENCE manual It is recommended that the entire ACBX be set to binary ZEROS before a call is initiated

    13. Applications can pass either the ACB or ACBX Dependent upon v8 features being used Adabas nucleus only uses ACBX ACBX is 192 bytes Needed for RBL > 32K Needed for LOBs/Dynamic Variables Needed for EntireX v7.3 Long Messages Needed for multiple Record Buffer segments Adabas Control Block Extended Direct Call Interface

    14. Overlays removed DBID/Response Code Many new areas Format Buffers will map the Record Buffers; 1:1 Increased number of Command Option fields Increased number of Additions Field Increased size for User area Positioned for the future changes Adabas Control Block Extended Direct Call Interface

    20. ACB versus ACBX: ACBX has F2 at command code position of ACB now ACBXVER Rsp-22 if ACBX not supported ACB and ACBX have response code at same position ACBX has no buffer length fields Variable number of buffers

    21. ACB interface ? Adabas Parameter List (APL) Call ADABAS(ACB,FB,RB,SB,VB,IB,NatInfo)

    22. ACBX interface ? Adabas Parameter List Extended (APLX) Call ADABAS(ACBX,0,Token,ABDX-FB1,...,ABDX-RB3,ABDX-PB)

    23. Adabas Buffer Description (ABDX) Each ABDX describes one buffer Type (Format, Record, Search, Value, ISN, MultiFetch, User, Performance/Review) Length Address Needed because number and type of buffers now variable ABDX structure: For now, must set Send size = Buffer size for buffers to send to Adabas For calls with format buffer, specify corresponding FB-RB pairs

    25. Example: FB1 = DAL,4,B,DBL1-4,DCL1-3(1). FB2 = DB1-4,*,A,DA,50000. FB3 = DC1-3(1),*. May do first call without FB2/RB2 and FB3/RB3 to determine lengths of LOB values

    26. COBOL example (Mainframe): IDENTIFICATION DIVISION. PROGRAM-ID. COBACBX AUTHOR. BECKY ALBIN. ********** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. C01 IS TOP-OF-PAGE. INPUT-OUTPUT SECTION. FILE-CONTROL. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 ACBX. 05 ACBXTYP PIC S9(04) COMP VALUE +0. 05 ACBXVER PIC X(2) VALUE 'F2'. 05 ACBXLEN PIC S9(04) COMP VALUE +192. 05 ACBXCMD PIC X(02) VALUE SPACES. 05 ACBXRSV2 PIC S9(4) COMP VALUE +0. 05 ACBXRSP PIC S9(4) COMP VALUE +0. 05 ACBXCID PIC X(4) VALUE SPACES. 05 ACBXDBID PIC S9(8) COMP VALUE +0. 05 ACBXFNR PIC S9(8) COMP VALUE +0. 05 ACBXISNG PIC S9(8) COMP VALUE +0. 05 ACBXISN PIC S9(8) COMP VALUE +0. 05 ACBXISLG PIC S9(8) COMP VALUE +0. 05 ACBXISL PIC S9(8) COMP VALUE +0. 05 ACBXISQG PIC S9(8) COMP VALUE +0. 05 ACBXISQ PIC S9(8) COMP VALUE +0.

    27. COBOL example (Mainframe): 05 ACBXCOP1 PIC X(1) VALUE SPACE. 05 ACBXCOP2 PIC X(1) VALUE SPACE. 05 ACBXCOP3 PIC X(1) VALUE SPACE. 05 ACBXCOP4 PIC X(1) VALUE SPACE. 05 ACBXCOP5 PIC X(1) VALUE SPACE. 05 ACBXCOP6 PIC X(1) VALUE SPACE. 05 ACBXCOP7 PIC X(1) VALUE SPACE. 05 ACBXCOP8 PIC X(1) VALUE SPACE. 05 ACBXADD1 PIC X(8) VALUE SPACES. 05 ACBXADD2 PIC S9(8) COMP VALUE +0. 05 ACBXADD3 PIC X(8) VALUE SPACES. 05 ACBXADD4 PIC X(8) VALUE SPACES. 05 ACBXADD5 PIC X(8) VALUE SPACES. 05 ACBXADD6 PIC X(8) VALUE SPACES. 05 ACBXRSV3 PIC S9(8) COMP VALUE +0. 05 ACBXERRG PIC S9(8) COMP VALUE +0. 05 ACBXERRA PIC S9(8) COMP VALUE +0. 05 ACBXERRB PIC S9(4) COMP VALUE +0. 05 ACBXERRC PIC X(2) VALUE SPACES. 05 ACBXERRD PIC X(1) VALUE SPACE. 05 ACBXERRE PIC X(3) VALUE SPACES. 05 ACBXSUBR PIC S9(4) COMP VALUE +0. 05 ACBXSUBS PIC S9(4) COMP VALUE +0. 05 ACBXSUBT PIC X(4) VALUE SPACES. 05 ACBXLCMP PIC S9(16) COMP VALUE +0. 05 ACBXLDEC PIC S9(16) COMP VALUE +0. 05 ACBXCMDT PIC S9(16) COMP VALUE +0. 05 ACBXUSER PIC X(16) VALUE SPACES. 05 ACBXRSV4 PIC X(24) VALUE SPACES. *

    28. COBOL example (Mainframe): 01 FBABD. 05 FBABDLEN PIC S9(4) COMP VALUE +48. 05 FBABDVER PIC X(2) VALUE 'G2'. 05 FBABDID PIC X(1) VALUE 'F'. 05 FBABDRS1 PIC X(1) . 05 FBABDLOC PIC X(1) VALUE SPACE. 05 FBABDRS2 PIC X(1) . 05 FBABDRS3 PIC S9(8) COMP VALUE +0. 05 FBABDRS4 PIC S9(8) COMP VALUE +0. 05 FBABDSIZ PIC S9(16) COMP VALUE +0. 05 FBABDSND PIC S9(16) COMP VALUE +0. 05 FBABDRCV PIC S9(16) COMP VALUE +0. 05 FBABDRS5 PIC S9(8) COMP VALUE +0. 05 FBABDADR PIC S9(8) COMP VALUE +0. 05 FBCONT PIC X(20) VALUE SPACES. *

    29. COBOL example (Mainframe): 01 RBABD. 05 RBABDLEN PIC S9(4) COMP VALUE +48. 05 RBABDVER PIC X(2) VALUE 'G2'. 05 RBABDID PIC X(1) VALUE 'R'. 05 RBABDRS1 PIC X(1) . 05 RBABDLOC PIC X(1) VALUE SPACE. 05 RBABDRS2 PIC X(1) . 05 RBABDRS3 PIC S9(8) COMP VALUE +0. 05 RBABDRS4 PIC S9(8) COMP VALUE +0. 05 RBABDSIZ PIC S9(16) COMP VALUE +0. 05 RBABDSND PIC S9(16) COMP VALUE +0. 05 RBABDRCV PIC S9(16) COMP VALUE +0. 05 RBABDRS5 PIC S9(8) COMP VALUE +0. 05 RBABDADR PIC S9(8) COMP VALUE +0. 05 RBCONT PIC X(20) VALUE SPACES. * * 01 CB-RES PIC S9(8) COMP VALUE +0. 01 CB-REE PIC S9(8) COMP VALUE +0. *

    30. COBOL example (Mainframe): PROCEDURE DIVISION. INITIAL-SETUP. MOVE X'00' TO FBABDRS1. MOVE X'00' TO RBABDRS1. MOVE X'00' TO FBABDRS2. MOVE X'00' TO RBABDRS2. * * MOVE 238 TO ACBXDBID. MOVE 4 TO ACBXFNR. MOVE 'L2' TO ACBXCMD. MOVE 'L2L2' TO ACBXCID. MOVE 10 TO FBABDSIZ. MOVE 10 TO FBABDSND. MOVE 'AA.' TO FBCONT. MOVE 20 TO RBABDSIZ. MOVE 20 TO RBABDSND. PERFORM CALLACBXR 20 TIMES. *

    31. COBOL example (Mainframe): CLOSE-CMD. MOVE 238 TO ACBXDBID. MOVE 'CL' TO ACBXCMD. PERFORM CALLACBX. STOP RUN. * CALLACBX. CALL 'ADABAS' USING ACBX. IF ACBXRSP NOT EQUAL TO 0 PERFORM ERR-HAND. DISPLAY 'COMMAND CODE ' ACBXCMD * CALLACBXR. CALL 'ADABAS' USING ACBX, CB-RES, CB-REE, FBABD, RBABD. IF ACBXRSP EQUAL 3 THEN GO TO CLOSE-CMD. IF ACBXRSP NOT EQUAL TO 0 GO TO ERR-HAND. DISPLAY ACBXCMD ' CMD ' 'ISN= ' ACBXISN ' RECORD= ' RBCONT. * ERR-HAND. DISPLAY '===== ACBX CALL ERROR ===='. DISPLAY ACBXCMD. DISPLAY ACBXFNR. DISPLAY ACBXISN. DISPLAY ACBXERRC. *

    32. Output from COBOL example: L2 CMD ISN= 00000001 RECORD= 50005800 L2 CMD ISN= 00000002 RECORD= 50005600 L2 CMD ISN= 00000003 RECORD= 50005500 L2 CMD ISN= 00000004 RECORD= 50005300 L2 CMD ISN= 00000005 RECORD= 50004900 L2 CMD ISN= 00000006 RECORD= 50004600 L2 CMD ISN= 00000007 RECORD= 50004300 L2 CMD ISN= 00000008 RECORD= 50004200 L2 CMD ISN= 00000009 RECORD= 50004100 L2 CMD ISN= 00000010 RECORD= 50004000 L2 CMD ISN= 00000011 RECORD= 50003800 L2 CMD ISN= 00000012 RECORD= 50006900 L2 CMD ISN= 00000013 RECORD= 50007600 L2 CMD ISN= 00000014 RECORD= 50003700 L2 CMD ISN= 00000015 RECORD= 50003500 L2 CMD ISN= 00000016 RECORD= 50003300 L2 CMD ISN= 00000017 RECORD= 50003100 L2 CMD ISN= 00000018 RECORD= 50003000 L2 CMD ISN= 00000019 RECORD= 50002900 L2 CMD ISN= 00000020 RECORD= 50002700 COMMAND CODE CL

    33. How does Adalink distinguish between ACB call and ACBX call? If first parm points to control block with F2 at offset 2 ? ACBX call Otherwise, if valid command code at offset 2 ? ACB call On Mainframe: Must use Adalink from V8.1 to perform ACBX call Can use Adalink from V8.1 to perform ACB call Can use Adalink from previous versions to perform ACB call even for calls to V8.1 database Applications can switch between ACB and ACBX calls Dependent upon Adabas v8.1 features used RB > 32k (spanned records, LOBs, MUPEX)

    34. The following applies to Adabas on Mainframe Adabas router (ADASVC) supports clients sending ACB calls clients sending ACBX calls servers accepting only ACB calls (e.g., Adabas 7.4) servers accepting ACB and ACBX calls ACB calls as is (e.g., Net-Work 6.1) ACB calls translated (by router) to ACBX format (e.g., Adabas 8.1) ADASVC does not support translation of ACBX calls to ACB format

    35. When registering a server (MPM-0 call): Set CQHFLAG1.CQH1ACBE if server accepts ACB and ACBX calls Router translates ACB calls to ACBX format Used by Adabas 8.1 Additionally set CQHFLAG1.CQH1XACV if server wants ACB calls in ACB format (without translation to ACBX format) Used by Net-Work 6.1 Must run with ADASVC and ADAMPM of V8.1 When receiving a call: Router sets CQEFLAG.CQEFIUBE when call is in ACBX format Issue MPM-108 call (instead of MPM-8) to receive buffers Otherwise, call is in ACB format; issue MPM-8 to receive buffers

    36. When receiving calls with CQEFLAG.CQEFIUBE not set: MPM-8 call fills in IUB provided by caller (old structure) When receiving calls with CQEFLAG.CQEFIUBE set: MPM-108 call returns IUBE in attached buffers (new structure)

    37. Sample IUBE structure for call in ACBX format:

    38. Natural v4.2 on the Mainframe and Natural 6 on Open Systems supports both ACB & ACBX Performs mixed mode (switching between ACB & ACBX) Natural Trace example

    39. Software AG. Bright ideas, everywhere.

More Related