adabas

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2019 License: Apache-2.0 Imports: 20 Imported by: 1

Documentation

Overview

Package adabas contains Adabas specific Adabas buffer conversion and call functions. The Adabas file metadata will be read and requested field content is returned. The package provides three type of access to the database.

  1. The local access using the Adabas client native library. This uses the classic inter process communication method
  2. The Entire Network remote data access using the Entire Network server and corresponding infrastructure
  3. The new Adabas TCP/IP communication for a direct point-to-point access to the database

Index

Examples

Constants

View Source
const (
	// AdaNormal Adabas success response code
	AdaNormal = 0
	// AdaEOF Adabas End of File reached (End of data received)
	AdaEOF = 3
	// AdaRbts Adabas record buffer too short
	AdaRbts = 53
	// AdaAnact Adabas offline
	AdaAnact = 148
	// AdaSysCe Adabas remote connection problem
	AdaSysCe = 149
)
View Source
const (
	AbdAQFb = ('F') /*      F-Format Buffer             */
	AbdAQRb = ('R') /*      R-Record Buffer             */
	AbdAQSb = ('S') /*      S-Search Buffer             */
	AbdAQVb = ('V') /*      V-Value Buffer              */
	AbdAQIb = ('I') /*      I-ISN Buffer                */
	AbdAQPb = ('P') /*      Performance Buffer          */
	AbdAQMb = ('M') /*      Multifetch  Buffer          */
	AbdAQUi = ('U') /*      U-User Info                 */
	AbdAQOb = ('O') /*      I/O Buffer (internal)       */
	AbdAQXb = ('X') /*      CLEX Info Buffer (internal) */
	AbdAQZb = ('Z') /*      Security Buffer (internal)  */
	AbdEQFb = 0xc6  /* EBCDIC F-Format Buffer           */
	AbdEQRb = 0xd9  /* EBCDIC R-Record Buffer           */
	AbdEQSb = 0xe2  /* EBCDIC S-Search Buffer           */
	AbdEQVb = 0xe5  /* EBCDIC V-Value Buffer            */
	AbdEQIb = 0xc9  /* EBCDIC I-ISN Buffer              */
	AbdEQPb = 0xd7  /* EBCDIC Performance Buffer        */
	AbdEQMb = 0xd4  /* EBCDIC Multifetch  Buffer        */
	AbdEQUi = 0xe4  /* EBCDIC User Info                 */
	AbdEQOb = 0xd6  /* EBCDIC I/O Buffer (internal)     */
	ABdEQXb = 0xe7  /* EBCDIC CLEX Info Buffer          */
	AbdEQZb = 0xe9  /* EBCDIC Security Buffer           */

)

const E_ABD_EYECATCHER = 0xc7 /* EBCDIC G - EYECATCHER */ const E_ABD_VERSION = 0xf2 /* EBCDIC 2 - VERSION */

View Source
const (

	// ConnectRequest connect
	ConnectRequest = BufferType(1)
	// ConnectReply reply after first connect
	ConnectReply = BufferType(2)
	// ConnectError connection errror
	ConnectError = BufferType(3)
	// DisconnectRequest disconnect request
	DisconnectRequest = BufferType(4)
	// DisconnetReply disconnect reply
	DisconnetReply = BufferType(5)
	// DisconnectError disconnect error
	DisconnectError = BufferType(6)
	// DataRequest data request
	DataRequest = BufferType(7)
	// DataReply data reply
	DataReply = BufferType(8)
	// DataError data error
	DataError = BufferType(9)
)
View Source
const AdaTCPConnectPayloadLength = 72

AdaTCPConnectPayloadLength ADATCP connect payload

View Source
const AdaTCPDataHeaderLength = 24

AdaTCPDataHeaderLength length of AdaTCPDataHeader structure

View Source
const AdaTCPHeaderLength = 40

AdaTCPHeaderLength length of AdaTCPHeader structure

Variables

This section is empty.

Functions

func AddMapRepository

func AddMapRepository(adabas *Adabas, fnr uint32)

AddMapRepository add global map repository

func DelMapRepository

func DelMapRepository(adabas *Adabas, fnr uint32)

DelMapRepository delete global map repository

func Endian

func Endian() binary.ByteOrder

Endian current byte order of the client system

func ReflectSearch

func ReflectSearch(mapName string, t reflect.Type, connection *Connection, search string) ([]interface{}, error)

ReflectSearch search in map using a structure given

func ReflectStore

func ReflectStore(entries interface{}, connection *Connection, mapName string) error

ReflectStore use reflect map to store data

Types

type ADATCP

type ADATCP struct {
	// contains filtered or unexported fields
}

ADATCP TCP connection handle

func Connect

func Connect(url string, order binary.ByteOrder, user [8]byte, node [8]byte,
	pid uint32, timestamp uint64) (connection *ADATCP, err error)

Connect connect to remote TCP/IP Adabas nucleus

func (*ADATCP) Disconnect

func (connection *ADATCP) Disconnect() (err error)

Disconnect disconnect remote TCP/IP Adabas nucleus

func (*ADATCP) ReceiveData

func (connection *ADATCP) ReceiveData(buffer *bytes.Buffer) (nrAbdBuffers uint32, err error)

ReceiveData receive data from remote TCP/IP Adabas nucleus

func (*ADATCP) SendData

func (connection *ADATCP) SendData(buffer bytes.Buffer, nrAbdBuffers uint32) (err error)

SendData send data to remote TCP/IP Adabas nucleus

type AID

type AID struct {
	Node      [8]byte
	User      [8]byte
	Pid       uint32
	Timestamp uint64
	// contains filtered or unexported fields
}

AID Adabas id

type Abd

type Abd struct {
	Abdlen  uint16  /* +00  ABD Length                  */
	Abdver  [2]byte /* +02  Version:                    */
	Abdid   byte    /* +04  Buffer ID:                  */
	Abdrsv1 byte    /* +05  Reserved - must be 0x00     */
	Abdloc  byte    /* +06  Buffer location flag:       */
	Abdrsv2 [9]byte /* +07  Reserved - must be 0x00     */
	Abdsize uint64  /* +10  Buffer Size                 */
	Abdsend uint64  /* +18  Len to send to database     */
	Abdrecv uint64  /* +20  Len received from database  */

	Abdaddr uint64 /* +28  8 byte aligned 64bit Ptr    */

}

Abd Adabas Buffer definition. Representation of ABD structure in the GO environment.

type Acbx

type Acbx struct {
	Acbxtyp  byte         /* +00  ADALNK function code        */
	Acbxrsv1 byte         /* +01  Reserved - must be 0x00     */
	Acbxver  [2]byte      /* +02  Version:                    */
	Acbxlen  uint16       /* +04  ACBX Length                 */
	Acbxcmd  [2]byte      /* +06  Command Code                */
	Acbxrsv2 uint16       /* +08  Reserved - must be 0x00     */
	Acbxrsp  uint16       /* +0A  Response code               */
	Acbxcid  [4]byte      /* +0C  Command ID                  */
	Acbxdbid Dbid         /* +10  Database ID                 */
	Acbxfnr  uint32       /* +14  File number                 */
	Acbxisn  adatypes.Isn /* +18  ISN                         */
	Acbxisl  uint64       /* +20  ISN Lower Limit             */
	Acbxisq  uint64       /* +28  ISN Quantity                */
	Acbxcop  [8]byte      /* +30  Command option 1-8          */
	Acbxadd1 [8]byte      /* +38  Additions 1                 */
	Acbxadd2 [4]byte      /* +40  Additions 2                 */
	Acbxadd3 [8]byte      /* +44  Additions 3                 */
	Acbxadd4 [8]byte      /* +4C  Additions 4                 */
	Acbxadd5 [8]byte      /* +54  Additions 5 - (0x00)        */
	Acbxadd6 [8]byte      /* +5C  Additions 6                 */
	Acbxrsv3 [4]byte      /* +64  Reserved - must be 0x00     */
	Acbxerra uint64       /* +68  Error offset in buffer (64 bit)*/
	Acbxerrb [2]byte      /* +70  Error char field (FN)       */
	Acbxerrc uint16       /* +72  Error subcode               */
	Acbxerrd byte         /* +74  Error buffer ID             */
	Acbxerre byte         /* +75  Reserved for future use     */
	Acbxerrf uint16       /* +76  Error buffer seq num (per ID)*/
	Acbxsubr uint16       /* +78  Subcomp response code       */
	Acbxsubs uint16       /* +7A  Subcomp response subcode    */
	Acbxsubt [4]byte      /* +7C  Subcomp error text          */
	Acbxlcmp uint64       /* +80  Compressed record length    */
	/*      (negative of length if not  */
	/*      all of record read)         */
	Acbxldec uint64 /* +88  Decompressed length of all  */
	/*      returned data               */
	Acbxcmdt     uint64   /* +90  Command time                */
	Acbxuser     [16]byte /* +98  User field                  */
	Acbxsesstime uint64   /* +A8  Time, part of Adabas Session ID*/
	Acbxrsv4     [16]byte /* +B0  Reserved - must be 0x00     */
}

