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.
- The local access using the Adabas client native library. This uses the classic inter process communication method
- The Entire Network remote data access using the Entire Network server and corresponding infrastructure
- The new Adabas TCP/IP communication for a direct point-to-point access to the database
Index ¶
- Constants
- func AddMapRepository(adabas *Adabas, fnr uint32)
- func DelMapRepository(adabas *Adabas, fnr uint32)
- func Endian() binary.ByteOrder
- func ReflectSearch(mapName string, t reflect.Type, connection *Connection, search string) ([]interface{}, error)
- func ReflectStore(entries interface{}, connection *Connection, mapName string) error
- type ADATCP
- type AID
- type Abd
- type Acbx
- type AdaTCPConnectPayload
- type AdaTCPDataHeader
- type AdaTCPHeader
- type Adabas
- func (adabas *Adabas) ACBX() *Acbx
- func (adabas *Adabas) BackoutTransaction() (err error)
- func (adabas *Adabas) CallAdabas() (err error)
- func (adabas *Adabas) Close()
- func (adabas *Adabas) DeleteIsn(fileNr uint32, isn adatypes.Isn) (err error)
- func (adabas *Adabas) EndTransaction() (err error)
- func (adabas *Adabas) Histogram(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)
- func (adabas *Adabas) IsRemote() bool
- func (adabas *Adabas) Open() (err error)
- func (adabas *Adabas) ReadBuffer(buffer *bytes.Buffer, order binary.ByteOrder, nCalBuf uint32, serverMode bool) (err error)
- func (adabas *Adabas) ReadFileDefinition(fileNr uint32) (definition *adatypes.Definition, err error)
- func (adabas *Adabas) ReadLogicalWith(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)
- func (adabas *Adabas) ReadPhysical(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)
- func (adabas *Adabas) Release() (err error)
- func (adabas *Adabas) SearchLogicalWith(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)
- func (adabas *Adabas) SetAbd(abd []*Buffer)
- func (adabas *Adabas) SetDbid(dbid Dbid)
- func (adabas *Adabas) Store(fileNr uint32, adabasRequest *adatypes.AdabasRequest) (err error)
- func (adabas *Adabas) String() string
- func (adabas *Adabas) Update(fileNr uint32, adabasRequest *adatypes.AdabasRequest) (err error)
- func (adabas *Adabas) WriteBuffer(buffer *bytes.Buffer, order binary.ByteOrder, serverMode bool) (err error)
- type Buffer
- func (adabasBuffer *Buffer) Allocate(size uint32)
- func (adabasBuffer *Buffer) Bytes() []byte
- func (adabasBuffer *Buffer) Clear()
- func (adabasBuffer *Buffer) Received() uint64
- func (adabasBuffer *Buffer) String() string
- func (adabasBuffer *Buffer) WriteBinary(content []byte)
- func (adabasBuffer *Buffer) WriteString(content string)
- type BufferType
- type Connection
- func (connection *Connection) Close()
- func (connection *Connection) CreateDeleteRequest(fnr uint32) (*DeleteRequest, error)
- func (connection *Connection) CreateMapDeleteRequest(mapName string) (request *DeleteRequest, err error)
- func (connection *Connection) CreateMapReadRequest(mapName string) (request *ReadRequest, err error)
- func (connection *Connection) CreateMapStoreRequest(mapName string) (request *StoreRequest, err error)
- func (connection *Connection) CreateReadRequest(fnr uint32) (*ReadRequest, error)
- func (connection *Connection) CreateStoreRequest(fnr uint32) (*StoreRequest, error)
- func (connection *Connection) EndTransaction() error
- func (connection *Connection) Open() error
- func (connection *Connection) Release() error
- func (connection *Connection) String() string
- type DatabaseURL
- type Dbid
- type DeleteRequest
- func NewDeleteRequest(url string, fnr uint32) *DeleteRequest
- func NewDeleteRequestAdabas(adabas *Adabas, fnr uint32) *DeleteRequest
- func NewMapDeleteRequest(adabas *Adabas, adabasMap *Map) (request *DeleteRequest, err error)
- func NewMapNameDeleteRequest(adabas *Adabas, mapName string) (request *DeleteRequest, err error)
- type Error
- type ID
- type Map
- type MapField
- type MapFile
- type ReadRequest
- func NewAdabasMapNameRequest(adabas *Adabas, adabasMap *Map) (request *ReadRequest, err error)
- func NewMapNameRequest(adabas *Adabas, mapName string) (request *ReadRequest, err error)
- func NewMapNameRequestRepo(mapName string, repository *Repository) (request *ReadRequest, err error)
- func NewReadRequestCommon(commonRequest *commonRequest) *ReadRequest
- func NewRequest(url string, fnr uint32) *ReadRequest
- func NewRequestAdabas(adabas *Adabas, fnr uint32) *ReadRequest
- func (request *ReadRequest) Close()
- func (request *ReadRequest) EndTransaction() error
- func (request *ReadRequest) HistogramBy(descriptor string) (result *RequestResult, err error)
- func (request *ReadRequest) HistogramWith(search string) (result *RequestResult, err error)
- func (request *ReadRequest) IsOpen() bool
- func (request *ReadRequest) Open() (err error)
- func (request *ReadRequest) QueryFields(fields string) (err error)
- func (request *ReadRequest) ReadISN(isn adatypes.Isn) (result *RequestResult, err error)
- func (request *ReadRequest) ReadISNWithParser(isn adatypes.Isn, resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) ReadLogicalBy(descriptors string) (result *RequestResult, err error)
- func (request *ReadRequest) ReadLogicalByWithParser(descriptors string, resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) ReadLogicalWith(search string) (result *RequestResult, err error)
- func (request *ReadRequest) ReadLogicalWithWithParser(search string, resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) ReadPhysicalSequence() (result *RequestResult, err error)
- func (request *ReadRequest) ReadPhysicalSequenceWithParser(resultParser adatypes.RequestParser, x interface{}) (err error)
- type Repository
- func (repository *Repository) ImportMapRepository(adabas *Adabas, filter string, fileName string, mapURL *DatabaseURL) (maps []*Map, err error)
- func (repository *Repository) LoadAllMaps(adabas *Adabas) (adabasMaps []*Map, err error)
- func (repository *Repository) LoadMapRepository(adabas *Adabas) (err error)
- func (repository *Repository) LoadMaps() error
- func (repository *Repository) LoadRepositoryMapsWithAdabas(adabas *Adabas) (err error)
- func (repository *Repository) SearchMap(adabas *Adabas, mapName string) (adabasMap *Map, err error)
- func (repository *Repository) SearchMapInRepository(adabas *Adabas, mapName string) (adabasMap *Map, err error)
- type RequestResult
- func (requestResult *RequestResult) DumpValues() (err error)
- func (requestResult *RequestResult) Isn(isn adatypes.Isn) *ResultRecord
- func (requestResult *RequestResult) MarshalJSON() ([]byte, error)
- func (requestResult *RequestResult) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (requestResult *RequestResult) NrRecords() int
- func (requestResult *RequestResult) String() string
- func (requestResult *RequestResult) TraverseValues(t adatypes.TraverserValuesMethods, x interface{}) (ret adatypes.TraverseResult, err error)
- type ResultRecord
- func (record *ResultRecord) DumpValues()
- func (record *ResultRecord) MarshalJSON() ([]byte, error)
- func (record *ResultRecord) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (record *ResultRecord) SearchValue(name string) (adatypes.IAdaValue, error)
- func (record *ResultRecord) SearchValueIndex(name string, index []uint32) (adatypes.IAdaValue, error)
- func (record *ResultRecord) SetValue(field string, value interface{}) (err error)
- func (record *ResultRecord) SetValueWithIndex(name string, index []uint32, x interface{}) error
- func (record *ResultRecord) String() string
- type Status
- type StoreRequest
- func (request *StoreRequest) Close()
- func (request *StoreRequest) CreateRecord() (record *ResultRecord, err error)
- func (request *StoreRequest) EndTransaction() error
- func (request *StoreRequest) Exchange(storeRecord *ResultRecord) error
- func (request *StoreRequest) IsOpen() bool
- func (request *StoreRequest) Open() (err error)
- func (request *StoreRequest) Store(storeRecord *ResultRecord) error
- func (request *StoreRequest) StoreFields(fields string) (err error)
- func (request *StoreRequest) Update(storeRecord *ResultRecord) error
- type URL
Examples ¶
- Adabas (ReadFileDefinition11)
- Adabas (ReadFileDefinition9)
- Adabas (ReadFileDefinition9RestrictF0)
- Adabas (ReadFileDefinition9Restricted)
- Adabas (ReadFileDefinitionMap)
- Adabas (ReadFileDefinitionMapGroup)
- Adabas (ResetAcbx)
- ReadRequest (BlendMap)
- ReadRequest (File)
- ReadRequest (FileMf)
- ReadRequest (FileMfBorder)
- ReadRequest (FileMfNoMaximum)
- ReadRequest (FileMfNoMinimum)
- ReadRequest (HistogramWith)
- ReadRequest (Isn)
- ReadRequest (Wide_character)
- ReadRequest.ReadLogicalBy
Constants ¶
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 )
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 */
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) )
const AdaTCPConnectPayloadLength = 72
AdaTCPConnectPayloadLength ADATCP connect payload
const AdaTCPDataHeaderLength = 24
AdaTCPDataHeaderLength length of AdaTCPDataHeader structure
const AdaTCPHeaderLength = 40
AdaTCPHeaderLength length of AdaTCPHeader structure
Variables ¶
This section is empty.
Functions ¶
func AddMapRepository ¶
AddMapRepository add global map repository
func DelMapRepository ¶
DelMapRepository delete global map repository
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 ¶
Disconnect disconnect remote TCP/IP Adabas nucleus
func (*ADATCP) ReceiveData ¶
ReceiveData receive data from 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
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 NewAdabasWithID ¶
NewAdabasWithID create a new Adabas struct instance using string parameter
func NewAdabasWithURL ¶
NewAdabasWithURL create a new Adabas struct instance
func NewAdabass ¶
NewAdabass create a new Adabas struct instance using string parameter
func NewClonedAdabas ¶
NewClonedAdabas create a cloned Adabas struct instance
func (*Adabas) BackoutTransaction ¶
BackoutTransaction backout transaction initiated
func (*Adabas) CallAdabas ¶
CallAdabas this method sends the call to the database
func (*Adabas) EndTransaction ¶
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) 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) SearchLogicalWith ¶
func (adabas *Adabas) SearchLogicalWith(fileNr uint32, adabasRequest *adatypes.AdabasRequest, x interface{}) (err error)
SearchLogicalWith Search logical using a descriptor
func (*Adabas) Store ¶
func (adabas *Adabas) Store(fileNr uint32, adabasRequest *adatypes.AdabasRequest) (err error)
Store store a record into database
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 (*Buffer) WriteBinary ¶
WriteBinary write binary slice into buffer
func (*Buffer) WriteString ¶
WriteString write string intp buffer
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) 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) 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 ¶
DatabaseURL defines the target URL of a database file. Might be a database data file or a map repository
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) 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
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 ¶
ParseJSONFileForFields Parse JSON map export file
func SearchMapRepository ¶
SearchMapRepository search in map repository for a specific map name
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) 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 ¶
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) 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 ¶
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) UnmarshalJSON ¶
UnmarshalJSON unmarshal JSON code