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 and might use the Entire Network client method accessing databases using the Entire Network server node infrastructure.
2. The new Adabas TCP/IP communication for a direct point-to-point access to the database. This is support since Adabas version v6.7.
Database reference ¶
The Adabas database is referenced using a Adabas database URL. Local databases can be referenced using the database id, the Adabas map or a remote reference with port 0. It is possible to reference remote databases with the host and port directly.
A local database reference: "24", "24","24(adatcp://host:0)".
A remote database reference: "24(adatcp://host:123)"
To use local IPC related Adabas access, please compile Adabas GO API with ADALNK library references. See documentation here: https://github.com/SoftwareAG/adabas-go-api
Example ¶
Here a short example showing a database read accces using Adabas maps
connection, cerr := NewConnection("acj;map;config=[24,4]") if cerr != nil { return cerr } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if rerr != nil { fmt.Println("Error create request", rerr) return rerr } err := request.QueryFields("NAME,FIRST-NAME,PERSONNEL-ID") if !assert.NoError(b, err) { return err } request.Limit = 0 result, rErr := request.ReadLogicalBy("NAME") result.DumpValues()
Read logic ¶
You may read using search values and descriptor sorted searches. The received records can be analyzed using traversation logic. See documentation here: https://github.com/SoftwareAG/adabas-go-api/blob/master/doc/QUERY.md
Adabas maps ¶
For long name and database name usage, a new Adabas map concept is introduced. The Adabas maps are stored inside the database. See documentation here: https://github.com/SoftwareAG/adabas-go-api/blob/master/doc/AdabasMap.md
Stream ¶
It is possible to work with the records just-in-time they received in a stream. A callback function will be called to process the current received record.
Example using stream:
func dumpStream(record *Record, x interface{}) error { i := x.(*uint32) a, _ := record.SearchValue("AE") fmt.Printf("Read %d -> %s = %d\n", record.Isn, a, record.Quantity) (*i)++ return nil } result, err := request.ReadLogicalWithStream("AE='SMITH'", dumpStream, &i)
Index ¶
- Constants
- Variables
- func AddGlobalMapRepository(i interface{}, fnr Fnr)
- func AddGlobalMapRepositoryReference(reference string) error
- func AllGlobalMapNames(adabas *Adabas) (maps []string, err error)
- func DelGlobalMapRepository(i interface{}, fnr Fnr)
- func DelGlobalMapRepositoryReference(reference string) error
- func DumpGlobalMapRepositories()
- 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 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 Fnr, isn adatypes.Isn) (err error)
- func (adabas *Adabas) EndTransaction() (err error)
- func (adabas *Adabas) Histogram(fileNr Fnr, adabasRequest *adatypes.Request, 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 Fnr) (definition *adatypes.Definition, err error)
- func (adabas *Adabas) ReadISNOrder(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
- func (adabas *Adabas) ReadLogicalWith(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
- func (adabas *Adabas) ReadPhysical(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
- func (adabas *Adabas) Release() (err error)
- func (adabas *Adabas) SearchLogicalWith(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
- func (adabas *Adabas) SetAbd(abd []*Buffer)
- func (adabas *Adabas) SetDbid(dbid Dbid)
- func (adabas *Adabas) Store(fileNr Fnr, adabasRequest *adatypes.Request) (err error)
- func (adabas *Adabas) String() string
- func (adabas *Adabas) Update(fileNr Fnr, adabasRequest *adatypes.Request) (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) AddCredential(user string, pwd string)
- func (connection *Connection) Close()
- func (connection *Connection) CreateDeleteRequest(fnr Fnr) (*DeleteRequest, error)
- func (connection *Connection) CreateFileReadRequest(fnr Fnr) (*ReadRequest, 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() (request *ReadRequest, err error)
- func (connection *Connection) CreateStoreRequest(fnr Fnr) (*StoreRequest, error)
- func (connection *Connection) EndTransaction() error
- func (connection *Connection) Open() error
- func (connection *Connection) Release() error
- func (connection *Connection) String() string
- type Cursoring
- type DatabaseURL
- type Dbid
- type DeleteRequest
- func NewDeleteRequest(url string, fnr Fnr) (*DeleteRequest, error)
- func NewDeleteRequestAdabas(adabas *Adabas, fnr Fnr) *DeleteRequest
- func NewMapDeleteRequest(adabas *Adabas, adabasMap *Map) (request *DeleteRequest, err error)
- func NewMapNameDeleteRequest(adabas *Adabas, mapName string) (request *DeleteRequest, err error)
- func NewMapNameDeleteRequestRepo(mapName string, adabas *Adabas, mapRepository *Repository) (request *DeleteRequest, err error)
- func (request *DeleteRequest) BackoutTransaction() error
- func (request *DeleteRequest) Close()
- func (deleteRequest *DeleteRequest) Delete(isn adatypes.Isn) (err error)
- func (request *DeleteRequest) EndTransaction() error
- func (request *DeleteRequest) IsOpen() bool
- func (deleteRequest *DeleteRequest) Open() (err error)
- func (request *DeleteRequest) TraverseFields(t adatypes.TraverserMethods, p interface{}) error
- type Error
- type Fnr
- type ID
- type Map
- func AllGlobalMaps(adabas *Adabas) (maps []*Map, err error)
- func LoadJSONMap(file string) (maps []*Map, err error)
- func NewAdabasMap(name string, repository *DatabaseURL) *Map
- func ParseJSONFileForFields(file *os.File) (mapList []*Map, err error)
- func SearchMapRepository(adabas *Adabas, mapName string) (adabasMap *Map, err error)
- type MapField
- type MapFile
- type ReadRequest
- func (request *ReadRequest) BackoutTransaction() error
- func (request *ReadRequest) Close()
- func (request *ReadRequest) EndTransaction() error
- func (request *ReadRequest) HistogramBy(descriptor string) (result *Response, err error)
- func (request *ReadRequest) HistogramByCursoring(descriptor string) (cursor *Cursoring, err error)
- func (request *ReadRequest) HistogramWith(search string) (result *Response, err error)
- func (request *ReadRequest) HistogramWithCursoring(search string) (cursor *Cursoring, err error)
- func (request *ReadRequest) HistogramWithStream(search string, streamFunction StreamFunction, x interface{}) (result *Response, err error)
- func (request *ReadRequest) IsOpen() bool
- func (request *ReadRequest) Open() (err error)
- func (request *ReadRequest) QueryFields(fieldq string) (err error)
- func (request *ReadRequest) ReadByISN() (result *Response, err error)
- func (request *ReadRequest) ReadISN(isn adatypes.Isn) (result *Response, err error)
- func (request *ReadRequest) ReadISNWithParser(isn adatypes.Isn, resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) ReadLogicalBy(descriptors string) (result *Response, err error)
- func (request *ReadRequest) ReadLogicalByStream(descriptor string, streamFunction StreamFunction, x interface{}) (result *Response, err error)
- func (request *ReadRequest) ReadLogicalByWithParser(descriptors string, resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) ReadLogicalWith(search string) (result *Response, err error)
- func (request *ReadRequest) ReadLogicalWithCursoring(search string) (cursor *Cursoring, err error)
- func (request *ReadRequest) ReadLogicalWithStream(search string, streamFunction StreamFunction, x interface{}) (result *Response, err error)
- func (request *ReadRequest) ReadLogicalWithWithParser(search string, resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) ReadPhysicalSequence() (result *Response, err error)
- func (request *ReadRequest) ReadPhysicalSequenceStream(streamFunction StreamFunction, x interface{}) (result *Response, err error)
- func (request *ReadRequest) ReadPhysicalSequenceWithParser(resultParser adatypes.RequestParser, x interface{}) (err error)
- func (request *ReadRequest) Scan(dest ...interface{}) error
- func (request *ReadRequest) SetHoldRecords(hold adatypes.HoldType)
- func (request *ReadRequest) TraverseFields(t adatypes.TraverserMethods, p interface{}) error
- type Record
- func (record *Record) DumpValues()
- func (record *Record) MarshalJSON() ([]byte, error)
- func (record *Record) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (record *Record) Scan(dest ...interface{}) (err error)
- func (record *Record) SearchValue(parameter ...interface{}) (adatypes.IAdaValue, error)
- func (record *Record) SearchValueIndex(name string, index []uint32) (adatypes.IAdaValue, error)
- func (record *Record) SetValue(field string, value interface{}) (err error)
- func (record *Record) SetValueWithIndex(name string, index []uint32, x interface{}) error
- func (record *Record) String() string
- 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) RemoveMap(mapName string) (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 Response
- func (Response *Response) DumpValues() (err error)
- func (Response *Response) Isn(isn adatypes.Isn) *Record
- func (Response *Response) MarshalJSON() ([]byte, error)
- func (Response *Response) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (Response *Response) NrRecords() int
- func (Response *Response) String() string
- func (Response *Response) TraverseValues(t adatypes.TraverserValuesMethods, x interface{}) (ret adatypes.TraverseResult, err error)
- type Status
- type StoreRequest
- func (request *StoreRequest) BackoutTransaction() error
- func (request *StoreRequest) Close()
- func (request *StoreRequest) CreateRecord() (record *Record, err error)
- func (request *StoreRequest) EndTransaction() error
- func (request *StoreRequest) Exchange(storeRecord *Record) error
- func (request *StoreRequest) IsOpen() bool
- func (request *StoreRequest) Open() (err error)
- func (request *StoreRequest) Store(storeRecord *Record) error
- func (request *StoreRequest) StoreFields(fields string) (err error)
- func (request *StoreRequest) TraverseFields(t adatypes.TraverserMethods, p interface{}) error
- func (request *StoreRequest) Update(storeRecord *Record) error
- type StreamFunction
- type URL
Examples ¶
- Adabas (ReadFileDefinition9)
- Adabas (ReadFileDefinition9RestrictF0)
- Adabas (ReadFileDefinition9Restricted)
- Adabas (ReadFileDefinitionFile11)
- Adabas (ResetAcbx)
- Connection (EndTransaction)
- Connection (FieldType)
- Connection (Map)
- Connection (MapReadDisjunctSearch)
- Connection (MapReadUnicode)
- Connection (MapReadUnicodeNew)
- Connection (MapStore)
- Connection (MarhsalJSON)
- Connection (MarhsalJSONComplete)
- Connection (MultiplefieldIndex)
- Connection (PeriodGroup)
- Connection (PeriodGroup2)
- Connection (PeriodGroupLastEntry)
- Connection (PeriodGroupMfPart)
- Connection (PeriodGroupPart)
- Connection (ReadBorderMainframe)
- Connection (ReadFileDefinitionMapGroup)
- Connection (ReadIsn)
- Connection (ReadLogicalWith)
- Connection (ReadLongMapIsn)
- Connection (ReadLongMapRange)
- Connection (ReadMainframe)
- Connection (ReadNoMaximumMainframe)
- Connection (ReadNoMinimumMainframe)
- Connection (ReadShortMap)
- Connection (ReadWithMap)
- Connection (ReadWithMapFormatted)
- Connection (Store)
- Connection (WideCharacter)
- ParseJSONFileForFields
- ReadRequest (HistogramWith)
- ReadRequest (HistogramWithStream)
- ReadRequest (ReadISN)
- ReadRequest (ReadLogicalWithCursoringLimit)
- ReadRequest.ReadLogicalBy
- ReadRequest.ReadLogicalWithCursoring
- Record (DumpZeroValues)
- Record (SetValue)
- Record (SetValueWithIndex)
- Response (JsonMarshal)
- Response (XmlMarshal)
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
const MaxDatabasesID = 65536
MaxDatabasesID maximum valid database id
Variables ¶
var BuildDate string
BuildDate build date
var BuildVersion string
BuildVersion build version
Functions ¶
func AddGlobalMapRepository ¶ added in v1.1.1
func AddGlobalMapRepository(i interface{}, fnr Fnr)
AddGlobalMapRepository add global map repository
func AddGlobalMapRepositoryReference ¶ added in v1.2.1
AddGlobalMapRepositoryReference add global map repository
func AllGlobalMapNames ¶ added in v1.2.1
AllGlobalMapNames search in map repositories global defined, all map names
func DelGlobalMapRepository ¶ added in v1.1.1
func DelGlobalMapRepository(i interface{}, fnr Fnr)
DelGlobalMapRepository delete global map repository
func DelGlobalMapRepositoryReference ¶ added in v1.2.1
DelGlobalMapRepositoryReference delete global map repository
func DumpGlobalMapRepositories ¶ added in v1.1.1
func DumpGlobalMapRepositories()
DumpGlobalMapRepositories dump global map repositories
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 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 Fnr /* +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 Adabas TCP 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 (ReadFileDefinition9) ¶
err := initLogWithFile("adabas.log") if err != nil { fmt.Println(err) return } adabas, _ := NewAdabas(adabasModDBID) 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 PE=1-N 2, FA, 60, W NU MU,MU; FA PE=true MU=true REMOVE=true PE=1-N MU=1-N 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 PE=1-N 2, FC, 10, A ,NU ; FC PE=true MU=true REMOVE=true PE=1-N 2, FD, 3, A ,NU ; FD PE=true MU=true REMOVE=true PE=1-N 2, F1 ; F1 PE=true MU=true REMOVE=true PE=1-N 3, FE, 6, A ,NU ; FE PE=true MU=true REMOVE=true PE=1-N 3, FF, 15, A ,NU ; FF PE=true MU=true REMOVE=true PE=1-N 3, FG, 15, A ,NU ; FG PE=true MU=true REMOVE=true PE=1-N 3, FH, 15, A ,NU ; FH PE=true MU=true REMOVE=true PE=1-N 3, FI, 80, A NU DE MU,MU; FI PE=true MU=true REMOVE=true PE=1-N MU=1-N 4, FI, 80, A ,NU DE MU ; FI PE=true MU=true REMOVE=true 1, I0 ,PE ; I0 PE=true MU=true REMOVE=true PE=1-N 2, IA, 40, W NU MU,MU; IA PE=true MU=true REMOVE=true PE=1-N MU=1-N 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 PE=1-N 2, IC, 10, A ,NU ; IC PE=true MU=true REMOVE=true PE=1-N 2, ID, 3, A ,NU ; ID PE=true MU=true REMOVE=true PE=1-N 2, IE, 5, A ,NU ; IE PE=true MU=true REMOVE=true PE=1-N 2, I1 ; I1 PE=true MU=true REMOVE=true PE=1-N 3, IF, 6, A ,NU ; IF PE=true MU=true REMOVE=true PE=1-N 3, IG, 15, A ,NU ; IG PE=true MU=true REMOVE=true PE=1-N 3, IH, 15, A ,NU ; IH PE=true MU=true REMOVE=true PE=1-N 3, II, 15, A ,NU ; II PE=true MU=true REMOVE=true PE=1-N 3, IJ, 80, A NU DE MU,MU; IJ PE=true MU=true REMOVE=true PE=1-N MU=1-N 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 PE=1-N 2, LA, 3, A ,NU ; LA PE=true MU=true REMOVE=true PE=1-N 2, LB, 6, P ,NU ; LB PE=true MU=true REMOVE=true PE=1-N 2, LC, 6, P NU DE MU,MU; LC PE=true MU=true REMOVE=true PE=1-N MU=1-N 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 PE=1-N 2, OA, 8, U ,NU DT=E(DATE) ; OA PE=true MU=false REMOVE=true PE=1-N 2, OB, 8, U ,NU DT=E(DATE) ; OB PE=true MU=false REMOVE=true PE=1-N 1, PA, 3, A NU DE MU,MU; PA PE=false MU=true REMOVE=true MU=1-N 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 PE=1-N 2, SA, 80, W ,NU ; SA PE=true MU=true REMOVE=true PE=1-N 2, SB, 3, A ,NU ; SB PE=true MU=true REMOVE=true PE=1-N 2, SC, 0, A NU NV NB MU,MU; SC PE=true MU=true REMOVE=true PE=1-N MU=1-N 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 MU=1-N 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) ¶
err := initLogWithFile("adabas.log") if err != nil { fmt.Println(err) return } adabas, _ := NewAdabas(adabasModDBID) 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 PE=1-N 2, FA, 60, W NU MU,MU; FA PE=true MU=true REMOVE=false PE=1-N MU=1-N 3, FA, 60, W ,NU MU ; FA PE=true MU=true REMOVE=false PE=1-N MU=1-N 2, FB, 40, W ,NU DE ; FB PE=true MU=true REMOVE=false PE=1-N 2, FC, 10, A ,NU ; FC PE=true MU=true REMOVE=false PE=1-N 2, FD, 3, A ,NU ; FD PE=true MU=true REMOVE=false PE=1-N 2, F1 ; F1 PE=true MU=true REMOVE=false PE=1-N 3, FE, 6, A ,NU ; FE PE=true MU=true REMOVE=false PE=1-N 3, FF, 15, A ,NU ; FF PE=true MU=true REMOVE=false PE=1-N 3, FG, 15, A ,NU ; FG PE=true MU=true REMOVE=false PE=1-N 3, FH, 15, A ,NU ; FH PE=true MU=true REMOVE=false PE=1-N 3, FI, 80, A NU DE MU,MU; FI PE=true MU=true REMOVE=false PE=1-N MU=1-N 4, FI, 80, A ,NU DE MU ; FI PE=true MU=true REMOVE=false PE=1-N MU=1-N
Example (ReadFileDefinition9Restricted) ¶
err := initLogWithFile("adabas.log") if err != nil { fmt.Println(err) return } adabas, _ := NewAdabas(adabasModDBID) 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 PE=1-N 2, LA, 3, A ,NU ; LA PE=true MU=true REMOVE=false PE=1-N 2, LB, 6, P ,NU ; LB PE=true MU=true REMOVE=false PE=1-N 2, LC, 6, P NU DE MU,MU; LC PE=true MU=true REMOVE=false PE=1-N MU=1-N 3, LC, 6, P ,NU DE MU ; LC PE=true MU=true REMOVE=false PE=1-N MU=1-N
Example (ReadFileDefinitionFile11) ¶
err := initLogWithFile("adabas.log") if err != nil { fmt.Println(err) return } adabas, _ := NewAdabas(adabasModDBID) 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 MU=1-N 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 PE=1-N 2, AR, 3, A ,NU ; AR PE=true MU=true REMOVE=true PE=1-N 2, AS, 5, P ,NU ; AS PE=true MU=true REMOVE=true PE=1-N 2, AT, 5, P NU MU,MU; AT PE=true MU=true REMOVE=true PE=1-N MU=1-N 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 PE=1-N 2, AX, 8, U ,NU ; AX PE=true MU=false REMOVE=true PE=1-N 2, AY, 8, U ,NU ; AY PE=true MU=false REMOVE=true PE=1-N 1, AZ, 3, A NU DE MU,MU; AZ PE=false MU=true REMOVE=true MU=1-N 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 (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 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 Fnr, adabasRequest *adatypes.Request, 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 Fnr) (definition *adatypes.Definition, err error)
ReadFileDefinition Read file definition out of Adabas file
func (*Adabas) ReadISNOrder ¶ added in v1.2.1
func (adabas *Adabas) ReadISNOrder(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
ReadISNOrder Read logical using a descriptor
func (*Adabas) ReadLogicalWith ¶
func (adabas *Adabas) ReadLogicalWith(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
ReadLogicalWith Read logical using a descriptor
func (*Adabas) ReadPhysical ¶
func (adabas *Adabas) ReadPhysical(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
ReadPhysical read data in physical order
func (*Adabas) SearchLogicalWith ¶
func (adabas *Adabas) SearchLogicalWith(fileNr Fnr, adabasRequest *adatypes.Request, x interface{}) (err error)
SearchLogicalWith Search logical using a descriptor
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 NewBufferWithSize ¶ added in v1.1.1
NewBufferWithSize Create a new buffer with given id and predefined size
func SearchAdabasBuffer ¶ added in v1.1.1
func SearchAdabasBuffer(tree *adatypes.SearchTree) *Buffer
SearchAdabasBuffer returns search buffer of the search tree
func ValueAdabasBuffer ¶ added in v1.1.1
func ValueAdabasBuffer(tree *adatypes.SearchTree) *Buffer
ValueAdabasBuffer returns value buffer of the search tree
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
Example (EndTransaction) ¶
lerr := initLogWithFile("connection.log") if lerr != nil { return } fmt.Println("Example for EndTransaction()") connection, err := NewConnection("acj;target=" + adabasModDBIDs) if err != nil { fmt.Println("Error creating connection", err) return } defer connection.Close() connection.Open() storeRequest, rErr := connection.CreateStoreRequest(16) if rErr != nil { return } // Define fields to be included in the request sferr := storeRequest.StoreFields("AA,AB") if sferr != nil { fmt.Println("Error setting fields", sferr) return } record, err := storeRequest.CreateRecord() if err != nil { fmt.Println("Error creating record", err) return } err = record.SetValueWithIndex("AA", nil, "777777_0") if err != nil { fmt.Println("Error set value", err) return } err = record.SetValueWithIndex("AC", nil, "WABER") if err != nil { fmt.Println("Error set value", err) return } err = record.SetValueWithIndex("AD", nil, "EMIL") if err != nil { fmt.Println("Error set value", err) return } err = record.SetValueWithIndex("AE", nil, "MERK") if err != nil { fmt.Println("Error set value", err) return } // Store the record in the database err = storeRequest.Store(record) if err != nil { fmt.Println("Store record error", err) return } // ET end of transaction final commit the transaction err = storeRequest.EndTransaction() if err != nil { fmt.Println("End transaction error", err) return } fmt.Println("Record stored, check content ...") readRequest, rrerr := connection.CreateFileReadRequest(16) if rrerr != nil { fmt.Println("Read request error", rrerr) return } err = readRequest.QueryFields("AA,AB") if err != nil { fmt.Println("Query fields error", err) return } result, rerr := readRequest.ReadLogicalWith("AA=[777777_:777777_Z]") if rerr != nil { fmt.Println("Read record error", rerr) return } if len(result.Values) != 1 { fmt.Println("Records received not correct", len(result.Values)) return } // To adapt output for example result.Values[0].Isn = 0 result.DumpValues()
Output: Example for EndTransaction() Record stored, check content ... Dump all result values AA = > 777777_0 < AB = [ 1 ] AC = > WABER < AE = > MERK < AD = > EMIL <
Example (FieldType) ¶
err := initLogWithFile("field_type.log") if err != nil { fmt.Println(err) return } url := "23" fmt.Println("Connect to ", url) connection, cerr := NewConnection("acj;target=" + url) if cerr != nil { fmt.Println("Error creating database connection", cerr) return } defer connection.Close() fmt.Println(connection) openErr := connection.Open() if openErr != nil { fmt.Println("Error opening database", openErr) return } request, err := connection.CreateFileReadRequest(270) if err != nil { fmt.Println("Error creating read request", err) return } //err = request.QueryFields("S1,U1,S2,U2,S4,U4,S8,U8,AF,BR,B1,F4,F8,A1") err = request.QueryFields("IT,BB,TY,AA,WC,PI,UI") //err = request.QueryFields("*") if err != nil { fmt.Println("Error query fields", err) return } request.Limit = 0 request.RecordBufferShift = 64000 result, rerr := request.ReadLogicalWith("AF=" + recordNamePrefix) if rerr != nil { fmt.Println("Error reading records", rerr) return } t := adatypes.TraverserValuesMethods{PrepareFunction: dumpFieldTypeTestPrepare, EnterFunction: dumpFieldTypeValues} _, err = result.TraverseValues(t, nil) if err != nil { fmt.Println("Error traversing records", err) return }
Output: Connect to 23 Adabas url=23 fnr=0 Record found: IT = [ 1 ] S1 = > 0 < U1 = > 0 < S2 = > 0 < U2 = > 0 < S4 = > 0 < U4 = > 0 < S8 = > 0 < U8 = > 0 < BB = [ 1 ] BR = > [0] < B1 = > [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] < TY = [ 1 ] F4 = > 0.000000 < F8 = > 0.000000 < AA = [ 1 ] A1 = > < AS = > < A2 = > < AB = > < AF = > FIELD-TYPE-TEST < WC = [ 1 ] WU = > < WL = > < W4 = > < WF = > < PI = [ 1 ] PA = > 0 < PF = > 0 < UI = [ 1 ] UP = > 0 < UF = > 0 < UE = > 0 < Record found: IT = [ 1 ] S1 = > -1 < U1 = > 1 < S2 = > -1000 < U2 = > 1000 < S4 = > -100000 < U4 = > 1000 < S8 = > -1000 < U8 = > 1000 < BB = [ 1 ] BR = > [0 16 32] < B1 = > [255 16 5 0 16 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] < TY = [ 1 ] F4 = > 21.100000 < F8 = > 123456.100000 < AA = [ 1 ] A1 = > X < AS = > NORMALSTRING < A2 = > LARGESTRING < AB = > LOBST < AF = > FIELD-TYPE-TEST < WC = [ 1 ] WU = > Санкт-Петербург < WL = > அ-8பவனி கொம்பிலேக் < W4 = > ಸೆನಿಓರ್ ಪ್ರೋಗ್ೃಾಮ್ಮೇರ್ < WF = > директор < PI = [ 1 ] PA = > 123 < PF = > 1234 < UI = [ 1 ] UP = > 51234 < UF = > 542 < UE = > 1234 <
Example (Map) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;map;config=[24,4]") if cerr != nil { return } defer connection.Close() request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if err != nil { fmt.Println("Error read map : ", err) return } fmt.Println("Connection :", connection) request.QueryFields("NAME,PERSONNEL-ID") request.Limit = 2 fmt.Println("Read logical data, two records:") result, rerr := request.ReadLogicalWith("PERSONNEL-ID=[11100301:11100303]") if rerr != nil { return } fmt.Println("Result data:") result.DumpValues()
Output: Connection : Map=EMPLOYEES-NAT-DDM Adabas url=24 fnr=0 connection file=11 Read logical data, two records: 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 (MapReadDisjunctSearch) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES") if rerr != nil { fmt.Println("Error create request", rerr) return } err = request.QueryFields("personnel-id") if err != nil { return } request.Limit = 0 var result *Response fmt.Println("Read using ISN order:") result, err = request.ReadLogicalWith("name=SMITH") if err != nil { fmt.Println("Error reading ISN order", err) return } result.DumpValues()
Output: Read using ISN order: Dump all result values Record Isn: 0579 personnel-data = [ 1 ] personnel-id = > 20009300 < Record Isn: 0634 personnel-data = [ 1 ] personnel-id = > 20015400 < Record Isn: 0670 personnel-data = [ 1 ] personnel-id = > 20018800 < Record Isn: 0727 personnel-data = [ 1 ] personnel-id = > 20025200 < Record Isn: 0787 personnel-data = [ 1 ] personnel-id = > 20000400 <
Example (MapReadUnicode) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",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("PERSONNEL-ID,FULL-NAME") if err != nil { return } request.Start = 1025 request.Limit = 3 var result *Response fmt.Println("Read using ISN order:") result, err = request.ReadByISN() if err != nil { fmt.Println("Error reading ISN order", err) return } result.DumpValues()
Output: Read using ISN order: Dump all result values Record Isn: 1025 PERSONNEL-ID = > 30021215 < FULL-NAME = [ 1 ] FIRST-NAME = > SYLVIA < NAME = > BURTON < MIDDLE-I = > J < Record Isn: 1026 PERSONNEL-ID = > 30021311 < FULL-NAME = [ 1 ] FIRST-NAME = > GERARD < NAME = > JOHNSTONE < MIDDLE-I = > E < Record Isn: 1027 PERSONNEL-ID = > 30021312 < FULL-NAME = [ 1 ] FIRST-NAME = > NORMA < NAME = > FRANCIS < MIDDLE-I = > <
Example (MapReadUnicodeNew) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES") if rerr != nil { fmt.Println("Error create request", rerr) return } err = request.QueryFields("personnel-id,full-name") if err != nil { return } request.Start = 1250 request.Limit = 3 var result *Response fmt.Println("Read using ISN order:") result, err = request.ReadByISN() if err != nil { fmt.Println("Error reading ISN order", err) return } result.DumpValues()
Output: Read using ISN order: Dump all result values Record Isn: 1250 personnel-data = [ 1 ] personnel-id = > 73002200 < full-name = [ 1 ] first-name = > Игорь < middle-name = > Петрович < name = > Михайлов < Record Isn: 1251 personnel-data = [ 1 ] personnel-id = > 50005801 < full-name = [ 1 ] first-name = > वासुदेव < middle-name = > मूर्ती < name = > कुमार < Record Isn: 1252 personnel-data = [ 1 ] personnel-id = > 50005501 < full-name = [ 1 ] first-name = > विनोद < middle-name = > अभगे < name = > अरविद <
Example (MapStore) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } if cErr := clearFile(16); cErr != nil { return } if cErr := clearFile(19); cErr != nil { return } dataRepository := &DatabaseURL{URL: *NewURLWithDbid(adabasModDBID), Fnr: 16} if perr := prepareCreateTestMap(massLoadSystransStore, massLoadSystrans, dataRepository); perr != nil { fmt.Println("Error creating map", massLoadSystransStore, perr) return } dataRepository = &DatabaseURL{URL: *NewURLWithDbid(adabasModDBID), Fnr: 19} vehicleMapName := mapVehicles + "Go" if perr := prepareCreateTestMap(vehicleMapName, vehicleSystransStore, dataRepository); perr != nil { return } adatypes.Central.Log.Infof("Create connection...") connection, err := NewConnection("acj;map;config=[" + adabasModDBIDs + ",250]") if err != nil { return } defer connection.Close() connection.Open() storeRequest16, rErr := connection.CreateMapStoreRequest(massLoadSystransStore) if err != nil { return } storeRequest16.StoreFields("PERSONNEL-ID,NAME") record, err := storeRequest16.CreateRecord() err = record.SetValueWithIndex("PERSONNEL-ID", nil, "26555_0") err = record.SetValueWithIndex("NAME", nil, "WABER") err = record.SetValueWithIndex("FIRST-NAME", nil, "EMIL") err = record.SetValueWithIndex("MIDDLE-I", nil, "MERK") err = storeRequest16.Store(record) if err != nil { fmt.Println("Error store record", err) return } storeRequest19, rErr := connection.CreateMapStoreRequest(vehicleMapName) if rErr != nil { fmt.Println("Error create store request vehicle", rErr) return } err = storeRequest19.StoreFields("REG-NUM,PERSONNEL-ID,CAR-DETAILS") if err != nil { fmt.Println("Error store fields", err) return } record, err = storeRequest19.CreateRecord() err = record.SetValueWithIndex("REG-NUM", nil, "29555_0") if err != nil { fmt.Println("Error", err) return } err = record.SetValueWithIndex("PERSONNEL-ID", nil, "WABER") if err != nil { fmt.Println("Error search in "+vehicleMapName, err) return } err = record.SetValueWithIndex("MAKE", nil, "EMIL") if err != nil { fmt.Println("Error", err) return } err = record.SetValueWithIndex("MODEL", nil, "MERK") if err != nil { fmt.Println("Error", err) return } err = storeRequest19.Store(record) if err != nil { fmt.Println("Error", err) return } err = connection.EndTransaction() if err != nil { fmt.Println("Error", err) return } fmt.Println("Read file ..." + massLoadSystransStore) err = dumpMapStoredData(adabasModDBIDs, massLoadSystransStore, "26555") if err != nil { fmt.Println("Error reading "+massLoadSystransStore, err) return } fmt.Println("Read file ..." + vehicleMapName) err = dumpMapStoredData(adabasModDBIDs, vehicleMapName, "29555") if err != nil { fmt.Println("Error reading "+vehicleMapName, err) return }
Output: Read file ...EMPLDDM-GOLOAD-STORE Dump all result values Record Isn: 0001 PERSONNEL-ID = > 26555_0 < FULL-NAME = [ 1 ] FIRST-NAME = > < NAME = > WABER < MIDDLE-I = > < Read file ...VEHICLESGo Dump all result values Record Isn: 0001 REG-NUM = > 29555_0 < PERSONNEL-ID = > WABER < CAR-DETAILS = [ 1 ] MAKE = > EMIL < MODEL = > MERK < COLOR = > <
Example (MarhsalJSON) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;target=" + adabasModDBIDs) if cerr != nil { return } defer connection.Close() request, err := connection.CreateFileReadRequest(11) if err != nil { fmt.Println("Error read map : ", err) return } fmt.Println("Connection : ", connection) fmt.Println("Limit query data:") request.QueryFields("*") fmt.Println("Read logical data:") result, rErr := request.ReadISN(250) if rErr != nil { fmt.Println("Error reading", rErr) return } x, jsonErr := json.Marshal(result) if jsonErr != nil { fmt.Println("Error", jsonErr) return } fmt.Println(string(x))
Output: Connection : Adabas url=23 fnr=0 Limit query data: Read logical data: {"Records":[{"A1":{"AI":["C/O H.KOERBER","AM DORNKAMP 20","4590 CLOPPENBURG"],"AJ":"CLOPPENBURG","AK":"4590","AL":"D"},"A2":{"AM":"3082","AN":"04471"},"A3":{"AU":33,"AV":4},"AA":"11222222","AB":{"AC":"ANTONIA","AD":"MARIA","AE":"MARTENS"},"AF":"S","AG":"F","AH":713104,"AO":"MGMT00","AP":"DATENSCHUTZBEAUFTRAGTE","AQ":[{"AR":"EUR","AS":29743,"AT":[4615,8000]},{"AR":"EUR","AS":22153,"AT":[3589,6000]},{"AR":"EUR","AS":20769,"AT":[1538]}],"AW":[{"AX":19980701,"AY":19980702},{"AX":19980811,"AY":19980812}],"AZ":["GER","TUR"],"H1":"3304","ISN":250,"PH":"","S1":"MGMT","S2":"MGMT00MARTENS","S3":""}]}
Example (MarhsalJSONComplete) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;target=" + adabasModDBIDs) if cerr != nil { return } defer connection.Close() request, err := connection.CreateFileReadRequest(11) if err != nil { fmt.Println("Error read map : ", err) return } fmt.Println("Connection : ", connection) fmt.Println("Limit query data:") request.QueryFields("*") fmt.Println("Read logical data:") result, rErr := request.ReadISN(1) if rErr != nil { fmt.Println("Error reading", rErr) return } x, jsonErr := json.Marshal(result) if jsonErr != nil { fmt.Println("Error", jsonErr) return } fmt.Println(string(x))
Output: Connection : Adabas url=23 fnr=0 Limit query data: Read logical data: {"Records":[{"A1":{"AI":["26 AVENUE RHIN ET DA"],"AJ":"JOIGNY","AK":"89300","AL":"F"},"A2":{"AM":"44864858","AN":"1033"},"A3":{"AU":19,"AV":5},"AA":"50005800","AB":{"AC":"SIMONE","AD":"","AE":"ADAM"},"AF":"M","AG":"F","AH":712981,"AO":"VENT59","AP":"CHEF DE SERVICE","AQ":[{"AR":"EUR","AS":963,"AT":[138]}],"AW":[{"AX":19990801,"AY":19990831}],"AZ":["FRE","ENG"],"H1":"1905","ISN":1,"PH":"","S1":"VENT","S2":"VENT59ADAM","S3":""}]}
Example (MultiplefieldIndex) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { fmt.Println("Error new connection", cerr) return } defer connection.Close() openErr := connection.Open() if openErr != nil { fmt.Println("Error open connection", cerr) return } request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if err != nil { fmt.Println("Error create request", err) return } err = request.QueryFields("PERSONNEL-ID,ADDRESS-LINE[2]") if err != nil { fmt.Println("Query fields error", err) return } request.Limit = 0 var result *Response result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100303:11100304]") if err != nil { fmt.Println("Error create request", err) return } err = result.DumpValues() if err != nil { fmt.Println("Error dump values", err) }
Output: Dump all result values Record Isn: 0252 PERSONNEL-ID = > 11100303 < FULL-ADDRESS = [ 1 ] ADDRESS-LINE = [ 1 ] ADDRESS-LINE[02] = > WIESENGRUND 10 < Record Isn: 0253 PERSONNEL-ID = > 11100304 < FULL-ADDRESS = [ 1 ] ADDRESS-LINE = [ 1 ] ADDRESS-LINE[02] = > MANDELA-WEG 8 <
Example (PeriodGroup) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;target=" + adabasModDBIDs) if cerr != nil { return } defer connection.Close() request, err := connection.CreateFileReadRequest(11) if err != nil { fmt.Println("Error read map : ", err) return } fmt.Println("Connection : ", connection) fmt.Println("Limit query data:") request.QueryFields("AA,AB,AQ,AZ") fmt.Println("Read logical data:") result, rerr := request.ReadISN(250) 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: 0250 AA = > 11222222 < AB = [ 1 ] AC = > ANTONIA < AE = > MARTENS < AD = > MARIA < 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 < AZ = [ 2 ] AZ[01] = > GER < AZ[02] = > TUR <
Example (PeriodGroup2) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { fmt.Println("Error new connection", cerr) return } defer connection.Close() openErr := connection.Open() if openErr != nil { fmt.Println("Error open connection", cerr) return } request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if err != nil { fmt.Println("Error create request", err) return } request.Limit = 0 var result *Response result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100303:11100304]") if err != nil { fmt.Println("Error create request", err) return } err = result.DumpValues() if err != nil { fmt.Println("Error dump values", err) }
Output: Dump all result values Record Isn: 0252 PERSONNEL-ID = > 11100303 < FULL-NAME = [ 1 ] FIRST-NAME = > KRISTINA < NAME = > FALTER < MIDDLE-I = > M < MAR-STAT = > M < SEX = > F < BIRTH = > 1961/07/08 < FULL-ADDRESS = [ 1 ] ADDRESS-LINE = [ 3 ] ADDRESS-LINE[01] = > C/O CLAASEN < ADDRESS-LINE[02] = > WIESENGRUND 10 < ADDRESS-LINE[03] = > 6100 DARMSTADT < CITY = > DARMSTADT < ZIP = > 6100 < COUNTRY = > D < TELEPHONE = [ 1 ] AREA-CODE = > 06151 < PHONE = > 453897 < DEPT = > FINA21 < JOB-TITLE = > TYPISTIN < INCOME = [ 3 ] CURR-CODE[01] = > EUR < SALARY[01] = > 21846 < BONUS[01] = [ 2 ] BONUS[01,01] = > 1717 < BONUS[01,02] = > 3000 < CURR-CODE[02] = > EUR < SALARY[02] = > 21025 < BONUS[02] = [ 1 ] BONUS[02,01] = > 1538 < CURR-CODE[03] = > EUR < SALARY[03] = > 20307 < BONUS[03] = [ 1 ] BONUS[03,01] = > 1282 < LEAVE-DATA = [ 1 ] LEAVE-DUE = > 30 < LEAVE-TAKEN = > 3 < LEAVE-BOOKED = [ 1 ] LEAVE-START[01] = > 19980520 < LEAVE-END[01] = > 19980523 < LANG = [ 1 ] LANG[01] = > GER < LEAVE-LEFT = > 3003 < DEPARTMENT = > FINA < DEPT-PERSON = > FINA21FALTER < CURRENCY-SALARY = > < Record Isn: 0253 PERSONNEL-ID = > 11100304 < FULL-NAME = [ 1 ] FIRST-NAME = > WOLFGANG < NAME = > SCHMIDT < MIDDLE-I = > J < MAR-STAT = > M < SEX = > M < BIRTH = > 1943/05/04 < FULL-ADDRESS = [ 1 ] ADDRESS-LINE = [ 3 ] ADDRESS-LINE[01] = > POSTFACH 67 < ADDRESS-LINE[02] = > MANDELA-WEG 8 < ADDRESS-LINE[03] = > 6000 FRANKFURT < CITY = > FRANKFURT < ZIP = > 6000 < COUNTRY = > D < TELEPHONE = [ 1 ] AREA-CODE = > 069 < PHONE = > 549987 < DEPT = > FINA21 < JOB-TITLE = > SACHBEARBEITER < INCOME = [ 2 ] CURR-CODE[01] = > EUR < SALARY[01] = > 25230 < BONUS[01] = [ 2 ] BONUS[01,01] = > 2256 < BONUS[01,02] = > 2000 < CURR-CODE[02] = > EUR < SALARY[02] = > 24102 < BONUS[02] = [ 1 ] BONUS[02,01] = > 1948 < LEAVE-DATA = [ 1 ] LEAVE-DUE = > 30 < LEAVE-TAKEN = > 0 < LEAVE-BOOKED = [ 0 ] LANG = [ 2 ] LANG[01] = > GER < LANG[02] = > ENG < LEAVE-LEFT = > 3000 < DEPARTMENT = > FINA < DEPT-PERSON = > FINA21SCHMIDT < CURRENCY-SALARY = > <
Example (PeriodGroupLastEntry) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { fmt.Println("Error new connection", cerr) return } defer connection.Close() openErr := connection.Open() if openErr != nil { fmt.Println("Error open connection", cerr) return } request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if err != nil { fmt.Println("Error create request", err) return } err = request.QueryFields("PERSONNEL-ID,INCOME[N]") if err != nil { fmt.Println("Query fields error", err) return } request.Limit = 0 var result *Response result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100303:11100304]") if err != nil { fmt.Println("Error create request", err) return } err = result.DumpValues() if err != nil { fmt.Println("Error dump values", err) }
Output: Dump all result values Record Isn: 0252 PERSONNEL-ID = > 11100303 < INCOME = [ 1 ] CURR-CODE[03] = > EUR < SALARY[03] = > 20307 < BONUS[03] = [ 1 ] BONUS[03,01] = > 1282 < Record Isn: 0253 PERSONNEL-ID = > 11100304 < INCOME = [ 1 ] CURR-CODE[02] = > EUR < SALARY[02] = > 24102 < BONUS[02] = [ 1 ] BONUS[02,01] = > 1948 <
Example (PeriodGroupMfPart) ¶
initLogWithFile("connection.log") network := os.Getenv("ADAMFDBID") if network == "" { fmt.Println("Mainframe database not defined") return } connection, cerr := NewConnection("acj;map;config=[" + network + ",4]") if cerr != nil { fmt.Println("Error new connection", cerr) return } defer connection.Close() openErr := connection.Open() if openErr != nil { fmt.Println("Error open connection", cerr) return } request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-MF") if err != nil { fmt.Println("Error create request", err) return } request.QueryFields("personnnel-id,income") request.Limit = 0 var result *Response result, err = request.ReadLogicalWith("personnnel-id=[11100303:11100304]") if err != nil { fmt.Println("Error create request", err) return } err = result.DumpValues() if err != nil { fmt.Println("Error dump values", err) }
Output: Dump all result values Record Isn: 0252 Record Quantity: 0002 personnnel-id = > 11100303 < income = [ 3 ] curr-code[01] = > DM < salary[01] = > 42600 < bonus[01] = [ 2 ] bonus[01,01] = > 3350 < bonus[01,02] = > 3000 < curr-code[02] = > DM < salary[02] = > 41000 < bonus[02] = [ 1 ] bonus[02,01] = > 3000 < curr-code[03] = > DM < salary[03] = > 39600 < bonus[03] = [ 1 ] bonus[03,01] = > 2500 < Record Isn: 0253 Record Quantity: 0002 personnnel-id = > 11100304 < income = [ 2 ] curr-code[01] = > DM < salary[01] = > 49200 < bonus[01] = [ 2 ] bonus[01,01] = > 4400 < bonus[01,02] = > 2000 < curr-code[02] = > DM < salary[02] = > 47000 < bonus[02] = [ 1 ] bonus[02,01] = > 3800 <
Example (PeriodGroupPart) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { fmt.Println("Error new connection", cerr) return } defer connection.Close() openErr := connection.Open() if openErr != nil { fmt.Println("Error open connection", cerr) return } request, err := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if err != nil { fmt.Println("Error create request", err) return } request.QueryFields("PERSONNEL-ID,INCOME") request.Limit = 0 var result *Response result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100303:11100304]") if err != nil { fmt.Println("Error create request", err) return } err = result.DumpValues() if err != nil { fmt.Println("Error dump values", err) }
Output: Dump all result values Record Isn: 0252 PERSONNEL-ID = > 11100303 < INCOME = [ 3 ] CURR-CODE[01] = > EUR < SALARY[01] = > 21846 < BONUS[01] = [ 2 ] BONUS[01,01] = > 1717 < BONUS[01,02] = > 3000 < CURR-CODE[02] = > EUR < SALARY[02] = > 21025 < BONUS[02] = [ 1 ] BONUS[02,01] = > 1538 < CURR-CODE[03] = > EUR < SALARY[03] = > 20307 < BONUS[03] = [ 1 ] BONUS[03,01] = > 1282 < Record Isn: 0253 PERSONNEL-ID = > 11100304 < INCOME = [ 2 ] CURR-CODE[01] = > EUR < SALARY[01] = > 25230 < BONUS[01] = [ 2 ] BONUS[01,01] = > 2256 < BONUS[01,02] = > 2000 < CURR-CODE[02] = > EUR < SALARY[02] = > 24102 < BONUS[02] = [ 1 ] BONUS[02,01] = > 1948 <
Example (ReadBorderMainframe) ¶
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.CreateFileReadRequest(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 fmt.Println("Read logical data:") var result *Response result, err = request.ReadLogicalWith("AA=(11100301:11100303)") 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 (ReadFileDefinitionMapGroup) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",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 fmt.Println("Read logigcal data:") var result *Response result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100315:11100316]") 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 (ReadIsn) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;target=" + adabasModDBIDs) if cerr != nil { return } defer connection.Close() request, err := connection.CreateFileReadRequest(11) if err != nil { fmt.Println("Error create request: ", err) return } fmt.Println("Connection : ", connection) fmt.Println("Read ISN 250:") var result *Response result, err = request.ReadISN(250) if err != nil { fmt.Println("Error reading ISN: ", err) 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 (ReadLogicalWith) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;target=" + adabasModDBIDs) if cerr != nil { return } defer connection.Close() request, err := connection.CreateFileReadRequest(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 var result *Response fmt.Println("Read logical data:") result, err = request.ReadLogicalWith("AA=[11100301:11100303]") 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 (ReadLongMapIsn) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } adatypes.Central.Log.Infof("TEST: ExampleAdabas_readFileDefinitionMap") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES") if rerr != nil { fmt.Println("Error create request", rerr) return } err = request.QueryFields("*") if err != nil { fmt.Println("Error query fields", err) return } request.Limit = 0 var result *Response fmt.Println("Read logigcal data:") result, err = request.ReadISN(1) for _, v := range result.Values { f, e := v.SearchValue("creation_time") f.SetValue(0) f, e = v.SearchValue("Last_Updates[01]") if err != nil || f == nil { fmt.Println(e) return } f.SetValue(0) } fmt.Println(result.String())
Output: Read logigcal data: Record Isn: 0001 personnel-data = [ 1 ] personnel-id = > 50005800 < id-data = [ 1 ] personnel-no_-UQ_taken- = > 0 < id-card = > 0 < signature = > < full-name = [ 1 ] first-name = > Simone < middle-name = > < name = > Adam < mar-stat = > M < sex = > F < birth = > 718460 < private-address = [ 1 ] address-line[01] = [ 1 ] address-line[01,01] = > 26 Avenue Rhin Et Da < city[01] = > Joigny < post-code[01] = > 89300 < country[01] = > F < phone-email[01] = [ 1 ] area-code[01] = > 1033 < private-phone[01] = > 44864858 < private-fax[01] = > < private-mobile[01] = > < private-email[01] = [ 0 ] business-address = [ 0 ] dept = > VENT59 < job-title = > Chef de Service < income = [ 1 ] curr-code[01] = > EUR < salary_P9.2[01] = > 963 < bonus_P9.2[01] = [ 1 ] bonus_P9.2[01,01] = > 138 < total_income_-EUR- = > 0.000000 < leave-date = [ 1 ] leave-due = > 19 < leave-taken_N2.1 = > 5 < leave-booked = [ 1 ] leave-start[01] = > 20070801 < leave-end[01] = > 20070831 < language = [ 2 ] language[01] = > FRE < language[02] = > ENG < last_update_--TIMX- = > 0 < picture = > < documents = [ 0 ] creation_time = > 0 < Last_Updates = [ 1 ] Last_Updates[01] = > 0 <
Example (ReadLongMapRange) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } adatypes.Central.Log.Infof("TEST: ExampleAdabas_readFileDefinitionMap") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES") if rerr != nil { fmt.Println("Error create request", rerr) return } err = request.QueryFields("*") if err != nil { return } request.Limit = 0 var result *Response fmt.Println("Read logigcal data:") result, err = request.ReadLogicalWith("personnel-id=[50005800:50005801]") for _, v := range result.Values { f, e := v.SearchValue("creation_time") f.SetValue(0) f, e = v.SearchValue("Last_Updates[01]") if err != nil || f == nil { fmt.Println(e) return } f.SetValue(0) } result.DumpValues()
Output: Read logigcal data: Dump all result values Record Isn: 0001 personnel-data = [ 1 ] personnel-id = > 50005800 < id-data = [ 1 ] personnel-no_-UQ_taken- = > 0 < id-card = > 0 < signature = > < full-name = [ 1 ] first-name = > Simone < middle-name = > < name = > Adam < mar-stat = > M < sex = > F < birth = > 718460 < private-address = [ 1 ] address-line[01] = [ 1 ] address-line[01,01] = > 26 Avenue Rhin Et Da < city[01] = > Joigny < post-code[01] = > 89300 < country[01] = > F < phone-email[01] = [ 1 ] area-code[01] = > 1033 < private-phone[01] = > 44864858 < private-fax[01] = > < private-mobile[01] = > < private-email[01] = [ 0 ] business-address = [ 0 ] dept = > VENT59 < job-title = > Chef de Service < income = [ 1 ] curr-code[01] = > EUR < salary_P9.2[01] = > 963 < bonus_P9.2[01] = [ 1 ] bonus_P9.2[01,01] = > 138 < total_income_-EUR- = > 0.000000 < leave-date = [ 1 ] leave-due = > 19 < leave-taken_N2.1 = > 5 < leave-booked = [ 1 ] leave-start[01] = > 20070801 < leave-end[01] = > 20070831 < language = [ 2 ] language[01] = > FRE < language[02] = > ENG < last_update_--TIMX- = > 0 < picture = > < documents = [ 0 ] creation_time = > 0 < Last_Updates = [ 1 ] Last_Updates[01] = > 0 < Record Isn: 1251 personnel-data = [ 1 ] personnel-id = > 50005801 < id-data = [ 1 ] personnel-no_-UQ_taken- = > 0 < id-card = > 0 < signature = > < full-name = [ 1 ] first-name = > वासुदेव < middle-name = > मूर्ती < name = > कुमार < mar-stat = > M < sex = > M < birth = > 721484 < private-address = [ 1 ] address-line[01] = [ 1 ] address-line[01,01] = > ह-1,दिशा स्क्यलैइन म < city[01] = > नोयडा < post-code[01] = > 201301 < country[01] = > IND < phone-email[01] = [ 1 ] area-code[01] = > 01189 < private-phone[01] = > 233449 < private-fax[01] = > < private-mobile[01] = > < private-email[01] = [ 0 ] business-address = [ 0 ] dept = > COMP02 < job-title = > सीनियर प्रोग्रामर < income = [ 1 ] curr-code[01] = > INR < salary_P9.2[01] = > 45000 < bonus_P9.2[01] = [ 5 ] bonus_P9.2[01,01] = > 5000 < bonus_P9.2[01,02] = > 5000 < bonus_P9.2[01,03] = > 5000 < bonus_P9.2[01,04] = > 5000 < bonus_P9.2[01,05] = > 5000 < total_income_-EUR- = > 0.000000 < leave-date = [ 1 ] leave-due = > 8 < leave-taken_N2.1 = > 7 < leave-booked = [ 1 ] leave-start[01] = > 20060915 < leave-end[01] = > 20060922 < language = [ 2 ] language[01] = > HIN < language[02] = > ENG < last_update_--TIMX- = > 0 < picture = > < documents = [ 0 ] creation_time = > 0 < Last_Updates = [ 1 ] Last_Updates[01] = > 0 <
Example (ReadMainframe) ¶
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.CreateFileReadRequest(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 fmt.Println("Read logical data:") var result *Response result, err = request.ReadLogicalWith("AA=[11100301:11100303]") 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 (ReadNoMaximumMainframe) ¶
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.CreateFileReadRequest(1) if err != nil { fmt.Println("Error creating read request : ", err) return } fmt.Println("Connection : ", connection) fmt.Println("Limit query data:") err = request.QueryFields("AA,AB") if err != nil { fmt.Println("Error query fields : ", err) return } request.Limit = 2 fmt.Println("Read logical data:") var result *Response result, err = request.ReadLogicalWith("AA=[1100301:11100303)") if err != nil { fmt.Println("Error reading", err) return } if result == nil { fmt.Println("Result empty") return } if result.Values == nil { fmt.Println("Values empty") 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 (ReadNoMinimumMainframe) ¶
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.CreateFileReadRequest(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 fmt.Println("Read logical data:") var result *Response result, err = request.ReadLogicalWith("AA=(11100301:11100303]") 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 (ReadShortMap) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } adatypes.Central.Log.Infof("TEST: ExampleAdabas_readFileDefinitionMap") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",4]") if cerr != nil { return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLSHORT") if rerr != nil { fmt.Println("Error create request", rerr) return } err = request.QueryFields("*") if err != nil { return } request.Limit = 0 var result *Response fmt.Println("Read logigcal data:") result, err = request.ReadLogicalWith("ID=[11100314:11100317]") result.DumpValues()
Output: Read logigcal data: Dump all result values Record Isn: 0393 ID = > 11100314 < FULL-NAME = [ 1 ] FIRST-NAME = > WOLFGANG < NAME = > SCHMIDT < MIDDLE-NAME = > MARIA < Record Isn: 0261 ID = > 11100315 < FULL-NAME = [ 1 ] FIRST-NAME = > GLORIA < NAME = > MERTEN < MIDDLE-NAME = > ELISABETH < Record Isn: 0262 ID = > 11100316 < FULL-NAME = [ 1 ] FIRST-NAME = > HEINZ < NAME = > RAMSER < MIDDLE-NAME = > EWALD < Record Isn: 0263 ID = > 11100317 < FULL-NAME = [ 1 ] FIRST-NAME = > ALFONS < NAME = > DORSCH < MIDDLE-NAME = > FRITZ <
Example (ReadWithMap) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } adatypes.Central.Log.Infof("TEST: ExampleAdabas_readFileDefinitionMap") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",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 var result *Response fmt.Println("Read logigcal data:") result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100314:11100317]") 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 (ReadWithMapFormatted) ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println(err) return } adatypes.Central.Log.Infof("TEST: ExampleAdabas_readFileDefinitionMap") connection, cerr := NewConnection("acj;map;config=[" + adabasStatDBIDs + ",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,BIRTH") if err != nil { return } request.Limit = 0 var result *Response fmt.Println("Read logigcal data:") result, err = request.ReadLogicalWith("PERSONNEL-ID=[11100314:11100317]") result.DumpValues()
Output: Read logigcal data: Dump all result values Record Isn: 0393 PERSONNEL-ID = > 11100314 < FULL-NAME = [ 1 ] FIRST-NAME = > WOLFGANG < NAME = > SCHMIDT < BIRTH = > 1953/08/18 < Record Isn: 0261 PERSONNEL-ID = > 11100315 < FULL-NAME = [ 1 ] FIRST-NAME = > GLORIA < NAME = > MERTEN < BIRTH = > 1949/11/02 < Record Isn: 0262 PERSONNEL-ID = > 11100316 < FULL-NAME = [ 1 ] FIRST-NAME = > HEINZ < NAME = > RAMSER < BIRTH = > 1978/12/23 < Record Isn: 0263 PERSONNEL-ID = > 11100317 < FULL-NAME = [ 1 ] FIRST-NAME = > ALFONS < NAME = > DORSCH < BIRTH = > 1948/02/29 <
Example (Store) ¶
err := initLogWithFile("connection.log") if err != nil { return } if cErr := clearFile(16); cErr != nil { return } if cErr := clearFile(19); cErr != nil { return } connection, err := NewConnection("acj;target=" + adabasModDBIDs) if err != nil { return } defer connection.Close() connection.Open() storeRequest16, rErr := connection.CreateStoreRequest(16) if err != nil { return } storeRequest16.StoreFields("AA,AB") record, err := storeRequest16.CreateRecord() err = record.SetValueWithIndex("AA", nil, "16555_0") err = record.SetValueWithIndex("AC", nil, "WABER") err = record.SetValueWithIndex("AD", nil, "EMIL") err = record.SetValueWithIndex("AE", nil, "MERK") err = storeRequest16.Store(record) if err != nil { return } storeRequest19, rErr := connection.CreateStoreRequest(19) if rErr != nil { return } storeRequest19.StoreFields("AA,CD") record, err = storeRequest19.CreateRecord() err = record.SetValueWithIndex("AA", nil, "19555_0") err = record.SetValueWithIndex("AC", nil, "WABER") err = record.SetValueWithIndex("AD", nil, "EMIL") err = record.SetValueWithIndex("AE", nil, "MERK") err = storeRequest19.Store(record) if err != nil { return } err = connection.EndTransaction() if err != nil { return } fmt.Println("Read file 16 ...") dumpStoredData(adabasModDBIDs, 16, "16555") fmt.Println("Read file 19 ...") dumpStoredData(adabasModDBIDs, 19, "19555")
Output: Read file 16 ... Dump all result values Record Isn: 0001 AA = > 16555_0 < AB = [ 1 ] AC = > WABER < AE = > MERK < AD = > EMIL < Read file 19 ... Dump all result values Record Isn: 0001 AA = > 19555_0 < CD = [ 1 ] AD = > EMIL < AE = > MERK < AF = > <
Example (WideCharacter) ¶
initLogWithFile("connection.log") connection, cerr := NewConnection("acj;target=" + adabasModDBIDs) if cerr != nil { return } defer connection.Close() request, err := connection.CreateFileReadRequest(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 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) AddCredential ¶ added in v1.1.2
func (connection *Connection) AddCredential(user string, pwd string)
AddCredential add user id and password credentials
func (*Connection) CreateDeleteRequest ¶
func (connection *Connection) CreateDeleteRequest(fnr Fnr) (*DeleteRequest, error)
CreateDeleteRequest create a delete request
func (*Connection) CreateFileReadRequest ¶ added in v1.1.1
func (connection *Connection) CreateFileReadRequest(fnr Fnr) (*ReadRequest, error)
CreateFileReadRequest create a read 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() (request *ReadRequest, err error)
CreateReadRequest create a read request
func (*Connection) CreateStoreRequest ¶
func (connection *Connection) CreateStoreRequest(fnr Fnr) (*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 Cursoring ¶ added in v1.1.1
type Cursoring struct {
// contains filtered or unexported fields
}
Cursoring the structure support cursor instance handling reading record list in chunks defined by a search or descriptor
func (*Cursoring) HasNextRecord ¶ added in v1.1.1
HasNextRecord check cursoring if a next record exist in the query
func (*Cursoring) NextRecord ¶ added in v1.1.1
NextRecord cursoring to next record, if current chunk contains record, no call is send. If the chunk is not in memory, the next chunk is read in memory
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 Fnr) (*DeleteRequest, error)
NewDeleteRequest create a new store Request instance
func NewDeleteRequestAdabas ¶
func NewDeleteRequestAdabas(adabas *Adabas, fnr Fnr) *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 NewMapNameDeleteRequestRepo ¶ added in v1.1.1
func NewMapNameDeleteRequestRepo(mapName string, adabas *Adabas, mapRepository *Repository) (request *DeleteRequest, err error)
NewMapNameDeleteRequestRepo create a new delete Request instance
func (*DeleteRequest) BackoutTransaction ¶ added in v1.1.1
func (request *DeleteRequest) BackoutTransaction() error
Backout 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
Endtransaction end the transaction of 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
func (*DeleteRequest) TraverseFields ¶ added in v1.2.1
func (request *DeleteRequest) TraverseFields(t adatypes.TraverserMethods, p interface{}) error
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 ID ¶
type ID struct { AdaID *AID // contains filtered or unexported fields }
ID Adabas Id
func (*ID) AddCredential ¶ added in v1.1.2
AddCredential add user id and password credentials
func (*ID) SetHost ¶ added in v1.1.1
SetHost set the host id name into the ID, prepare byte array correctly
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 Generated uint64 ModificationTime []uint64 // contains filtered or unexported fields }
Map Adabas map structure defining repository where the Map is stored at
func AllGlobalMaps ¶ added in v1.2.1
AllGlobalMaps search in map repository all maps
func LoadJSONMap ¶ added in v1.1.1
LoadJSONMap load JSON Map file and creates Map instance of that
func NewAdabasMap ¶
func NewAdabasMap(name string, repository *DatabaseURL) *Map
NewAdabasMap create new Adabas map instance
func ParseJSONFileForFields ¶
ParseJSONFileForFields Parse JSON map export file
Example ¶
lerr := initLogWithFile("mapjson.log") if lerr != nil { fmt.Println("Init log error", lerr) return } p := os.Getenv("TESTFILES") if p == "" { p = "." } name := p + string(os.PathSeparator) + "Maps.json" fmt.Println("Loading ....Maps.json") file, err := os.Open(name) if err != nil { return } defer file.Close() maps, err := ParseJSONFileForFields(file) if err != nil { fmt.Println("Error parsing file", err) return } fmt.Println("Number of maps", len(maps)) for _, m := range maps { fmt.Println("MAP", m.Name) fmt.Printf(" %s %d\n", m.Data.URL.String(), m.Data.Fnr) for _, f := range m.Fields { fmt.Printf(" ln=%s sn=%s len=%d format=%s content=%s\n", f.LongName, f.ShortName, f.Length, f.FormatType, f.ContentType) } }
Output: Loading ....Maps.json Number of maps 17 MAP NEW_EMPLOYEES 23 9 ln=personnel-data sn=A0 len=8 format= content= ln=personnel-id sn=AA len=8 format=A content= ln=id-data sn=AB len=12 format= content= ln=personnel-no sn=AC len=4 format=I content= ln=id-card sn=AD len=8 format=B content= ln=signature sn=AE len=0 format=A content= ln=full-name sn=B0 len=130 format= content= ln=first-name sn=BA len=40 format=U content=charset=UTF-8 ln=middle-name sn=BB len=40 format=U content=charset=UTF-8 ln=name sn=BC len=50 format=U content=charset=UTF-8 ln=mar-stat sn=CA len=1 format=A content= ln=sex sn=DA len=1 format=A content= ln=birth sn=EA len=4 format=D content= ln=private-address sn=F0 len=113 format= content= ln=p-address-line sn=FA len=60 format=U content=charset=UTF-8 ln=p-address-line sn=FA len=60 format=U content=charset=UTF-8 ln=p-city sn=FB len=40 format=U content=charset=UTF-8 ln=p-post-code sn=FC len=10 format=A content= ln=p-country sn=FD len=3 format=A content= ln=p-phone-email sn=F1 len=131 format= content= ln=p-area-code sn=FE len=6 format=A content= ln=private-phone sn=FF len=15 format=A content= ln=private-fax sn=FG len=15 format=A content= ln=private-mobile sn=FH len=15 format=A content= ln=private-email sn=FI len=80 format=A content= ln=private-email sn=FI len=80 format=A content= ln=business-address sn=I0 len=98 format= content= ln=b-address-line sn=IA len=40 format=U content=charset=UTF-8 ln=b-address-line sn=IA len=40 format=U content=charset=UTF-8 ln=b-city sn=IB len=40 format=U content=charset=UTF-8 ln=b-post-code sn=IC len=10 format=A content= ln=b-country sn=ID len=3 format=A content= ln=room_number sn=IE len=5 format=A content= ln=b-phone-email sn=I1 len=131 format= content= ln=b-area-code sn=IF len=6 format=A content= ln=business-phone sn=IG len=15 format=A content= ln=business-fax sn=IH len=15 format=A content= ln=business-mobile sn=II len=15 format=A content= ln=business-email sn=IJ len=80 format=A content= ln=business-email sn=IJ len=80 format=A content= ln=job-title sn=KA len=66 format=U content=charset=UTF-8 ln=income sn=L0 len=15 format= content= ln=curr-code sn=LA len=3 format=A content= ln=salary sn=LB len=6 format=P content= ln=bonus sn=LC len=6 format=P content= ln=bonus sn=LC len=6 format=P content= ln=total-income sn=MA len=4 format=F content= ln=leave-date sn=N0 len=5 format= content= ln=leave-due sn=NA len=2 format=N content= ln=leave-taken sn=NB len=3 format=N content= ln=leave-booked sn=O0 len=16 format= content= ln=leave-start sn=OA len=8 format=N content= ln=leave-end sn=OB len=8 format=N content= ln=language sn=PA len=3 format=A content= ln=language sn=PA len=3 format=A content= ln=last-update sn=QA len=7 format=P content= ln=picture sn=RA len=0 format=A content= ln=documents sn=S0 len=83 format= content= ln=document-description sn=SA len=80 format=U content=charset=UTF-8 ln=document-type sn=SB len=3 format=A content= ln=document sn=SC len=0 format=A content= ln=document sn=SC len=0 format=A content= ln=creation_time sn=TC len=20 format=N content= ln=Last_Updates sn=TU len=20 format=N content= ln=Last_Updates sn=TU len=20 format=N content= MAP ADABAS_MAP 23 4 ln=TYPE-GROUP sn=TY len=0 format= content= ln=TYPE sn=TA len=1 format=B content= ln=GENERATED sn=AA len=28 format= content= ln=HOST sn=AB len=20 format=A content= ln=DATE sn=AC len=8 format=B content= ln=VERSION sn=AD len=2 format=B content= ln=LOCATION sn=RA len=45 format= content= ln=FILE-NR sn=RF len=4 format=B content= ln=DATA-DATABASE sn=RD len=20 format=A content= ln=MAPNAME sn=RN len=20 format=A content= ln=MAP-FLAGS sn=RB len=1 format=B content= ln=MAP-OPTIONS sn=RO len=20 format=A content= ln=INDEX sn=DL len=4 format= content= ln=INDEX-FILE sn=DF len=4 format=B content= ln=INDEX-DATABASE sn=DD len=20 format=A content= ln=MAPPING sn=MA len=68 format= content= ln=SHORTNAME sn=MB len=20 format=A content= ln=TYPE-CONVERSION sn=MC len=4 format=B content= ln=LONGNAME sn=MD len=20 format=A content= ln=LENGTH sn=ML len=4 format=B content= ln=CONTENTTYPE sn=MT len=20 format=A content= ln=FORMATTYPE sn=MY len=2 format=A content= ln=TIMESTAMP sn=ZB len=8 format=B content= ln=TIMESTAMP sn=ZB len=8 format=B content= MAP EMPLOYEES-NAT-DDM 23 11 ln=PERSONNEL-ID sn=AA len=8 format=A content= ln=FULL-NAME sn=AB len=21 format= content= ln=FIRST-NAME sn=AC len=20 format=A content= ln=NAME sn=AE len=20 format=A content= ln=MIDDLE-I sn=AD len=1 format=A content= ln=MAR-STAT sn=AF len=1 format=A content= ln=SEX sn=AG len=1 format=A content= ln=BIRTH sn=AH len=4 format=D content= ln=FULL-ADDRESS sn=A1 len=50 format= content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=CITY sn=AJ len=20 format=A content= ln=ZIP sn=AK len=10 format=A content= ln=COUNTRY sn=AL len=3 format=A content= ln=TELEPHONE sn=A2 len=6 format= content= ln=AREA-CODE sn=AN len=6 format=A content= ln=PHONE sn=AM len=15 format=A content= ln=DEPT sn=AO len=6 format=A content= ln=JOB-TITLE sn=AP len=25 format=A content= ln=INCOME sn=AQ len=12 format= content= ln=CURR-CODE sn=AR len=3 format=A content= ln=SALARY sn=AS len=9 format=P content= ln=BONUS sn=AT len=9 format=P content= ln=BONUS sn=AT len=9 format=P content= ln=LEAVE-DATA sn=A3 len=2 format= content= ln=LEAVE-DUE sn=AU len=2 format=N content= ln=LEAVE-TAKEN sn=AV len=2 format=N content= ln=LEAVE-BOOKED sn=AW len=8 format= content= ln=LEAVE-START sn=AX len=8 format=N content= ln=LEAVE-END sn=AY len=8 format=N content= ln=LANG sn=AZ len=3 format=A content= ln=LANG sn=AZ len=3 format=A content= ln=PH sn=PH len=0 format=A content= ln=LEAVE-LEFT sn=H1 len=0 format=A content= ln=DEPARTMENT sn=S1 len=0 format=A content= ln=DEPT-PERSON sn=S2 len=0 format=A content= ln=CURRENCY-SALARY sn=S3 len=0 format=A content= MAP LOBEXAMPLE 23 202 ln=Generated sn=AA len=16 format= content= ln=Host sn=AB len=0 format=A content= ln=Date sn=AC len=8 format=B content= ln=Version sn=AD len=8 format=B content= ln=Location sn=BA len=0 format= content= ln=Directory sn=BB len=0 format=U content=charset=UTF-8 ln=Filename sn=BC len=0 format=U content=charset=UTF-8 ln=absoluteFilename sn=BD len=0 format=U content=charset=UTF-8 ln=Type sn=CA len=4 format= content= ln=Size sn=CB len=4 format=B content= ln=MimeType sn=CC len=0 format=U content=charset=UTF-8 ln=Data sn=DA len=0 format= content= ln=Thumbnail sn=DB len=0 format=A content= ln=Picture sn=DC len=0 format=A content= ln=Checksum sn=EA len=80 format= content= ln=ThumbnailSHAchecksum sn=EB len=40 format=A content= ln=PictureSHAchecksum sn=EC len=40 format=A content= ln=EXIFinformation sn=FA len=0 format= content= ln=Model sn=FB len=0 format=U content=charset=UTF-8 ln=Orientation sn=FC len=0 format=U content=charset=UTF-8 ln=DateExif sn=FD len=0 format=U content=charset=UTF-8 ln=DateOriginal sn=FE len=0 format=U content=charset=UTF-8 ln=ExposureTime sn=FF len=0 format=U content=charset=UTF-8 ln=F-Number sn=FG len=0 format=U content=charset=UTF-8 ln=Width sn=FH len=0 format=U content=charset=UTF-8 ln=Height sn=FI len=0 format=U content=charset=UTF-8 MAP VEHICLES 23 12 ln=REG-NUM sn=AA len=15 format=A content= ln=CHASSIS-NUM sn=AB len=4 format=B content= ln=PERSONNEL-ID sn=AC len=8 format=A content= ln=CAR-DETAILS sn=CD len=40 format= content= ln=MAKE sn=AD len=20 format=A content= ln=MODEL sn=AE len=20 format=A content= ln=COLOR sn=AF len=10 format=A content= ln=YEAR sn=AG len=4 format=N content= ln=CLASS sn=AH len=1 format=A content= ln=LEASE-PUR sn=AI len=1 format=A content= ln=DATE-ACQ sn=AJ len=8 format=N content= ln=CURR-CODE sn=AL len=3 format=A content= ln=MAINT-COST sn=AM len=7 format=P content= ln=MAINT-COST sn=AM len=7 format=P content= ln=MODEL-YEAR-MAKE sn=AO len=0 format=A content= MAP EmployeeMap 23 11 ln=Id sn=AA len=-1 format=A content= ln=Name sn=AB len=-1 format= content= ln=FirstName sn=AC len=-1 format=A content= ln=LastName sn=AE len=-1 format=A content= ln=City sn=AJ len=-1 format=A content= ln=Department sn=AO len=-1 format=A content= ln=JobTitle sn=AP len=-1 format=A content= ln=Income sn=AQ len=-1 format= content= ln=Salary sn=AS len=-1 format=A content= ln=Bonus sn=AT len=-1 format=A content= ln=Bonus sn=AT len=-1 format=A content= MAP VehicleMap 23 12 ln=Vendor sn=AD len=-1 format=A content= ln=Model sn=AE len=-1 format=A content= ln=Color sn=AF len=-1 format=A content= MAP LOB_MAP 23 202 ln=Location sn=BA len=-1 format= content= ln=Filename sn=BC len=-1 format=A content= ln=Type sn=CA len=-1 format= content= ln=MimeType sn=CC len=-1 format=A content= ln=Data sn=DA len=-1 format= content= ln=Picture sn=DC len=-1 format=A content= ln=Checksum sn=EA len=-1 format= content= ln=PictureSHAchecksum sn=EC len=-1 format=A content= MAP PictureStore 23 280 ln=Generated sn=AA len=20 format= content= ln=Host sn=AB len=0 format=A content= ln=Date sn=AC len=8 format=B content= ln=Version sn=AD len=12 format=A content= ln=Location sn=BA len=0 format= content= ln=Directory sn=BB len=0 format=U content=charset=UTF-8 ln=Filename sn=BC len=0 format=U content=charset=UTF-8 ln=absoluteFilename sn=BD len=0 format=U content=charset=UTF-8 ln=Information sn=IN len=0 format= content= ln=Description sn=ID len=0 format=U content=charset=UTF-8 ln=Title sn=IT len=0 format=U content=charset=UTF-8 ln=Type sn=CA len=4 format= content= ln=Size sn=CB len=4 format=B content= ln=MimeType sn=CC len=0 format=U content=charset=UTF-8 ln=Data sn=DA len=0 format= content= ln=Thumbnail sn=DB len=0 format=A content= ln=Picture sn=DC len=0 format=A content= ln=Checksum sn=EA len=80 format= content= ln=ThumbnailSHAchecksum sn=EB len=40 format=A content= ln=PictureSHAchecksum sn=EC len=40 format=A content= ln=EXIFinformation sn=FA len=24 format= content= ln=Model sn=FB len=0 format=U content=charset=UTF-8 ln=Orientation sn=FC len=0 format=U content=charset=UTF-8 ln=DateExif sn=FD len=8 format=P content= ln=DateOriginal sn=FE len=8 format=P content= ln=ExposureTime sn=FF len=0 format=U content=charset=UTF-8 ln=F-Number sn=FG len=0 format=U content=charset=UTF-8 ln=Width sn=FH len=4 format=B content= ln=Height sn=FI len=4 format=B content= ln=Tag sn=TA len=0 format= content= ln=TagName sn=TN len=0 format=U content=charset=UTF-8 ln=TagValue sn=TV len=0 format=U content=charset=UTF-8 ln=Album sn=AL len=0 format=A content= ln=Album sn=AL len=0 format=A content= MAP LOBSTORE 23 160 ln=Generated sn=AA len=16 format= content= ln=Host sn=AB len=0 format=A content= ln=Date sn=AC len=8 format=B content= ln=Version sn=AD len=8 format=B content= ln=Location sn=BA len=0 format= content= ln=Directory sn=BB len=0 format=U content=charset=UTF-8 ln=Filename sn=BC len=0 format=U content=charset=UTF-8 ln=absoluteFilename sn=BD len=0 format=U content=charset=UTF-8 ln=Type sn=CA len=4 format= content= ln=Size sn=CB len=4 format=B content= ln=MimeType sn=CC len=0 format=U content=charset=UTF-8 ln=Data sn=DA len=0 format= content= ln=Thumbnail sn=DB len=0 format=A content= ln=Picture sn=DC len=0 format=A content= ln=Checksum sn=EA len=80 format= content= ln=ThumbnailSHAchecksum sn=EB len=40 format=A content= ln=PictureSHAchecksum sn=EC len=40 format=A content= ln=EXIFinformation sn=FA len=0 format= content= ln=Model sn=FB len=0 format=U content=charset=UTF-8 ln=Orientation sn=FC len=0 format=U content=charset=UTF-8 ln=DateExif sn=FD len=0 format=U content=charset=UTF-8 ln=DateOriginal sn=FE len=0 format=U content=charset=UTF-8 ln=ExposureTime sn=FF len=0 format=U content=charset=UTF-8 ln=F-Number sn=FG len=0 format=U content=charset=UTF-8 ln=Width sn=FH len=0 format=U content=charset=UTF-8 ln=Height sn=FI len=0 format=U content=charset=UTF-8 MAP EmployeeX 23 11 ln=PERSONNEL-ID sn=AA len=8 format=A content= ln=FULL-NAME sn=AB len=0 format= content= ln=FIRST-NAME sn=AC len=20 format=A content= ln=NAME sn=AE len=20 format=A content= ln=MIDDLE-I sn=AD len=1 format=A content= ln=MAR-STAT sn=AF len=1 format=A content= ln=SEX sn=AG len=1 format=A content= ln=BIRTH sn=AH len=11 format=P content= ln=FULL-ADDRESS sn=A1 len=0 format= content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=CITY sn=AJ len=20 format=A content= ln=ZIP sn=AK len=10 format=A content= ln=COUNTRY sn=AL len=3 format=A content= ln=TELEPHONE sn=A2 len=0 format= content= ln=AREA-CODE sn=AN len=6 format=A content= ln=PHONE sn=AM len=15 format=A content= ln=DEPT sn=AO len=6 format=A content= ln=JOB-TITLE sn=AP len=25 format=A content= ln=INCOME sn=AQ len=0 format= content= ln=CURR-CODE sn=AR len=3 format=A content= ln=SALARY sn=AS len=9 format=A content= ln=BONUS sn=AT len=9 format=A content= ln=BONUS sn=AT len=9 format=A content= ln=LEAVE-DATA sn=A3 len=0 format= content= ln=LEAVE-DUE sn=AU len=2 format=N content= ln=LEAVE-TAKEN sn=AV len=2 format=N content= ln=LEAVE-BOOKED sn=AW len=0 format= content= ln=LEAVE-START sn=AX len=8 format=A content= ln=LEAVE-END sn=AY len=8 format=A content= ln=LANG sn=AZ len=3 format=A content= ln=LANG sn=AZ len=3 format=A content= MAP Empl 23 11 ln=PERSONNEL-ID sn=AA len=8 format=A content= ln=FULL-NAME sn=AB len=0 format= content= ln=FIRST-NAME sn=AC len=20 format=A content= ln=NAME sn=AE len=20 format=A content= ln=MIDDLE-I sn=AD len=1 format=A content= ln=MAR-STAT sn=AF len=1 format=A content= ln=SEX sn=AG len=1 format=A content= ln=BIRTH sn=AH len=4 format=D content= ln=FULL-ADDRESS sn=A1 len=0 format= content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=CITY sn=AJ len=20 format=A content= ln=ZIP sn=AK len=10 format=A content= ln=COUNTRY sn=AL len=3 format=A content= ln=TELEPHONE sn=A2 len=0 format= content= ln=AREA-CODE sn=AN len=6 format=A content= ln=PHONE sn=AM len=15 format=A content= ln=DEPT sn=AO len=6 format=A content= ln=JOB-TITLE sn=AP len=25 format=A content= ln=INCOME sn=AQ len=0 format= content= ln=CURR-CODE sn=AR len=3 format=A content= ln=SALARY sn=AS len=9 format=A content= ln=BONUS sn=AT len=9 format=A content= ln=BONUS sn=AT len=9 format=A content= ln=LEAVE-DATA sn=A3 len=0 format= content= ln=LEAVE-DUE sn=AU len=2 format=N content= ln=LEAVE-TAKEN sn=AV len=2 format=N content= ln=LEAVE-BOOKED sn=AW len=0 format= content= ln=LEAVE-START sn=AX len=8 format=A content= ln=LEAVE-END sn=AY len=8 format=A content= ln=LANG sn=AZ len=3 format=A content= ln=LANG sn=AZ len=3 format=A content= ln=PHONETIC-NAME sn=PH len=20 format=A content= MAP DublicateNames 23 11 ln=PERSONNEL-ID sn=AA len=8 format=A content= ln=FULL-NAME sn=AB len=21 format= content= ln=FIRST-NAME sn=AC len=20 format=A content= ln=NAME sn=AE len=20 format=A content= ln=MIDDLE-I sn=AD len=1 format=A content= ln=MAR-STAT sn=AF len=1 format=A content= ln=SEX sn=AG len=1 format=A content= ln=BIRTH sn=AH len=4 format=D content= ln=FULL-ADDRESS sn=A1 len=50 format= content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=ADDRESS-LINE sn=AI len=20 format=A content= ln=CITY sn=AJ len=20 format=A content= ln=ZIP sn=AK len=10 format=A content= ln=COUNTRY sn=AL len=3 format=A content= ln=TELEPHONE sn=A2 len=6 format= content= ln=AREA-CODE sn=AN len=6 format=A content= ln=PHONE sn=AM len=15 format=A content= ln=DEPT sn=AO len=6 format=A content= ln=JOB-TITLE sn=AP len=25 format=A content= ln=INCOME sn=AQ len=12 format= content= ln=CURR-CODE sn=AR len=3 format=A content= ln=SALARY sn=AS len=9 format=P content= ln=BONUS sn=AT len=9 format=P content= ln=BONUS sn=AT len=9 format=P content= ln=LEAVE-DATA sn=A3 len=2 format= content= ln=LEAVE-DUE sn=AU len=2 format=N content= ln=LEAVE-TAKEN sn=AV len=2 format=N content= ln=LEAVE-BOOKED sn=AW len=8 format= content= ln=LEAVE-START sn=AX len=8 format=N content= ln=LEAVE-END sn=AY len=8 format=N content= ln=LANG sn=AZ len=3 format=A content= ln=LANG sn=AZ len=3 format=A content= ln=PH sn=PH len=0 format=A content= ln=LEAVE-LEFT sn=H1 len=0 format=A content= ln=DEPARTMENT sn=S1 len=0 format=A content= MAP NewEmployees 23 9 ln=personnel-data sn=A0 len=0 format= content= ln=personnel-id sn=AA len=8 format=A content= ln=id-data sn=AB len=0 format= content= ln=personnel-no !UQ taken! sn=AC len=4 format=I content= ln=id-card sn=AD len=8 format=B content= ln=signature sn=AE len=0 format=A content= ln=full-name sn=B0 len=0 format= content= ln=first-name sn=BA len=40 format=U content=charset=UTF-8 ln=middle-name sn=BB len=40 format=U content=charset=UTF-8 ln=name sn=BC len=50 format=U content=charset=UTF-8 ln=mar-stat sn=CA len=1 format=A content= ln=sex sn=DA len=1 format=A content= ln=birth sn=EA len=4 format=P content= ln=private-address sn=F0 len=0 format= content= ln=address-line sn=FA len=60 format=A content= ln=address-line sn=FA len=60 format=A content= ln=city sn=FB len=40 format=A content= ln=post-code sn=FC len=10 format=A content= ln=country sn=FD len=3 format=A content= ln=phone-email sn=F1 len=0 format= content= ln=area-code sn=FE len=6 format=A content= ln=private-phone sn=FF len=15 format=A content= ln=private-fax sn=FG len=15 format=A content= ln=private-mobile sn=FH len=15 format=A content= ln=private-email sn=FI len=80 format=A content= ln=private-email sn=FI len=80 format=A content= MAP MF_TYPES_FRACTIONAL 23 101 ln=ISN sn=AA len=8 format=P content= ln=NUM_UNPACKED_W_SIGN_U sn=AB len=10 format=N content= ln=BINARY sn=AC len=10 format=B content= ln=B3_FIELD sn=AD len=3 format=B content= ln=ALPHA sn=AE len=32 format=A content= ln=PACKED_NUMERIC sn=AF len=10 format=P content= ln=B7_FIELD sn=AG len=7 format=B content= ln=B8_FIELD sn=AH len=8 format=B content= ln=B2_FIELD sn=AI len=2 format=B content= ln=P16_2 sn=AJ len=16 format=P content= ln=LOGICAL sn=AK len=1 format=L content= ln=NUM_UNPACKED_W_SIGN_N sn=AL len=10 format=N content= ln=FLOATING_POINT sn=AM len=8 format=F content= ln=B5_FIELD sn=AN len=5 format=B content= ln=ALPHA_NV_OPTION sn=AO len=32 format=A content= ln=INTEGER sn=AP len=4 format=I content= ln=B4_FIELD sn=AQ len=4 format=B content= ln=TIME sn=AR len=7 format=T content= ln=DATE sn=AS len=4 format=D content= ln=NUMERIC_UNPACKED_N sn=AT len=10 format=N content= ln=VARCHAR sn=AU len=0 format=A content= ln=B6_FIELD sn=AV len=6 format=B content= ln=PACKED_NUM_W_SIGN sn=AW len=10 format=P content= ln=B9_FIELD sn=AX len=9 format=B content= ln=B1_FIELD sn=AY len=1 format=B content= ln=NUMERIC_UNPACKED_U sn=AZ len=10 format=N content= MAP MF_TYPES_FRACTIONAL2 23 101 ln=ISN sn=AA len=5 format=P content= ln=NUM_UNPACKED_W_SIGN_U sn=AB len=10 format=N content= ln=BINARY sn=AC len=10 format=B content= ln=B3_FIELD sn=AD len=3 format=N content= ln=ALPHA sn=AE len=32 format=A content= ln=PACKED_NUMERIC sn=AF len=6 format=N content= ln=B7_FIELD sn=AG len=7 format=N content= ln=B8_FIELD sn=AH len=8 format=B content= ln=B2_FIELD sn=AI len=2 format=N content= ln=P16_2 sn=AJ len=9 format=P content=fractionalshift=2 ln=LOGICAL sn=AK len=1 format=N content= ln=NUM_UNPACKED_W_SIGN_N sn=AL len=10 format=N content= ln=FLOATING_POINT sn=AM len=8 format=F content= ln=B5_FIELD sn=AN len=5 format=N content= ln=ALPHA_NV_OPTION sn=AO len=32 format=A content= ln=INTEGER sn=AP len=4 format=N content= ln=B4_FIELD sn=AQ len=4 format=N content= ln=TIME sn=AR len=7 format=P content= ln=DATE sn=AS len=4 format=P content= ln=NUMERIC_UNPACKED_N sn=AT len=10 format=N content= ln=VARCHAR sn=AU len=0 format=A content= ln=B6_FIELD sn=AV len=6 format=N content= ln=PACKED_NUM_W_SIGN sn=AW len=6 format=N content= ln=B9_FIELD sn=AX len=9 format=B content= ln=B1_FIELD sn=AY len=1 format=N content= ln=NUMERIC_UNPACKED_U sn=AZ len=10 format=N content= MAP Employees 23 16 ln=ID sn=AA len=8 format=A content= ln=FullName sn=AB len=40 format= content= ln=FirstName sn=AC len=20 format=A content= ln=Name sn=AE len=20 format=A content= ln=MiddleName sn=AD len=20 format=A content= ln=MarriageState sn=AF len=1 format=A content= ln=Sex sn=AG len=1 format=A content= ln=Birth sn=AH len=4 format=D content= ln=Address sn=A1 len=50 format= content= ln=AddressLine sn=AI len=20 format=A content= ln=AddressLine sn=AI len=20 format=A content= ln=City sn=AJ len=20 format=A content= ln=Zip sn=AK len=10 format=A content= ln=Country sn=AL len=3 format=A content=
func SearchMapRepository ¶
SearchMapRepository search in map repository for a specific map name
func (*Map) FieldNames ¶ added in v1.2.1
FieldNames list of fields of map
func (*Map) FieldShortNames ¶ added in v1.2.1
FieldShortNames list of fields of map
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"` FieldType string `json:"FieldType"` Charset string `json:"Charset"` File uint32 `json:"File"` 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 { Start uint64 Limit uint64 Multifetch uint32 RecordBufferShift uint32 HoldRecords adatypes.HoldType // contains filtered or unexported fields }
ReadRequest request instance handling field query information
Example (HistogramWith) ¶
err := initLogWithFile("request.log") if err != nil { fmt.Println(err) return } adabas, _ := NewAdabas(adabasModDBID) request, _ := NewReadRequest(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 (HistogramWithStream) ¶
err := initLogWithFile("request.log") if err != nil { fmt.Println("Error init log", err) return } adabas, _ := NewAdabas(24) request, _ := NewReadRequest(adabas, 11) defer request.Close() i := uint32(0) result, err := request.HistogramWithStream("AE='SMITH'", dumpStream, &i) fmt.Println("Read done ...") if err != nil { fmt.Println("Error reading histogram", err) return } if i != 1 { fmt.Println("Index error", i) } if result != nil { result.DumpValues() fmt.Println("Result set should be empty") }
Output: Read 0 -> SMITH = 19 Read done ... Dump all result values Result set should be empty
Example (ReadISN) ¶
err := initLogWithFile("connection.log") if err != nil { fmt.Println("Log init error", err) return } url := adabasModDBIDs connection, cerr := NewConnection("acj;target=" + url) if cerr != nil { fmt.Println("Connection error", err) return } defer connection.Close() fmt.Println(connection) openErr := connection.Open() if openErr != nil { fmt.Println("Open error", openErr) } request, err := connection.CreateFileReadRequest(11) if err != nil { fmt.Println("Create read request error", openErr) return } request.Limit = 0 var result *Response result, err = request.ReadISN(1) if err != nil { fmt.Println("Read error", openErr) return } if result != nil { err = result.DumpValues() if err != nil { fmt.Println("Dump values error", openErr) return } }
Output: Adabas url=23 fnr=0 Dump all result values Record Isn: 0001 AA = > 50005800 < AB = [ 1 ] AC = > SIMONE < AE = > ADAM < AD = > < AF = > M < AG = > F < AH = > 712981 < A1 = [ 1 ] AI = [ 1 ] AI[01] = > 26 AVENUE RHIN ET DA < AJ = > JOIGNY < AK = > 89300 < AL = > F < A2 = [ 1 ] AN = > 1033 < AM = > 44864858 < AO = > VENT59 < AP = > CHEF DE SERVICE < AQ = [ 1 ] AR[01] = > EUR < AS[01] = > 963 < AT[01] = [ 1 ] AT[01,01] = > 138 < A3 = [ 1 ] AU = > 19 < AV = > 5 < AW = [ 1 ] AX[01] = > 19990801 < AY[01] = > 19990831 < AZ = [ 2 ] AZ[01] = > FRE < AZ[02] = > ENG < PH = > < H1 = > 1905 < S1 = > VENT < S2 = > VENT59ADAM < S3 = > <
Example (ReadLogicalWithCursoringLimit) ¶
ferr := initLogWithFile("connection_map.log") if ferr != nil { fmt.Println("Error initializing log", ferr) return } connection, cerr := NewConnection("acj;map;config=[" + adabasModDBIDs + ",4]") if cerr != nil { fmt.Println("Error creating new connection", cerr) return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if rerr != nil { fmt.Println("Error creating read request", cerr) return } // Define fields to be part of the request request.QueryFields("NAME,PERSONNEL-ID") // Define chunks of cursoring requests request.Limit = 5 // Init cursoring using search col, cerr := request.ReadLogicalWithCursoring("PERSONNEL-ID=[11100110:11100120]") if cerr != nil { fmt.Println("Error init cursoring", cerr) return } for col.HasNextRecord() { record, rerr := col.NextRecord() if rerr != nil { fmt.Println("Error getting next record", rerr) return } fmt.Printf("New record received: ISN=%d\n", record.Isn) record.DumpValues() }
Output: New record received: ISN=210 Dump all record values PERSONNEL-ID = > 11100110 < FULL-NAME = [ 1 ] NAME = > BUNGERT < New record received: ISN=211 Dump all record values PERSONNEL-ID = > 11100111 < FULL-NAME = [ 1 ] NAME = > THIELE < New record received: ISN=212 Dump all record values PERSONNEL-ID = > 11100112 < FULL-NAME = [ 1 ] NAME = > THOMA < New record received: ISN=213 Dump all record values PERSONNEL-ID = > 11100113 < FULL-NAME = [ 1 ] NAME = > TREIBER < New record received: ISN=214 Dump all record values PERSONNEL-ID = > 11100114 < FULL-NAME = [ 1 ] NAME = > UNGER < New record received: ISN=1102 Dump all record values PERSONNEL-ID = > 11100115 < FULL-NAME = [ 1 ] NAME = > VETTER < New record received: ISN=215 Dump all record values PERSONNEL-ID = > 11100116 < FULL-NAME = [ 1 ] NAME = > VOGEL < New record received: ISN=216 Dump all record values PERSONNEL-ID = > 11100117 < FULL-NAME = [ 1 ] NAME = > WABER < New record received: ISN=217 Dump all record values PERSONNEL-ID = > 11100118 < FULL-NAME = [ 1 ] NAME = > WAGNER <
func NewReadRequest ¶ added in v1.2.1
func NewReadRequest(param ...interface{}) (request *ReadRequest, err error)
NewReadRequest create a request defined by another request (not even ReadRequest required)
func (*ReadRequest) BackoutTransaction ¶ added in v1.1.1
func (request *ReadRequest) BackoutTransaction() error
Backout closes the Adabas session
func (*ReadRequest) EndTransaction ¶
func (request *ReadRequest) EndTransaction() error
Endtransaction end the transaction of the Adabas session
func (*ReadRequest) HistogramBy ¶
func (request *ReadRequest) HistogramBy(descriptor string) (result *Response, err error)
HistogramBy read a descriptor in a descriptor order
func (*ReadRequest) HistogramByCursoring ¶ added in v1.1.2
func (request *ReadRequest) HistogramByCursoring(descriptor string) (cursor *Cursoring, err error)
HistogramByCursoring initialize the read records using cursoring
func (*ReadRequest) HistogramWith ¶
func (request *ReadRequest) HistogramWith(search string) (result *Response, err error)
HistogramWith read a descriptor given by a search criteria
func (*ReadRequest) HistogramWithCursoring ¶ added in v1.1.2
func (request *ReadRequest) HistogramWithCursoring(search string) (cursor *Cursoring, err error)
HistogramWithCursoring initialize the read records using cursoring
func (*ReadRequest) HistogramWithStream ¶ added in v1.1.1
func (request *ReadRequest) HistogramWithStream(search string, streamFunction StreamFunction, x interface{}) (result *Response, err error)
HistogramWithStream 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(fieldq string) (err error)
QueryFields define the fields queried in that request
func (*ReadRequest) ReadByISN ¶ added in v1.2.1
func (request *ReadRequest) ReadByISN() (result *Response, err error)
ReadByISN read records with a logical order given by a ISN sequence
func (*ReadRequest) ReadISN ¶
func (request *ReadRequest) ReadISN(isn adatypes.Isn) (result *Response, 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 *Response, err error)
ReadLogicalBy read in logical order given by the descriptor argument
Example ¶
err := initLogWithFile("request.log") if err != nil { fmt.Println(err) return } adabas, _ := NewAdabas(adabasModDBID) request, _ := NewReadRequest(adabas, 11) defer request.Close() request.Limit = 2 request.QueryFields("AA,AC,AD") var result *Response result, err = request.ReadLogicalBy("AA") 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) ReadLogicalByStream ¶ added in v1.1.1
func (request *ReadRequest) ReadLogicalByStream(descriptor string, streamFunction StreamFunction, x interface{}) (result *Response, err error)
ReadLogicalByStream read records with a logical order given by a descriptor sort and calls stream function
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 *Response, err error)
ReadLogicalWith read records with a logical order given by a search string
func (*ReadRequest) ReadLogicalWithCursoring ¶ added in v1.1.1
func (request *ReadRequest) ReadLogicalWithCursoring(search string) (cursor *Cursoring, err error)
ReadLogicalWithCursoring initialize the read records using cursoring
Example ¶
err := initLogWithFile("connection_map.log") if err != nil { fmt.Println("Error initializing log", err) return } connection, cerr := NewConnection("acj;map;config=[" + adabasModDBIDs + ",4]") if cerr != nil { fmt.Println("Error creating new connection", cerr) return } defer connection.Close() request, rerr := connection.CreateMapReadRequest("EMPLOYEES-NAT-DDM") if rerr != nil { fmt.Println("Error creating map read request", rerr) return } fmt.Println("Limit query data:") request.QueryFields("NAME,PERSONNEL-ID") request.Limit = 0 fmt.Println("Init cursor data...") col, cerr := request.ReadLogicalWithCursoring("PERSONNEL-ID=[11100110:11100115]") if cerr != nil { fmt.Println("Error reading logical with using cursoring", cerr) return } fmt.Println("Read next cursor record...") counter := 0 for col.HasNextRecord() { record, rerr := col.NextRecord() if record == nil { fmt.Println("Record nil received") return } if rerr != nil { fmt.Println("Error reading logical with using cursoring", rerr) return } fmt.Println("Record received:") record.DumpValues() fmt.Println("Read next cursor record...") counter++ if counter >= 7 { fmt.Println("Error index about 7") return } } fmt.Println("Last cursor record read")
Output: Limit query data: Init cursor data... Read next cursor record... Record received: Dump all record values PERSONNEL-ID = > 11100110 < FULL-NAME = [ 1 ] NAME = > BUNGERT < Read next cursor record... Record received: Dump all record values PERSONNEL-ID = > 11100111 < FULL-NAME = [ 1 ] NAME = > THIELE < Read next cursor record... Record received: Dump all record values PERSONNEL-ID = > 11100112 < FULL-NAME = [ 1 ] NAME = > THOMA < Read next cursor record... Record received: Dump all record values PERSONNEL-ID = > 11100113 < FULL-NAME = [ 1 ] NAME = > TREIBER < Read next cursor record... Record received: Dump all record values PERSONNEL-ID = > 11100114 < FULL-NAME = [ 1 ] NAME = > UNGER < Read next cursor record... Record received: Dump all record values PERSONNEL-ID = > 11100115 < FULL-NAME = [ 1 ] NAME = > VETTER < Read next cursor record... Last cursor record read
func (*ReadRequest) ReadLogicalWithStream ¶ added in v1.1.1
func (request *ReadRequest) ReadLogicalWithStream(search string, streamFunction StreamFunction, x interface{}) (result *Response, err error)
ReadLogicalWithStream read records with a logical order given by a search string and calls stream function
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 *Response, err error)
ReadPhysicalSequence read records in physical order
func (*ReadRequest) ReadPhysicalSequenceStream ¶ added in v1.1.1
func (request *ReadRequest) ReadPhysicalSequenceStream(streamFunction StreamFunction, x interface{}) (result *Response, err error)
ReadPhysicalSequenceStream 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
func (*ReadRequest) Scan ¶ added in v1.1.2
func (request *ReadRequest) Scan(dest ...interface{}) error
Scan scan for different field entries
func (*ReadRequest) SetHoldRecords ¶ added in v1.1.2
func (request *ReadRequest) SetHoldRecords(hold adatypes.HoldType)
SetHoldRecords set hold record done
func (*ReadRequest) TraverseFields ¶ added in v1.2.1
func (request *ReadRequest) TraverseFields(t adatypes.TraverserMethods, p interface{}) error
type Record ¶ added in v1.1.1
type Record struct { Isn adatypes.Isn `xml:"Isn,attr"` Quantity uint64 `xml:"Quantity,attr"` Value []adatypes.IAdaValue HashFields map[string]adatypes.IAdaValue `xml:"-" json:"-"` // contains filtered or unexported fields }
Record one result record of the result
Example (DumpZeroValues) ¶
ferr := initLogWithFile("request_result.log") if ferr != nil { return } d := generatePEMUDefinitionTest() record, err := NewRecord(d) if err != nil { fmt.Println("Result record generation error", err) return } fmt.Println("Dump request result:") record.DumpValues()
Output: Dump request result: Dump all record values AA = > 0 < PE = [ 0 ] U8 = > 0 < P2 = [ 0 ] I8 = > 0 <
Example (SetValue) ¶
ferr := initLogWithFile("request_result.log") if ferr != nil { return } d := generatePEMUDefinitionTest() record, err := NewRecord(d) if err != nil { fmt.Println("Result record generation error", err) return } for i := uint32(0); i < 3; i++ { adatypes.Central.Log.Infof("==> Set period group entry PP of %d", (i + 1)) err = record.SetValueWithIndex("PP", []uint32{i + 1}, (i + 1)) if err != nil { fmt.Println("Set PP error", err) return } adatypes.Central.Log.Infof("<== Set period group entry PP of %d", (i + 1)) } adatypes.Central.Log.Infof("==> Set period MU") err = record.SetValueWithIndex("MU", []uint32{1, 1}, 100) if err != nil { fmt.Println("Set MU error", err) return } adatypes.Central.Log.Infof("==> Set second period MU") err = record.SetValueWithIndex("MU", []uint32{1, 2}, 122) if err != nil { fmt.Println("Set MU error", err) return } err = record.SetValue("AA", 2) if err != nil { fmt.Println("Set AA error", err) return } err = record.SetValue("U8", 3) if err != nil { fmt.Println("Set U8 error", err) return } err = record.SetValue("I8", 1) if err != nil { fmt.Println("Set I8 error", err) return } fmt.Println("Dump request result:") record.DumpValues()
Output: Dump request result: Dump all record values AA = > 2 < PE = [ 3 ] PP[01] = > 1 < MU[01] = [ 1 ] MU[01,01] = > 100 < MU[01,02] = > 122 < GR[01] = [ 1 ] PA[01] = > 0 < PG[01] = > 0 < G8[01] = > 0 < PP[02] = > 2 < MU[02] = [ 0 ] GR[02] = [ 1 ] PA[02] = > 0 < PG[02] = > 0 < G8[02] = > 0 < PP[03] = > 3 < MU[03] = [ 0 ] GR[03] = [ 1 ] PA[03] = > 0 < PG[03] = > 0 < G8[03] = > 0 < U8 = > 3 < P2 = [ 0 ] I8 = > 1 <
Example (SetValueWithIndex) ¶
ferr := initLogWithFile("request_result.log") if ferr != nil { return } d := generatePEMUDefinitionTest() record, err := NewRecord(d) if err != nil { fmt.Println("Result record generation error", err) return } err = record.SetValueWithIndex("PX", []uint32{1, 1}, 122) if err == nil { fmt.Println("Error setting PX with MU error", err) return } fmt.Println("Correct error:", err) err = record.SetValueWithIndex("PX", []uint32{1, 0}, 122) if err != nil { fmt.Println("Error setting PX error", err) return } fmt.Println("Dump request result:") record.DumpValues()
Output: Correct error: ADG0000062: Multiple field index on an non-Multiple field Dump request result: Dump all record values AA = > 0 < PE = [ 0 ] U8 = > 0 < P2 = [ 1 ] PX[01] = > 122 < PY[01] = > 0 < I8 = > 0 <
func NewRecord ¶ added in v1.1.1
func NewRecord(definition *adatypes.Definition) (*Record, error)
NewRecord new result record
func NewRecordIsn ¶ added in v1.1.1
func NewRecordIsn(isn adatypes.Isn, isnQuantity uint64, definition *adatypes.Definition) (*Record, error)
NewRecordIsn new result record with ISN or ISN quantity
func (*Record) DumpValues ¶ added in v1.1.1
func (record *Record) DumpValues()
DumpValues traverse through the tree of values calling a callback method
func (*Record) MarshalJSON ¶ added in v1.1.1
MarshalJSON provide JSON
func (*Record) MarshalXML ¶ added in v1.1.1
MarshalXML provide XML
func (*Record) SearchValue ¶ added in v1.1.1
SearchValue search value in the tree
func (*Record) SearchValueIndex ¶ added in v1.1.1
SearchValueIndex search value in the tree with a given index
func (*Record) SetValueWithIndex ¶ added in v1.1.1
SetValueWithIndex Add value to an node element
type Repository ¶
type Repository struct { sync.Mutex DatabaseURL CachedMaps map[string]*Map // contains filtered or unexported fields }
Repository Adabas Map repository container
func NewMapRepository ¶
func NewMapRepository(i interface{}, fnr Fnr) *Repository
NewMapRepository new map repository created
func NewMapRepositoryWithURL ¶ added in v1.1.1
func NewMapRepositoryWithURL(url DatabaseURL) *Repository
NewMapRepositoryWithURL 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 read an index for names of all Adabas maps in the repository into memory
func (*Repository) RemoveMap ¶ added in v1.2.2
func (repository *Repository) RemoveMap(mapName string) (err error)
RemoveMap remove map from hash
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 Response ¶ added in v1.1.1
type Response struct { XMLName xml.Name `xml:"-" json:"-"` Values []*Record `xml:"Records" json:"Records"` Definition *adatypes.Definition // contains filtered or unexported fields }
Response contains the result information of the request
Example (JsonMarshal) ¶
result := generateResult() res, err := json.Marshal(result) if err != nil { fmt.Println("Error generating JSON", err) return } fmt.Println(string(res))
Output: {"Records":[{"AA":10,"B1":0,"GR":{"G1":"0","GX":"","PA":9},"I2":0,"I8":0,"ISN":10,"U8":0,"UB":0},{"AA":20,"B1":0,"GR":{"G1":"0","GX":"","PA":3},"I2":0,"I8":0,"ISN":11,"U8":0,"UB":0}]}
Example (XmlMarshal) ¶
ferr := initLogWithFile("request_result.log") if ferr != nil { return } result := generateResult() res, err := xml.Marshal(result) if err != nil { fmt.Println("Error generating XML", err) return } fmt.Println(string(res))
Output: <Response><Record ISN="10"><AA>10</AA><B1>0</B1><UB>0</UB><I2>0</I2><U8>0</U8><GR><G1>0</G1><GX> </GX><PA>9</PA></GR><I8>0</I8></Record><Record ISN="11"><AA>20</AA><B1>0</B1><UB>0</UB><I2>0</I2><U8>0</U8><GR><G1>0</G1><GX> </GX><PA>3</PA></GR><I8>0</I8></Record></Response>
func (*Response) DumpValues ¶ added in v1.1.1
DumpValues traverse through the tree of values calling a callback method
func (*Response) MarshalJSON ¶ added in v1.1.1
MarshalJSON provide JSON
func (*Response) MarshalXML ¶ added in v1.1.1
MarshalXML provide XML
func (*Response) TraverseValues ¶ added in v1.1.1
func (Response *Response) TraverseValues(t adatypes.TraverserValuesMethods, x interface{}) (ret adatypes.TraverseResult, err error)
TraverseValues traverse through the tree of values calling a callback method
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 Fnr) (*StoreRequest, error)
NewStoreRequest create a new store Request instance
func NewStoreRequestAdabas ¶
func NewStoreRequestAdabas(adabas *Adabas, fnr Fnr) *StoreRequest
NewStoreRequestAdabas create a new Request instance
func (*StoreRequest) BackoutTransaction ¶ added in v1.1.1
func (request *StoreRequest) BackoutTransaction() error
Backout closes the Adabas session
func (*StoreRequest) CreateRecord ¶
func (request *StoreRequest) CreateRecord() (record *Record, 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 *Record) 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 *Record) 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) TraverseFields ¶ added in v1.2.1
func (request *StoreRequest) TraverseFields(t adatypes.TraverserMethods, p interface{}) error
func (*StoreRequest) Update ¶
func (request *StoreRequest) Update(storeRecord *Record) error
Update update a record
type StreamFunction ¶ added in v1.1.1
StreamFunction function callback used to go through the list of received records
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 NewURLWithDbid ¶ added in v1.1.1
NewURLWithDbid create a new URL based on the database id only. Simple local access to the database
func (*URL) UnmarshalJSON ¶
UnmarshalJSON unmarshal JSON code