Acbx Adabas Control block extended version

func (*Acbx) String

func (acbx *Acbx) String() string

type AdaTCPConnectPayload

type AdaTCPConnectPayload struct {
	DatabaseVersion [16]byte
	DatabaseName    [16]byte
	Userid          [8]byte
	Nodeid          [8]byte
	ProcessID       uint32
	DatabaseID      uint32
	TimeStamp       uint64
	Endianness      byte
	Charset         byte
	Floatingpoint   byte
	Filler          [5]byte
}

AdaTCPConnectPayload Adabas TCP connect payload

type AdaTCPDataHeader

type AdaTCPDataHeader struct {
	Eyecatcher      [4]byte
	Version         [4]byte
	Length          uint32
	DataType        uint32
	NumberOfBuffers uint32
	ErrorCode       uint32
}

AdaTCPDataHeader Adabas TCP header

type AdaTCPHeader

type AdaTCPHeader struct {
	Eyecatcher     [6]byte
	Version        [2]byte
	Length         uint32
	BufferType     BufferType
	Identification adaUUID
	ErrorCode      uint32
	Reserved       uint32
}

AdaTCPHeader Adabas TCP Header ADATCP

func NewAdatcpHeader

func NewAdatcpHeader(bufferType BufferType) AdaTCPHeader

NewAdatcpHeader new ADATCP header

type Adabas

type Adabas struct {
	URL *URL
	ID  *ID

	Acbx          *Acbx
	AdabasBuffers []*Buffer
	// contains filtered or unexported fields
}

Adabas is an main Adabas structure containing all call specific parameters

Example (ReadFileDefinition11)
f, err := initLogWithFile("adabas.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

adabas := NewAdabas(23)
adabas.ID.setUser("fdt")

fmt.Println("Open database")
err = adabas.Open()
if err != nil || adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Error: ", err, " ", adabas.Acbx.Acbxrsp)
}
defer adabas.Close()
fmt.Println("Read file definition")
var definition *adatypes.Definition
definition, err = adabas.ReadFileDefinition(11)
if adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Resonse code : ", adabas.Acbx.Acbxrsp)
	return
}
if err != nil {
	fmt.Println("Error: ", err)
	return
}
definition.DumpTypes(false, false)
Output:

Open database
Read file definition
Dump all file field types:
  1, AA, 8, A ,UQ DE ; AA  PE=false MU=false REMOVE=true
  1, AB  ; AB  PE=false MU=false REMOVE=true
    2, AC, 20, A ,NU ; AC  PE=false MU=false REMOVE=true
    2, AE, 20, A ,DE ; AE  PE=false MU=false REMOVE=true
    2, AD, 20, A ,NU ; AD  PE=false MU=false REMOVE=true
  1, AF, 1, A ,FI ; AF  PE=false MU=false REMOVE=true
  1, AG, 1, A ,FI ; AG  PE=false MU=false REMOVE=true
  1, AH, 4, P ,DE NC ; AH  PE=false MU=false REMOVE=true
  1, A1  ; A1  PE=false MU=true REMOVE=true
    2, AI, 20, A NU MU,MU; AI  PE=false MU=true REMOVE=true
      3, AI, 20, A ,NU MU ; AI  PE=false MU=true REMOVE=true
    2, AJ, 20, A ,NU DE ; AJ  PE=false MU=true REMOVE=true
    2, AK, 10, A ,NU ; AK  PE=false MU=true REMOVE=true
    2, AL, 3, A ,NU ; AL  PE=false MU=true REMOVE=true
  1, A2  ; A2  PE=false MU=false REMOVE=true
    2, AN, 6, A ,NU ; AN  PE=false MU=false REMOVE=true
    2, AM, 15, A ,NU ; AM  PE=false MU=false REMOVE=true
  1, AO, 6, A ,DE ; AO  PE=false MU=false REMOVE=true
  1, AP, 25, A ,NU DE ; AP  PE=false MU=false REMOVE=true
  1, AQ ,PE ; AQ  PE=true MU=true REMOVE=true
    2, AR, 3, A ,NU ; AR  PE=true MU=true REMOVE=true
    2, AS, 5, P ,NU ; AS  PE=true MU=true REMOVE=true
    2, AT, 5, P NU MU,MU; AT  PE=true MU=true REMOVE=true
      3, AT, 5, P ,NU MU ; AT  PE=true MU=true REMOVE=true
  1, A3  ; A3  PE=false MU=false REMOVE=true
    2, AU, 2, U  ; AU  PE=false MU=false REMOVE=true
    2, AV, 2, U ,NU ; AV  PE=false MU=false REMOVE=true
  1, AW ,PE ; AW  PE=true MU=false REMOVE=true
    2, AX, 8, U ,NU ; AX  PE=true MU=false REMOVE=true
    2, AY, 8, U ,NU ; AY  PE=true MU=false REMOVE=true
  1, AZ, 3, A NU DE MU,MU; AZ  PE=false MU=true REMOVE=true
    2, AZ, 3, A ,NU DE MU ; AZ  PE=false MU=true REMOVE=true
 PH=PHON(AE) ; PH  PE=false MU=false REMOVE=true
 H1=AU(1-2),AV(1-2) ; H1  PE=false MU=false REMOVE=true
 S1=AO(1-4) ; S1  PE=false MU=false REMOVE=true
 S2=AO(1-6),AE(1-20) ; S2  PE=false MU=false REMOVE=true
 S3=AR(1-3),AS(1-9) ; S3  PE=false MU=false REMOVE=true
Example (ReadFileDefinition9)
f, err := initLogWithFile("adabas.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

adabas := NewAdabas(23)
adabas.ID.setUser("fdt")

fmt.Println("Open database")
err = adabas.Open()
if err != nil || adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Error: ", err, " ", adabas.Acbx.Acbxrsp)
}
defer adabas.Close()
fmt.Println("Read file definition")
var definition *adatypes.Definition
definition, err = adabas.ReadFileDefinition(9)
if adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Resonse code : ", adabas.Acbx.Acbxrsp)
	return
}
if err != nil {
	fmt.Println("Error: ", err)
	return
}
definition.DumpTypes(false, false)
Output:

Open database
Read file definition
Dump all file field types:
  1, A0  ; A0  PE=false MU=false REMOVE=true
    2, AA, 8, A ,UQ DE NC NN ; AA  PE=false MU=false REMOVE=true
    2, AB  ; AB  PE=false MU=false REMOVE=true
      3, AC, 4, F ,DE ; AC  PE=false MU=false REMOVE=true
      3, AD, 8, B ,NU HF ; AD  PE=false MU=false REMOVE=true
      3, AE, 0, A ,NU NV NB ; AE  PE=false MU=false REMOVE=true
  1, B0  ; B0  PE=false MU=false REMOVE=true
    2, BA, 40, W ,NU ; BA  PE=false MU=false REMOVE=true
    2, BB, 40, W ,NU ; BB  PE=false MU=false REMOVE=true
    2, BC, 50, W ,NU DE ; BC  PE=false MU=false REMOVE=true
  1, CA, 1, A ,FI ; CA  PE=false MU=false REMOVE=true
  1, DA, 1, A ,FI ; DA  PE=false MU=false REMOVE=true
  1, EA, 4, P ,DE NC ; EA  PE=false MU=false REMOVE=true
  1, F0 ,PE ; F0  PE=true MU=true REMOVE=true
    2, FA, 60, W NU MU,MU; FA  PE=true MU=true REMOVE=true
      3, FA, 60, W ,NU MU ; FA  PE=true MU=true REMOVE=true
    2, FB, 40, W ,NU DE ; FB  PE=true MU=true REMOVE=true
    2, FC, 10, A ,NU ; FC  PE=true MU=true REMOVE=true
    2, FD, 3, A ,NU ; FD  PE=true MU=true REMOVE=true
    2, F1  ; F1  PE=true MU=true REMOVE=true
      3, FE, 6, A ,NU ; FE  PE=true MU=true REMOVE=true
      3, FF, 15, A ,NU ; FF  PE=true MU=true REMOVE=true
      3, FG, 15, A ,NU ; FG  PE=true MU=true REMOVE=true
      3, FH, 15, A ,NU ; FH  PE=true MU=true REMOVE=true
      3, FI, 80, A NU DE MU,MU; FI  PE=true MU=true REMOVE=true
        4, FI, 80, A ,NU DE MU ; FI  PE=true MU=true REMOVE=true
  1, I0 ,PE ; I0  PE=true MU=true REMOVE=true
    2, IA, 40, W NU MU,MU; IA  PE=true MU=true REMOVE=true
      3, IA, 40, W ,NU MU ; IA  PE=true MU=true REMOVE=true
    2, IB, 40, W ,NU DE ; IB  PE=true MU=true REMOVE=true
    2, IC, 10, A ,NU ; IC  PE=true MU=true REMOVE=true
    2, ID, 3, A ,NU ; ID  PE=true MU=true REMOVE=true
    2, IE, 5, A ,NU ; IE  PE=true MU=true REMOVE=true
    2, I1  ; I1  PE=true MU=true REMOVE=true
      3, IF, 6, A ,NU ; IF  PE=true MU=true REMOVE=true
      3, IG, 15, A ,NU ; IG  PE=true MU=true REMOVE=true
      3, IH, 15, A ,NU ; IH  PE=true MU=true REMOVE=true
      3, II, 15, A ,NU ; II  PE=true MU=true REMOVE=true
      3, IJ, 80, A NU DE MU,MU; IJ  PE=true MU=true REMOVE=true
        4, IJ, 80, A ,NU DE MU ; IJ  PE=true MU=true REMOVE=true
  1, JA, 6, A ,DE ; JA  PE=false MU=false REMOVE=true
  1, KA, 66, W ,NU DE ; KA  PE=false MU=false REMOVE=true
  1, L0 ,PE ; L0  PE=true MU=true REMOVE=true
    2, LA, 3, A ,NU ; LA  PE=true MU=true REMOVE=true
    2, LB, 6, P ,NU ; LB  PE=true MU=true REMOVE=true
    2, LC, 6, P NU DE MU,MU; LC  PE=true MU=true REMOVE=true
      3, LC, 6, P ,NU DE MU ; LC  PE=true MU=true REMOVE=true
  1, MA, 4, G ,NU ; MA  PE=false MU=false REMOVE=true
  1, N0  ; N0  PE=false MU=false REMOVE=true
    2, NA, 2, U  ; NA  PE=false MU=false REMOVE=true
    2, NB, 3, U ,NU ; NB  PE=false MU=false REMOVE=true
  1, O0 ,PE ; O0  PE=true MU=false REMOVE=true
    2, OA, 8, U ,NU DT=E(DATE) ; OA  PE=true MU=false REMOVE=true
    2, OB, 8, U ,NU DT=E(DATE) ; OB  PE=true MU=false REMOVE=true
  1, PA, 3, A NU DE MU,MU; PA  PE=false MU=true REMOVE=true
    2, PA, 3, A ,NU DE MU ; PA  PE=false MU=true REMOVE=true
  1, QA, 7, P  ; QA  PE=false MU=false REMOVE=true
  1, RA, 0, A ,NU NV NB ; RA  PE=false MU=false REMOVE=true
  1, S0 ,PE ; S0  PE=true MU=true REMOVE=true
    2, SA, 80, W ,NU ; SA  PE=true MU=true REMOVE=true
    2, SB, 3, A ,NU ; SB  PE=true MU=true REMOVE=true
    2, SC, 0, A NU NV NB MU,MU; SC  PE=true MU=true REMOVE=true
      3, SC, 0, A ,NU NV NB MU ; SC  PE=true MU=true REMOVE=true
  1, TC, 20, U ,SY=TIME DT=E(TIMESTAMP) ; TC  PE=false MU=false REMOVE=true
  1, TU, 20, U MU SY=TIME DT=E(TIMESTAMP),MU; TU  PE=false MU=true REMOVE=true
    2, TU, 20, U ,MU SY=TIME DT=E(TIMESTAMP) ; TU  PE=false MU=true REMOVE=true
 CN,HE=COLLATING(BC,'de@collation=phonebook',PRIMAR) ; CN  PE=false MU=false REMOVE=true
 H1=NA(1-2),NB(1-3) ; H1  PE=false MU=false REMOVE=true
 S1=JA(1-2) ; S1  PE=false MU=false REMOVE=true
 S2=JA(1-6),BC(1-40) ; S2  PE=false MU=false REMOVE=true
 S3=LA(1-3),LB(1-6) ; S3  PE=false MU=false REMOVE=true
 HO=REFINT(A,12,A/DC) ; HO  PE=false MU=false REMOVE=true
Example (ReadFileDefinition9RestrictF0)
f, err := initLogWithFile("adabas.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

adabas := NewAdabas(23)
adabas.ID.setUser("fdt")

fmt.Println("Open database")
err = adabas.Open()
if err != nil || adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Error: ", err, " ", adabas.Acbx.Acbxrsp)
}
defer adabas.Close()
fmt.Println("Read file definition")
var definition *adatypes.Definition
definition, err = adabas.ReadFileDefinition(9)
if adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Resonse code : ", adabas.Acbx.Acbxrsp)
	return
}
if err != nil {
	fmt.Println("Error: ", err)
	return
}
definition.ShouldRestrictToFields("AA,F0")
definition.DumpTypes(false, true)
Output:

Open database
Read file definition
Dump all active field types:
  1, A0  ; A0  PE=false MU=false REMOVE=true
    2, AA, 8, A ,UQ DE NC NN ; AA  PE=false MU=false REMOVE=false
  1, F0 ,PE ; F0  PE=true MU=true REMOVE=false
    2, FA, 60, W NU MU,MU; FA  PE=true MU=true REMOVE=false
      3, FA, 60, W ,NU MU ; FA  PE=true MU=true REMOVE=false
    2, FB, 40, W ,NU DE ; FB  PE=true MU=true REMOVE=false
    2, FC, 10, A ,NU ; FC  PE=true MU=true REMOVE=false
    2, FD, 3, A ,NU ; FD  PE=true MU=true REMOVE=false
    2, F1  ; F1  PE=true MU=true REMOVE=false
      3, FE, 6, A ,NU ; FE  PE=true MU=true REMOVE=false
      3, FF, 15, A ,NU ; FF  PE=true MU=true REMOVE=false
      3, FG, 15, A ,NU ; FG  PE=true MU=true REMOVE=false
      3, FH, 15, A ,NU ; FH  PE=true MU=true REMOVE=false
      3, FI, 80, A NU DE MU,MU; FI  PE=true MU=true REMOVE=false
        4, FI, 80, A ,NU DE MU ; FI  PE=true MU=true REMOVE=false
Example (ReadFileDefinition9Restricted)
f, err := initLogWithFile("adabas.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

adabas := NewAdabas(23)
adabas.ID.setUser("fdt")

fmt.Println("Open database")
err = adabas.Open()
if err != nil || adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Error: ", err, " ", adabas.Acbx.Acbxrsp)
}
defer adabas.Close()
fmt.Println("Read file definition")
var definition *adatypes.Definition
definition, err = adabas.ReadFileDefinition(9)
if adabas.Acbx.Acbxrsp != 0 {
	fmt.Println("Resonse code : ", adabas.Acbx.Acbxrsp)
	return
}
if err != nil {
	fmt.Println("Error: ", err)
	return
}
definition.ShouldRestrictToFields("A0,DA,L0")
definition.DumpTypes(false, true)
Output:

Open database
Read file definition
Dump all active field types:
  1, A0  ; A0  PE=false MU=false REMOVE=false
    2, AA, 8, A ,UQ DE NC NN ; AA  PE=false MU=false REMOVE=false
    2, AB  ; AB  PE=false MU=false REMOVE=false
      3, AC, 4, F ,DE ; AC  PE=false MU=false REMOVE=false
      3, AD, 8, B ,NU HF ; AD  PE=false MU=false REMOVE=false
      3, AE, 0, A ,NU NV NB ; AE  PE=false MU=false REMOVE=false
  1, DA, 1, A ,FI ; DA  PE=false MU=false REMOVE=false
  1, L0 ,PE ; L0  PE=true MU=true REMOVE=false
    2, LA, 3, A ,NU ; LA  PE=true MU=true REMOVE=false
    2, LB, 6, P ,NU ; LB  PE=true MU=true REMOVE=false
    2, LC, 6, P NU DE MU,MU; LC  PE=true MU=true REMOVE=false
      3, LC, 6, P ,NU DE MU ; LC  PE=true MU=true REMOVE=false
Example (ReadFileDefinitionMap)
f, err := initLogWithFile("adabas.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

connection, cerr := NewConnection("acj;map;config=[24,4]")
if cerr != nil {
	return
}
defer connection.Close()
request, rerr := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM")
if rerr != nil {
	fmt.Println("Error create request", rerr)
	return
}
err = request.QueryFields("NAME,FIRST-NAME,PERSONNEL-ID")
if err != nil {
	return
}
request.Limit = 0
result := &RequestResult{}
fmt.Println("Read logigcal data:")
err = request.ReadLogicalWithWithParser("PERSONNEL-ID=[11100314:11100317]", nil, result)
result.DumpValues()
Output:

Read logigcal data:
Dump all result values
Record Isn: 0393
  PERSONNEL-ID = > 11100314 <
  FULL-NAME = [ 1 ]
   FIRST-NAME = > WOLFGANG             <
   NAME = > SCHMIDT              <
Record Isn: 0261
  PERSONNEL-ID = > 11100315 <
  FULL-NAME = [ 1 ]
   FIRST-NAME = > GLORIA               <
   NAME = > MERTEN               <
Record Isn: 0262
  PERSONNEL-ID = > 11100316 <
  FULL-NAME = [ 1 ]
   FIRST-NAME = > HEINZ                <
   NAME = > RAMSER               <
Record Isn: 0263
  PERSONNEL-ID = > 11100317 <
  FULL-NAME = [ 1 ]
   FIRST-NAME = > ALFONS               <
   NAME = > DORSCH               <
Example (ReadFileDefinitionMapGroup)
f, err := initLogWithFile("adabas.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

connection, cerr := NewConnection("acj;map;config=[24,4]")
if cerr != nil {
	return
}
defer connection.Close()
request, rerr := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM")
if rerr != nil {
	fmt.Println("Error create request", rerr)
	return
}
err = request.QueryFields("FULL-NAME,PERSONNEL-ID,SALARY")
if err != nil {
	fmt.Println("Error query fields for request", err)
	return
}
request.Limit = 0
result := &RequestResult{}
fmt.Println("Read logigcal data:")
err = request.ReadLogicalWithWithParser("PERSONNEL-ID=[11100315:11100316]", nil, result)
if err != nil {
	fmt.Println("Error read logical data", err)
	return
}
result.DumpValues()
Output:

Read logigcal data:
Dump all result values
Record Isn: 0261
  PERSONNEL-ID = > 11100315 <
  FULL-NAME = [ 1 ]
   FIRST-NAME = > GLORIA               <
   NAME = > MERTEN               <
   MIDDLE-I = > E <
  INCOME = [ 2 ]
   SALARY[01] = > 19076 <
   SALARY[02] = > 18000 <
Record Isn: 0262
  PERSONNEL-ID = > 11100316 <
  FULL-NAME = [ 1 ]
   FIRST-NAME = > HEINZ                <
   NAME = > RAMSER               <
   MIDDLE-I = > E <
  INCOME = [ 1 ]
   SALARY[01] = > 28307 <
Example (ResetAcbx)
var acbx Acbx
acbx.resetAcbx()
acbx.Acbxcmd = et.code()
fmt.Println(acbx.String())
Output:

ACBX:
  CmdCode: ET  CmdId: 00000000
  Dbid: 0  Filenr: 0  Responsecode: 148 Subcode: 0
  Isn:  0  ISN Lower Limit:  0 ISN Quantity:  0
  CmdOption: 20 20 20 20 20 20 20 20  [        ] [........]
  Add1: 20 20 20 20 20 20 20 20  [        ] [........]
  Add2: 20 20 20 20  [    ] [....]
  Add3: 00 00 00 00 00 00 00 00  [........] [........]
  Add4: 00 00 00 00 00 00 00 00  [........] [........]
  Add5: 00 00 00 00 00 00 00 00  [........] [........]
  Add6: 00 00 00 00 00 00 00 00  [........] [........]
  User Area: 00000000000000000000000000000000 [................] [................]

func NewAdabas

func NewAdabas(dbid Dbid) *Adabas

NewAdabas create a new Adabas struct instance

func NewAdabasWithID

func NewAdabasWithID(target string, ID *ID) (*Adabas, error)

NewAdabasWithID create a new Adabas struct instance using string parameter

func NewAdabasWithURL

func NewAdabasWithURL(URL *URL, ID *ID) *Adabas

NewAdabasWithURL create a new Adabas struct instance

func NewAdabass

func NewAdabass(target string) (*Adabas, error)

NewAdabass create a new Adabas struct instance using string parameter

func NewClonedAdabas

func NewClonedAdabas(clone *Adabas) *Adabas

NewClonedAdabas create a cloned Adabas struct instance

func (*Adabas) ACBX

func (adabas *Adabas) ACBX() *Acbx

ACBX Current used ACBX

func (*Adabas) BackoutTransaction

func (adabas *Adabas) BackoutTransaction() (err error)

BackoutTransaction backout transaction initiated

func (*Adabas) CallAdabas

func (adabas *Adabas) CallAdabas() (err error)

CallAdabas this method sends the call to the database

func (*Adabas) Close

func (adabas *Adabas) Close()

Close A session to the database will be closed

func (*Adabas) DeleteIsn

func (adabas *Adabas) DeleteIsn(fileNr uint32, isn adatypes.Isn) (err error)

DeleteIsn delete a single isn

func (*Adabas) EndTransaction

func (adabas *Adabas) EndTransaction() (err error)

EndTransaction end of transaction initiated

func (*Adabas) Histogram

func (adabas *Adabas) Histogram(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)

Histogram histogram of a specific descriptor

func (*Adabas) IsRemote

func (adabas *Adabas) IsRemote() bool

IsRemote Indicate if the call uses WCL remote calls

func (*Adabas) Open

func (adabas *Adabas) Open() (err error)

Open opens a session to the database

func (*Adabas) ReadBuffer

func (adabas *Adabas) ReadBuffer(buffer *bytes.Buffer, order binary.ByteOrder, nCalBuf uint32, serverMode bool) (err error)

ReadBuffer read buffer and parse call

func (*Adabas) ReadFileDefinition

func (adabas *Adabas) ReadFileDefinition(fileNr uint32) (definition *adatypes.Definition, err error)

ReadFileDefinition Read file definition out of Adabas file

func (*Adabas) ReadLogicalWith

func (adabas *Adabas) ReadLogicalWith(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)

ReadLogicalWith Read logical using a descriptor

func (*Adabas) ReadPhysical

func (adabas *Adabas) ReadPhysical(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)

ReadPhysical read data in physical order

func (*Adabas) Release

func (adabas *Adabas) Release() (err error)

Release Any resource in the database of the session are released

func (*Adabas) SearchLogicalWith

func (adabas *Adabas) SearchLogicalWith(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)

SearchLogicalWith Search logical using a descriptor

func (*Adabas) SetAbd

func (adabas *Adabas) SetAbd(abd []*Buffer)

SetAbd Set ABD to adabas structure

func (*Adabas) SetDbid

func (adabas *Adabas) SetDbid(dbid Dbid)

SetDbid set new database id

func (*Adabas) Store

func (adabas *Adabas) Store(fileNr uint32, adabasRequest *adatypes.AdabasRequest) (err error)

Store store a record into database

func (*Adabas) String

func (adabas *Adabas) String() string

func (*Adabas) Update

func (adabas *Adabas) Update(fileNr uint32, adabasRequest *adatypes.AdabasRequest) (err error)

Update update a record in database

func (*Adabas) WriteBuffer

func (adabas *Adabas) WriteBuffer(buffer *bytes.Buffer, order binary.ByteOrder, serverMode bool) (err error)

WriteBuffer write adabas call to buffer

type Buffer

type Buffer struct {
	// contains filtered or unexported fields
}

Buffer Adabas Buffer overlay to combine the buffer itself with the Adabas buffer definition. It includes the current offset of the buffer.

func NewBuffer

func NewBuffer(id byte) *Buffer

NewBuffer Create a new buffer with given id

func (*Buffer) Allocate

func (adabasBuffer *Buffer) Allocate(size uint32)

Allocate allocate buffer of specified size

func (*Buffer) Bytes

func (adabasBuffer *Buffer) Bytes() []byte

Bytes receive buffer content

func (*Buffer) Clear

func (adabasBuffer *Buffer) Clear()

Clear buffer emptied

func (*Buffer) Received

func (adabasBuffer *Buffer) Received() uint64

Received Number of received bytes

func (*Buffer) String

func (adabasBuffer *Buffer) String() string

String common string representation of the Adabas buffer

func (*Buffer) WriteBinary

func (adabasBuffer *Buffer) WriteBinary(content []byte)

WriteBinary write binary slice into buffer

func (*Buffer) WriteString

func (adabasBuffer *Buffer) WriteString(content string)

WriteString write string intp buffer

type BufferType

type BufferType uint32

BufferType type of buffer following

type Connection

type Connection struct {
	ID ID
	// contains filtered or unexported fields
}

Connection Adabas connection context

func NewConnection

func NewConnection(connectionString string) (*Connection, error)

NewConnection create new Adabas connection instance The target url will look like <dbid>(<driver prefix>://<host>:<port>). Examples are:

  • Database id: 23
  • Adabas TCP on port 60023: 23(adatcp://pchost:60023)
  • Adabas Entire Network (Java only): 23(tcpip://pchost:50001)

The connection string must contain:

  • To access database classic targets acj;target=<database url>
  • Map usage acj;map;config=[<dbid>,<file>]

func NewConnectionID

func NewConnectionID(connectionString string, adabasID *ID) (connection *Connection, err error)

NewConnectionID create new Adabas connection instance providing a Adabas ID The target url will look like <dbid>(<driver prefix>://<host>:<port>). Examples are:

  • Database id: 23
  • Adabas TCP on port 60023: 23(adatcp://pchost:60023)
  • Adabas Entire Network (Java only): 23(tcpip://pchost:50001)

The connection string must contain:

  • To access database classic targets acj;target=<database url>
  • Map usage acj;map;config=[<dbid>,<file>]

func (*Connection) Close

func (connection *Connection) Close()

Close close Adabas session

func (*Connection) CreateDeleteRequest

func (connection *Connection) CreateDeleteRequest(fnr uint32) (*DeleteRequest, error)

CreateDeleteRequest create a delete request

func (*Connection) CreateMapDeleteRequest

func (connection *Connection) CreateMapDeleteRequest(mapName string) (request *DeleteRequest, err error)

CreateMapDeleteRequest create a read request using a given map

func (*Connection) CreateMapReadRequest

func (connection *Connection) CreateMapReadRequest(mapName string) (request *ReadRequest, err error)

CreateMapReadRequest create a read request using a given map

func (*Connection) CreateMapStoreRequest

func (connection *Connection) CreateMapStoreRequest(mapName string) (request *StoreRequest, err error)

CreateMapStoreRequest create a store request using map name

func (*Connection) CreateReadRequest

func (connection *Connection) CreateReadRequest(fnr uint32) (*ReadRequest, error)

CreateReadRequest create a read request

func (*Connection) CreateStoreRequest

func (connection *Connection) CreateStoreRequest(fnr uint32) (*StoreRequest, error)

CreateStoreRequest create a store request

func (*Connection) EndTransaction

func (connection *Connection) EndTransaction() error

EndTransaction current transaction is finally stored in the database

func (*Connection) Open

func (connection *Connection) Open() error

Open open Adabas session

func (*Connection) Release

func (connection *Connection) Release() error

Release any database resources, like command id caches assigned to a user

func (*Connection) String

func (connection *Connection) String() string

String provide the string representation of the connection

type DatabaseURL

type DatabaseURL struct {
	URL URL    `json:"Target"`
	Fnr uint32 `json:"File"`
}

DatabaseURL defines the target URL of a database file. Might be a database data file or a map repository

type Dbid

type Dbid uint32

Dbid Adabas database identifier

type DeleteRequest

type DeleteRequest struct {
	// contains filtered or unexported fields
}

DeleteRequest request instance handling data store and update

func NewDeleteRequest

func NewDeleteRequest(url string, fnr uint32) *DeleteRequest

NewDeleteRequest create a new store Request instance

func NewDeleteRequestAdabas

func NewDeleteRequestAdabas(adabas *Adabas, fnr uint32) *DeleteRequest

NewDeleteRequestAdabas create a new Request instance

func NewMapDeleteRequest

func NewMapDeleteRequest(adabas *Adabas, adabasMap *Map) (request *DeleteRequest, err error)

NewMapDeleteRequest create a new Map Delete Request instance

func NewMapNameDeleteRequest

func NewMapNameDeleteRequest(adabas *Adabas, mapName string) (request *DeleteRequest, err error)

NewMapNameDeleteRequest create a new Request instance

func (*DeleteRequest) Close

func (request *DeleteRequest) Close()

Close closes the Adabas session

func (*DeleteRequest) Delete

func (deleteRequest *DeleteRequest) Delete(isn adatypes.Isn) (err error)

Delete delete a specific isn

func (*DeleteRequest) EndTransaction

func (request *DeleteRequest) EndTransaction() error

Close closes the Adabas session

func (*DeleteRequest) IsOpen

func (request *DeleteRequest) IsOpen() bool

IsOpen provide True if the database connection is opened

func (*DeleteRequest) Open

func (deleteRequest *DeleteRequest) Open() (err error)

Open Open the Adabas session

type Error

type Error struct {
	When        time.Time
	Code        string
	Message     string
	Response    uint16
	SubResponse uint16
	Addition2   [4]byte
}

Error error message with code and time

func NewError

func NewError(adbas *Adabas) *Error

NewError Create new Adabas errror

func (Error) Error

func (e Error) Error() string

Error error main interface function, providing message error code and message

type ID

type ID struct {
	// contains filtered or unexported fields
}

ID Adabas Id

func NewAdabasID

func NewAdabasID() *ID

NewAdabasID create a new Adabas ID instance

func (*ID) String

func (adaid *ID) String() string

String return string representation of Adabas ID

type Map

type Map struct {
	Name       string       `json:"Name"`
	Isn        adatypes.Isn `json:"Isn"`
	Repository *DatabaseURL
	Data       *DatabaseURL `json:"Data"`
	Fields     []*MapField  `json:"Fields"`
	// Time of last modification of the map
	ModificationTime []uint64
	// contains filtered or unexported fields
}

Map Adabas map structure defining repository where the Map is stored at

func NewAdabasMap

func NewAdabasMap(name string, repository *DatabaseURL) *Map

NewAdabasMap create new Adabas map instance

func ParseJSONFileForFields

func ParseJSONFileForFields(file *os.File) (mapList []*Map, err error)

ParseJSONFileForFields Parse JSON map export file

func SearchMapRepository

func SearchMapRepository(adabas *Adabas, mapName string) (adabasMap *Map, err error)

SearchMapRepository search in map repository for a specific map name

func (*Map) Store

func (adabasMap *Map) Store() error

Store stores the Adabas map in the given repository

func (*Map) String

func (adabasMap *Map) String() string

String report the Map repository, data reference and the fields mapping of a map

func (*Map) URL

func (adabasMap *Map) URL() *URL

URL current map data URL reference

type MapField

type MapField struct {
	ShortName   string `json:"ShortName"`
	LongName    string `json:"LongName"`
	Length      int32  `json:"FormatLength"`
	ContentType string `json:"ContentType"`
	FormatType  string `json:"FormatType"`
	Remarks     string
}

MapField Structure to define short name to long name mapping. In advance the DDM specific type formater like B for Boolean or N for NATDATE are available

type MapFile

type MapFile struct {
	Maps []*Map `json:"Maps"`
}

MapFile parse map JSON import/export files

type ReadRequest

type ReadRequest struct {
	Limit             uint64
	Multifetch        uint32
	RecordBufferShift uint32
	// contains filtered or unexported fields
}

ReadRequest request instance handling field query information

Example (BlendMap)
initLogWithFile("connection.log")
connection, cerr := NewConnection("acj;map;config=[24,4]")
if cerr != nil {
	return
}
defer connection.Close()
fmt.Println("Connection :", connection)
request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM")
if err != nil {
	fmt.Println("Error read map : ", err)
	return
}
fmt.Println("Connection :", connection)

fmt.Println("Limit query data:")
request.QueryFields("NAME,PERSONNEL-ID")
request.Limit = 2
result := &RequestResult{}
fmt.Println("Read logical data:")
err = request.ReadLogicalWithWithParser("PERSONNEL-ID=[11100301:11100303]", nil, result)
if err != nil {
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection : Target not defined
Connection : Map=EMPLOYEES-NAT-DDM Adabas url=24 fnr=0 connection file=11
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 0251
  PERSONNEL-ID = > 11100301 <
  FULL-NAME = [ 1 ]
   NAME = > BERGMANN             <
Record Isn: 0383
  PERSONNEL-ID = > 11100302 <
  FULL-NAME = [ 1 ]
   NAME = > HAIBACH              <
Example (File)
initLogWithFile("connection.log")
connection, cerr := NewConnection("acj;target=23")
if cerr != nil {
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(11)
if err != nil {
	fmt.Println("Error read map : ", err)
	return
}
fmt.Println("Connection : ", connection)

fmt.Println("Limit query data:")
request.QueryFields("AA,AB")
request.Limit = 2
result := &RequestResult{}
fmt.Println("Read logical data:")
err = request.ReadLogicalWithWithParser("AA=[11100301:11100303]", nil, result)
if err != nil {
	fmt.Println("Error reading", err)
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=23 fnr=0
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 0251
  AA = > 11100301 <
  AB = [ 1 ]
   AC = > HANS                 <
   AE = > BERGMANN             <
   AD = > WILHELM              <
Record Isn: 0383
  AA = > 11100302 <
  AB = [ 1 ]
   AC = > ROSWITHA             <
   AE = > HAIBACH              <
   AD = > ELLEN                <
Example (FileMf)
initLogWithFile("mainframe.log")
network := os.Getenv("ADAMFDBID")
if network == "" {
	fmt.Println("Mainframe database not defined")
	return
}
connection, cerr := NewConnection("acj;target=" + network)
if cerr != nil {
	fmt.Println("Connection to database error:", cerr)
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(1)
if err != nil {
	fmt.Println("Error creating read request : ", err)
	return
}
fmt.Println("Connection : ", connection)

fmt.Println("Limit query data:")
request.QueryFields("AA,AB")
request.Limit = 2
result := &RequestResult{}
fmt.Println("Read logical data:")
err = request.ReadLogicalWithWithParser("AA=[11100301:11100303]", nil, result)
if err != nil {
	fmt.Println("Error reading", err)
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=54712 fnr=0
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 0251
Record Quantity: 0003
  AA = > 11100301 <
  AB = [ 1 ]
   AC = > HANS                 <
   AE = > BERGMANN             <
   AD = > WILHELM              <
Record Isn: 0383
Record Quantity: 0003
  AA = > 11100302 <
  AB = [ 1 ]
   AC = > ROSWITHA             <
   AE = > HAIBACH              <
   AD = > ELLEN                <
Example (FileMfBorder)
initLogWithFile("mainframe.log")
network := os.Getenv("ADAMFDBID")
if network == "" {
	fmt.Println("Mainframe database not defined")
	return
}
connection, cerr := NewConnection("acj;target=" + network)
if cerr != nil {
	fmt.Println("Connection to database error:", cerr)
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(1)
if err != nil {
	fmt.Println("Error creating read request : ", err)
	return
}
fmt.Println("Connection : ", connection)

fmt.Println("Limit query data:")
request.QueryFields("AA,AB")
request.Limit = 2
result := &RequestResult{}
fmt.Println("Read logical data:")
err = request.ReadLogicalWithWithParser("AA=(11100301:11100303)", nil, result)
if err != nil {
	fmt.Println("Error reading", err)
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=54712 fnr=0
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 0383
Record Quantity: 0001
  AA = > 11100302 <
  AB = [ 1 ]
   AC = > ROSWITHA             <
   AE = > HAIBACH              <
   AD = > ELLEN                <
Example (FileMfNoMaximum)
initLogWithFile("mainframe.log")
network := os.Getenv("ADAMFDBID")
if network == "" {
	fmt.Println("Mainframe database not defined")
	return
}
connection, cerr := NewConnection("acj;target=" + network)
if cerr != nil {
	fmt.Println("Connection to database error:", cerr)
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(1)
if err != nil {
	fmt.Println("Error creating read request : ", err)
	return
}
fmt.Println("Connection : ", connection)

fmt.Println("Limit query data:")
request.QueryFields("AA,AB")
request.Limit = 2
result := &RequestResult{}
fmt.Println("Read logical data:")
err = request.ReadLogicalWithWithParser("AA=[1100301:11100303)", nil, result)
if err != nil {
	fmt.Println("Error reading", err)
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=54712 fnr=0
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 0204
Record Quantity: 0017
  AA = > 11100102 <
  AB = [ 1 ]
   AC = > EDGAR                <
   AE = > SCHINDLER            <
   AD = > PETER                <
Record Isn: 0205
Record Quantity: 0017
  AA = > 11100105 <
  AB = [ 1 ]
   AC = > CHRISTIAN            <
   AE = > SCHIRM               <
   AD = >                      <
Example (FileMfNoMinimum)
initLogWithFile("mainframe.log")
network := os.Getenv("ADAMFDBID")
if network == "" {
	fmt.Println("Mainframe database not defined")
	return
}
connection, cerr := NewConnection("acj;target=" + network)
if cerr != nil {
	fmt.Println("Connection to database error:", cerr)
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(1)
if err != nil {
	fmt.Println("Error creating read request : ", err)
	return
}
fmt.Println("Connection : ", connection)

fmt.Println("Limit query data:")
request.QueryFields("AA,AB")
request.Limit = 2
result := &RequestResult{}
fmt.Println("Read logical data:")
err = request.ReadLogicalWithWithParser("AA=(11100301:11100303]", nil, result)
if err != nil {
	fmt.Println("Error reading", err)
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=54712 fnr=0
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 0383
Record Quantity: 0002
  AA = > 11100302 <
  AB = [ 1 ]
   AC = > ROSWITHA             <
   AE = > HAIBACH              <
   AD = > ELLEN                <
Record Isn: 0252
Record Quantity: 0002
  AA = > 11100303 <
  AB = [ 1 ]
   AC = > KRISTINA             <
   AE = > FALTER               <
   AD = > MARIA                <
Example (HistogramWith)
f, err := initLogWithFile("request.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

adabas := NewAdabas(23)
request := NewRequestAdabas(adabas, 11)
defer request.Close()
result, err := request.HistogramWith("AA=20010100")
if err == nil {
	if result != nil {
		fmt.Println("Dump result received ...")
		result.DumpValues()
	}
} else {
	fmt.Println(err)
}
Output:

Dump result received ...
Dump all result values
Record Quantity: 0001
  AA = > 20010100 <
Example (Isn)
initLogWithFile("connection.log")
connection, cerr := NewConnection("acj;target=23")
if cerr != nil {
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(11)
if err != nil {
	fmt.Println("Error read map : ", err)
	return
}
fmt.Println("Connection : ", connection)

result := &RequestResult{}
fmt.Println("Read ISN 250:")
err = request.ReadISNWithParser(250, nil, result)
if err != nil {
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=23 fnr=0
Read ISN 250:
Result data:
Dump all result values
Record Isn: 0250
  AA = > 11222222 <
  AB = [ 1 ]
   AC = > ANTONIA              <
   AE = > MARTENS              <
   AD = > MARIA                <
  AF = > S <
  AG = > F <
  AH = > 713104 <
  A1 = [ 1 ]
   AI = [ 3 ]
    AI[01] = > C/O H.KOERBER        <
    AI[02] = > AM DORNKAMP 20       <
    AI[03] = > 4590 CLOPPENBURG     <
   AJ = > CLOPPENBURG          <
   AK = > 4590       <
   AL = > D   <
  A2 = [ 1 ]
   AN = > 04471  <
   AM = > 3082            <
  AO = > MGMT00 <
  AP = > DATENSCHUTZBEAUFTRAGTE    <
  AQ = [ 3 ]
   AR[01] = > EUR <
   AS[01] = > 29743 <
   AT[01] = [ 2 ]
    AT[01,01] = > 4615 <
    AT[01,02] = > 8000 <
   AR[02] = > EUR <
   AS[02] = > 22153 <
   AT[02] = [ 2 ]
    AT[02,01] = > 3589 <
    AT[02,02] = > 6000 <
   AR[03] = > EUR <
   AS[03] = > 20769 <
   AT[03] = [ 1 ]
    AT[03,01] = > 1538 <
  A3 = [ 1 ]
   AU = > 33 <
   AV = > 4 <
  AW = [ 2 ]
   AX[01] = > 19980701 <
   AY[01] = > 19980702 <
   AX[02] = > 19980811 <
   AY[02] = > 19980812 <
  AZ = [ 2 ]
   AZ[01] = > GER <
   AZ[02] = > TUR <
  PH = >  <
  H1 = > 3304 <
  S1 = > MGMT <
  S2 = > MGMT00MARTENS              <
  S3 = >  <
Example (Wide_character)
initLogWithFile("connection.log")
connection, cerr := NewConnection("acj;target=23")
if cerr != nil {
	return
}
defer connection.Close()
request, err := connection.CreateReadRequest(9)
if err != nil {
	fmt.Println("Error read map : ", err)
	return
}
fmt.Println("Connection : ", connection)

fmt.Println("Limit query data:")
request.QueryFields("B0,F0,KA")
request.Limit = 2
fmt.Println("Read logical data:")
result, rErr := request.ReadISN(1200)
if rErr != nil {
	fmt.Println("Error reading", rErr)
	return
}
fmt.Println("Result data:")
result.DumpValues()
result, rErr = request.ReadISN(1250)
if rErr != nil {
	fmt.Println("Error reading", rErr)
	return
}
fmt.Println("Result data:")
result.DumpValues()
result, rErr = request.ReadISN(1270)
if rErr != nil {
	fmt.Println("Error reading", rErr)
	return
}
fmt.Println("Result data:")
result.DumpValues()
Output:

Connection :  Adabas url=23 fnr=0
Limit query data:
Read logical data:
Result data:
Dump all result values
Record Isn: 1200
  B0 = [ 1 ]
   BA = > Karin                                    <
   BB = >                                          <
   BC = > Norlin                                             <
  F0 = [ 1 ]
   FA[01] = [ 1 ]
    FA[01,01] = >  Trångsund 4                                                <
   FB[01] = > STOCKHOLM                                <
   FC[01] = > 111 29     <
   FD[01] = > S   <
   F1[01] = [ 1 ]
    FE[01] = >  08    <
    FF[01] = > 659803          <
    FG[01] = >                 <
    FH[01] = >                 <
    FI[01] = [ 0 ]
  KA = > försäljningsrepresentant                                         <
Result data:
Dump all result values
Record Isn: 1250
  B0 = [ 1 ]
   BA = > Игорь                               <
   BB = > Петрович                         <
   BC = > Михайлов                                   <
  F0 = [ 1 ]
   FA[01] = [ 1 ]
    FA[01,01] = > Ивановская 26-5                                    <
   FB[01] = > Санкт-Петербург            <
   FC[01] = > 190202     <
   FD[01] = > RUS <
   F1[01] = [ 1 ]
    FE[01] = > 812    <
    FF[01] = > 8781132         <
    FG[01] = >                 <
    FH[01] = >                 <
    FI[01] = [ 0 ]
  KA = > директор                                                   <
Result data:
Dump all result values
Record Isn: 1270
  B0 = [ 1 ]
   BA = > महेश                             <
   BB = > जाधव                             <
   BC = > कुलदीप                                 <
  F0 = [ 1 ]
   FA[01] = [ 1 ]
    FA[01,01] = > 18-क/12 रानीगंज कैला                 <
   FB[01] = > जयपुर                          <
   FC[01] = > 302001     <
   FD[01] = > IND <
   F1[01] = [ 1 ]
    FE[01] = > 06726  <
    FF[01] = > 672309          <
    FG[01] = >                 <
    FH[01] = >                 <
    FI[01] = [ 0 ]
  KA = > रीसेपसणिस्त                                  <

func NewAdabasMapNameRequest

func NewAdabasMapNameRequest(adabas *Adabas, adabasMap *Map) (request *ReadRequest, err error)

NewAdabasMapNameRequest create a new Request instance

func NewMapNameRequest

func NewMapNameRequest(adabas *Adabas, mapName string) (request *ReadRequest, err error)

NewMapNameRequest create a new Request instance

func NewMapNameRequestRepo

func NewMapNameRequestRepo(mapName string, repository *Repository) (request *ReadRequest, err error)

NewMapNameRequestRepo create a new Request instance

func NewReadRequestCommon

func NewReadRequestCommon(commonRequest *commonRequest) *ReadRequest

NewReadRequestCommon create a request defined by another request (not even ReadRequest required)

func NewRequest

func NewRequest(url string, fnr uint32) *ReadRequest

NewRequest create a new Request instance

func NewRequestAdabas

func NewRequestAdabas(adabas *Adabas, fnr uint32) *ReadRequest

NewRequestAdabas create a new Request instance

func (*ReadRequest) Close

func (request *ReadRequest) Close()

Close closes the Adabas session

func (*ReadRequest) EndTransaction

func (request *ReadRequest) EndTransaction() error

Close closes the Adabas session

func (*ReadRequest) HistogramBy

func (request *ReadRequest) HistogramBy(descriptor string) (result *RequestResult, err error)

HistogramBy read a descriptor in a descriptor order

func (*ReadRequest) HistogramWith

func (request *ReadRequest) HistogramWith(search string) (result *RequestResult, err error)

HistogramWith read a descriptor given by a search criteria

func (*ReadRequest) IsOpen

func (request *ReadRequest) IsOpen() bool

IsOpen provide True if the database connection is opened

func (*ReadRequest) Open

func (request *ReadRequest) Open() (err error)

Open Open the Adabas session

func (*ReadRequest) QueryFields

func (request *ReadRequest) QueryFields(fields string) (err error)

QueryFields define the fields queried in that request

func (*ReadRequest) ReadISN

func (request *ReadRequest) ReadISN(isn adatypes.Isn) (result *RequestResult, err error)

ReadISN read records defined by a given ISN

func (*ReadRequest) ReadISNWithParser

func (request *ReadRequest) ReadISNWithParser(isn adatypes.Isn, resultParser adatypes.RequestParser, x interface{}) (err error)

ReadISNWithParser read record defined by a ISN using request parser

func (*ReadRequest) ReadLogicalBy

func (request *ReadRequest) ReadLogicalBy(descriptors string) (result *RequestResult, err error)

ReadLogicalBy read in logical order given by the descriptor argument

Example
f, err := initLogWithFile("request.log")
if err != nil {
	fmt.Println(err)
	return
}
defer f.Close()

adabas := NewAdabas(23)
request := NewRequestAdabas(adabas, 11)
defer request.Close()
request.Limit = 2
request.QueryFields("AA,AC,AD")
result := &RequestResult{}
err = request.ReadLogicalByWithParser("AA", nil, result)
fmt.Println("Dump result received ...")
if result != nil {
	result.DumpValues()
}
Output:

Dump result received ...
Dump all result values
Record Isn: 0204
  AA = > 11100102 <
  AB = [ 1 ]
   AC = > EDGAR                <
   AD = > PETER                <
Record Isn: 0205
  AA = > 11100105 <
  AB = [ 1 ]
   AC = > CHRISTIAN            <
   AD = >                      <

func (*ReadRequest) ReadLogicalByWithParser

func (request *ReadRequest) ReadLogicalByWithParser(descriptors string, resultParser adatypes.RequestParser, x interface{}) (err error)

ReadLogicalByWithParser read in logical order given by the descriptor argument

func (*ReadRequest) ReadLogicalWith

func (request *ReadRequest) ReadLogicalWith(search string) (result *RequestResult, err error)

ReadLogicalWith read records with a logical order given by a search string

func (*ReadRequest) ReadLogicalWithWithParser

func (request *ReadRequest) ReadLogicalWithWithParser(search string, resultParser adatypes.RequestParser, x interface{}) (err error)

ReadLogicalWithWithParser read records with a logical order given by a search string

func (*ReadRequest) ReadPhysicalSequence

func (request *ReadRequest) ReadPhysicalSequence() (result *RequestResult, err error)

ReadPhysicalSequence read records in physical order

func (*ReadRequest) ReadPhysicalSequenceWithParser

func (request *ReadRequest) ReadPhysicalSequenceWithParser(resultParser adatypes.RequestParser, x interface{}) (err error)

ReadPhysicalSequenceWithParser read records in physical order

type Repository

type Repository struct {
	DatabaseURL
	MapNames   map[string]adatypes.Isn
	CachedMaps map[string]*Map
}

Repository Adabas Map repository container

func NewMapRepository

func NewMapRepository(adabas *Adabas, fnr uint32) *Repository

NewMapRepository new map repository created

func (*Repository) ImportMapRepository

func (repository *Repository) ImportMapRepository(adabas *Adabas, filter string,
	fileName string, mapURL *DatabaseURL) (maps []*Map, err error)

ImportMapRepository import map by file import

func (*Repository) LoadAllMaps

func (repository *Repository) LoadAllMaps(adabas *Adabas) (adabasMaps []*Map, err error)

LoadAllMaps load all map out of specific map repository

func (*Repository) LoadMapRepository

func (repository *Repository) LoadMapRepository(adabas *Adabas) (err error)

LoadMapRepository create a new repository

func (*Repository) LoadMaps

func (repository *Repository) LoadMaps() error

LoadMaps create a new repository

func (*Repository) LoadRepositoryMapsWithAdabas

func (repository *Repository) LoadRepositoryMapsWithAdabas(adabas *Adabas) (err error)

LoadRepositoryMapsWithAdabas read on index the names of all Adabas maps into memory

func (*Repository) SearchMap

func (repository *Repository) SearchMap(adabas *Adabas, mapName string) (adabasMap *Map, err error)

SearchMap search map name in specific map repository

func (*Repository) SearchMapInRepository

func (repository *Repository) SearchMapInRepository(adabas *Adabas, mapName string) (adabasMap *Map, err error)

SearchMapInRepository search map name in specific map repository

type RequestResult

type RequestResult struct {
	XMLName xml.Name        `xml:"Response" json:"-"`
	Values  []*ResultRecord `xml:"Record" json:"Record"`
}

RequestResult contains the result information of the request

func (*RequestResult) DumpValues

func (requestResult *RequestResult) DumpValues() (err error)

DumpValues traverse through the tree of values calling a callback method

func (*RequestResult) Isn

func (requestResult *RequestResult) Isn(isn adatypes.Isn) *ResultRecord

Isn Search for record with given ISN

func (*RequestResult) MarshalJSON

func (requestResult *RequestResult) MarshalJSON() ([]byte, error)

MarshalJSON provide JSON

func (*RequestResult) MarshalXML

func (requestResult *RequestResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML provide XML

func (*RequestResult) NrRecords

func (requestResult *RequestResult) NrRecords() int

NrRecords number of records in the result

func (*RequestResult) String

func (requestResult *RequestResult) String() string

func (*RequestResult) TraverseValues

func (requestResult *RequestResult) TraverseValues(t adatypes.TraverserValuesMethods, x interface{}) (ret adatypes.TraverseResult, err error)

TraverseValues traverse through the tree of values calling a callback method

type ResultRecord

type ResultRecord struct {
	Isn adatypes.Isn `xml:"Isn,attr"`

	Value      []adatypes.IAdaValue
	HashFields map[string]adatypes.IAdaValue `xml:"-" json:"-"`
	// contains filtered or unexported fields
}

ResultRecord one result record of the result

func NewResultRecord

func NewResultRecord(definition *adatypes.Definition) (*ResultRecord, error)

NewResultRecord new result record

func NewResultRecordIsn

func NewResultRecordIsn(isn adatypes.Isn, isnQuantity uint64, definition *adatypes.Definition) (*ResultRecord, error)

NewResultRecordIsn new result record with ISN or ISN quantity

func (*ResultRecord) DumpValues

func (record *ResultRecord) DumpValues()

DumpValues traverse through the tree of values calling a callback method

func (*ResultRecord) MarshalJSON

func (record *ResultRecord) MarshalJSON() ([]byte, error)

MarshalJSON provide JSON

func (*ResultRecord) MarshalXML

func (record *ResultRecord) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML provide XML

func (*ResultRecord) SearchValue

func (record *ResultRecord) SearchValue(name string) (adatypes.IAdaValue, error)

SearchValue search value in the tree

func (*ResultRecord) SearchValueIndex

func (record *ResultRecord) SearchValueIndex(name string, index []uint32) (adatypes.IAdaValue, error)

SearchValueIndex search value in the tree with a given index

func (*ResultRecord) SetValue

func (record *ResultRecord) SetValue(field string, value interface{}) (err error)

SetValue set the value for a specific field

func (*ResultRecord) SetValueWithIndex

func (record *ResultRecord) SetValueWithIndex(name string, index []uint32, x interface{}) error

SetValueWithIndex Add value to an node element

func (*ResultRecord) String

func (record *ResultRecord) String() string

type Status

type Status struct {
	// contains filtered or unexported fields
}

Status of the referenced connection

type StoreRequest

type StoreRequest struct {
	// contains filtered or unexported fields
}

StoreRequest request instance handling data store and update

func NewAdabasMapNameStoreRequest

func NewAdabasMapNameStoreRequest(adabas *Adabas, adabasMap *Map) (request *StoreRequest, err error)

NewAdabasMapNameStoreRequest create new map name store request

func NewStoreRequest

func NewStoreRequest(url string, fnr uint32) *StoreRequest

NewStoreRequest create a new store Request instance

func NewStoreRequestAdabas

func NewStoreRequestAdabas(adabas *Adabas, fnr uint32) *StoreRequest

NewStoreRequestAdabas create a new Request instance

func (*StoreRequest) Close

func (request *StoreRequest) Close()

Close closes the Adabas session

func (*StoreRequest) CreateRecord

func (request *StoreRequest) CreateRecord() (record *ResultRecord, err error)

CreateRecord create a record for a special store request

func (*StoreRequest) EndTransaction

func (request *StoreRequest) EndTransaction() error

EndTransaction end of Adabas database transaction

func (*StoreRequest) Exchange

func (request *StoreRequest) Exchange(storeRecord *ResultRecord) error

Exchange exchange a record

func (*StoreRequest) IsOpen

func (request *StoreRequest) IsOpen() bool

IsOpen provide True if the database connection is opened

func (*StoreRequest) Open

func (request *StoreRequest) Open() (err error)

Open Open the Adabas session

func (*StoreRequest) Store

func (request *StoreRequest) Store(storeRecord *ResultRecord) error

Store store a record

func (*StoreRequest) StoreFields

func (request *StoreRequest) StoreFields(fields string) (err error)

StoreFields create record field definition for the next store

func (*StoreRequest) Update

func (request *StoreRequest) Update(storeRecord *ResultRecord) error

Update update a record

type URL

type URL struct {
	Dbid   Dbid
	Driver string
	Host   string
	Port   uint32
}

URL define the desination of the host. Possible types are

  • Local call with Driver="" and Port=0
  • Entire Network calls with Driver="tcpip" and corresponding host and port
  • Adabas TCP/IP calls with Driver="adatcp" and corresponding host and port

Dependent on the Driver the corresponding connection is used. To use the local call access the Adabas Client native library is used.

func (URL) String

func (URL URL) String() string

String Full reference of the URL, like 123(adatcp://hostname:port)

func (URL) URL

func (URL URL) URL() string

URL URL representation containing the TCP/IP host and port part only

func (*URL) UnmarshalJSON

func (URL *URL) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshal JSON code

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL