Reference manual

FICO Xpress Optimization
R

BinDrv library
Reference manual
Release 1.0

Last update September 2011www.fico.com

Make every decision countTM

This material is the confidential, proprietary, and unpublished property of Fair Isaac Corporation.
Receipt or possession of this material does not convey rights to divulge, reproduce, use, or allow
others to use it without the specific written authorization of Fair Isaac Corporation and use must
conform strictly to the license agreement.
The information in this document is subject to change without notice. If you find any problems inthis documentation, please report them to us in writing. Neither Fair Isaac Corporation nor its
affiliates warrant that this documentation is error-free, nor are there any other warranties withrespect to the documentation except as may be provided in the license agreement.
©2011–2017 Fair Isaac Corporation. All rights reserved. Permission to use this software and its
documentation is governed by the software license agreement between the licensee and Fair Isaac
Corporation (or its affiliate). Portions of the program may contain copyright of various authors andmay be licensed under certain third-party licenses identified in the software, documentation, orboth.
In no event shall Fair Isaac Corporation or its affiliates be liable to any person for direct, indirect,
special, incidental, or consequential damages, including lost profits, arising out of the use of thissoftware and its documentation, even if Fair Isaac Corporation or its affiliates have been advised ofthe possibility of such damage. The rights and allocation of risk between the licensee and Fair Isaac
Corporation (or its affiliates) are governed by the respective identified licenses in the software,
documentation, or both.
Fair Isaac Corporation and its affiliates specifically disclaim any warranties, including, but not limited
to, the implied warranties of merchantability and fitness for a particular purpose. The software andaccompanying documentation, if any, provided hereunder is provided solely to users licensed under
the Fair Isaac Software License Agreement. Fair Isaac Corporation and its affiliates have no
obligation to provide maintenance, support, updates, enhancements, or modifications except as
required to licensed users under the Fair Isaac Software License Agreement.
FICO and Fair Isaac are trademarks or registered trademarks of Fair Isaac Corporation in the UnitedStates and may be trademarks or registered trademarks of Fair Isaac Corporation in other countries.
Other product and company names herein may be trademarks of their respective owners.
BinDrv
Deliverable Version: A
Last Revised: September 2011
Version 1.0

Contents
1 Introduction
1.1 Generating a data file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Parsing a data file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Building files for Mosel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1
1
2

2 Functions of the BinDrv library
2.1 Writer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_newwriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_putint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_putreal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_putstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_putbool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_putlong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_putctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Reader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_newreader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_setalloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_nexttoken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_getint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_getreal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_getbool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_getstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_getlong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
bindrv_getctrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Appendix

22

A Contacting FICO
Product support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Product education . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Product documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sales and maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Related services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
About FICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22
22
22
22
23
23
23

Index

24

Fair Isaac Corporation Confidential and Proprietary InformationiC HAPTER 1

Introduction
The BinDrv library provides the necessary routines to generate and parse data streams using a
structured binary and platform independent format. This data format may be employed togenerate data files that have to be exchanged between platforms with different byte ordering(or endianness). This is also the file format used by the "bin:" Mosel I/O driver such, that thislibrary enables an application to create (and read) binary data files to be used by Mosel models.

1.1

Generating a data file
To generate a data file, a bindrv writer context has to be allocated with a call tobindrv_newwriter. This initialisation routine requires a callback function that is used for
outputing data to some stream (e.g. use the C function fwrite to write to a file opened with thefunction fopen). Then, each data value to be saved to the stream is passed to the function
corresponding to its type: this routine builds a token equivalent to the provided object and sends
it to the stream. For instance, function bindrv_putint will be used to output an integer etc.. Inorder to structure the data flow, special markers may be inserted: the function bindrv_putctrl
allows to add these control tokens. A control token is characterised by its code (an integer
between 0 and 31) such that different types of markers can be used. For instance, control code 1
could indicate the beginning of a list of integers, code 4 the beginning of a list of text strings,
code 2 for the end of a list and code 3 could be used to mark the end of the data flow. Using thisconvention, a file containing a list of integers (e.g. 5,6,7) and a list of strings (e.g. "a","b") could
be produced with the following code:bindrv_putctrl(bctx,1);
bindrv_putint(bctx,5);
bindrv_putint(bctx,6);
bindrv_putint(bctx,7);
bindrv_putctrl(bctx,2);
bindrv_putctrl(bctx,4);
bindrv_putstring(bctx,"a");bindrv_putstring(bctx,"b");bindrv_putctrl(bctx,2);
bindrv_putctrl(bctx,3);

1.2

Parsing a data file
To parse a data file, a bindrv reader context has to be allocated with a call to bindrv_newreader.
This initialisation routine requires a callback function that is used for inputing data from somestream (e.g. use the C function fread to read from a file opened with the function fopen). The
reader procedure has then to enter a loop calling first bindrv_nexttoken to get the type of thenext token to read and then, depending on this data type, use the function suitable to read anddecode this token. For instance if the function returns BINDRV_TYP_REAL, a real has to be read andFair Isaac Corporation Confidential and Proprietary Information

1

Introduction

the function bindrv_getreal can be used to get its value. If the file structure is known inadvance, the data can be input with a sequence of calls to the decoding functions. For instancethe data file of the example of the preceding section could be input with the following code:
int a,c;char *l;if(bindrv_getctrl(bctx,&c)==0 && (c==1)){
while(bindrv_getint(bctx,&a)==0)
printf("got: %d\n",a);if(bindrv_getctrl(bctx,&c)!=0 || (c!=2))
exit(1);}if(bindrv_getctrl(bctx,&c)==0 && (c==4)){
while(bindrv_getstring(bctx,&l)==0){
printf("got: %s\n",l);free(l);}if(bindrv_getctrl(bctx,&c)!=0 || (c!=2))
exit(2);}if(bindrv_getctrl(bctx,&c)!=0 || (c!=3))
exit(3);As shown above, the application is in charge of releasing string buffers returned bybindrv_getstring: this routine allocates the returned memory block using the C function malloc.
The application may replace this default memory allocator by calling function bindrv_setalloc.

1.3

Building files for Mosel
Data files generated for Mosel models must observe the same structure as the usual ascii Mosel
format. For instance, consider the following data file in its ascii form:
a:123
b:[(1) 10]

The corresponding data stored in the binary format can be obtained with the following code:bindrv_putctrl(bctx,BINDRV_CTRL_LABEL);
bindrv_putstring(bctx,"a");bindrv_putint(bctx,123);
bindrv_putctrl(bctx,BINDRV_CTRL_LABEL);
bindrv_putstring(bctx,"b");bindrv_putctrl(bctx,BINDRV_CTRL_OPENLST);
bindrv_putctrl(bctx,BINDRV_CTRL_OPENNDX);
bindrv_putint(bctx,1);
bindrv_putctrl(bctx,BINDRV_CTRL_CLOSENDX);
bindrv_putint(bctx,10);bindrv_putctrl(bctx,BINDRV_CTRL_CLOSELST);

Note the use of control tokens to structure the data stream: a dedicated control code corresponds
to each of the special characters in the ascii format. For example, the symbol ’[’ in the ascii
format is represented by the code BINDRV_CTRL_OPENLST in the binary format.

Fair Isaac Corporation Confidential and Proprietary Information

2

C HAPTER 2

Functions of the BinDrv library
2.1

Writerbindrv_delete

Release a BinDrv context.

p. 5

bindrv_newwriter

Create a new BinDrv context for writing to an output stream.

p. 4

bindrv_putbool

Write a Boolean value to the output stream.

p. 9

bindrv_putctrl

Write a control token to the output stream.

p. 11

bindrv_putint

Write an integer to the output stream.

p. 6

bindrv_putlong

Write a long integer to the output stream.

p. 10

bindrv_putreal

Write a real to the output stream.

p. 7

bindrv_putstring

Write a text string to the output stream.

p. 8

Fair Isaac Corporation Confidential and Proprietary Information

3

Functions of the BinDrv librarybindrv_newwriterPurposeCreate a new BinDrv context for writing to an output stream.
Synopsiss_bindrvctx bindrv_newwriter(size_t (*dowrite)(const void *,size_t,size_t,void*), void
*rctx);
Arguments
dowriterctx

Callback function to write data to the output stream
File descriptor to be passed as the last argument of dowrite

Return value
The new context or NULL in case of error.
ExampleIn the following example the file "bindata is open using C-function fopen and a writer is createdbased on the resulting file descriptor:
f=fopen("bindata", "w");bdrv=bindrv_newwriter((size_t (*)(const void *,size_t,size_t,void*))fwrite, f);
Further information
1. Each context created using this function must be released by a call to bindrv_delete.
2. The dowrite function is used by the writer whenever it needs to write data. The function receives
as input a buffer, its size and, as the last argument, the pointer rctx. The third argument is always
1. The return value must be 1 if successful, any other value is interpreted as an error condition.
3. The required dowrite routine has the same signature as the C-function fwrite such that a BinDrv
writer can use as input a file open with the C-function fopen.
Related topics
bindrv_delete.

Fair Isaac Corporation Confidential and Proprietary Information

4

Functions of the BinDrv librarybindrv_delete
Purpose
Release a BinDrv context.
Synopsisvoid bindrv_delete(s_bindrvctx bctx);
Argument
bctx

A BinDrv context

Further information
The same routine is used to release a reader or a writer.
Related topics
bindrv_newreader, bindrv_newwriter.

Fair Isaac Corporation Confidential and Proprietary Information

5

Functions of the BinDrv librarybindrv_putint
PurposeWrite an integer to the output stream.
Synopsisint bindrv_putint(s_bindrvctx bctx, int val);
Arguments
bctx
val

A BinDrv writer context
Integer value to write

Return value
0 if successful, 1 in case of an I/O error

Fair Isaac Corporation Confidential and Proprietary Information

6

Functions of the BinDrv librarybindrv_putreal
PurposeWrite a real to the output stream.
Synopsisint bindrv_putreal(s_bindrvctx bctx, double val);
Arguments
bctx
val

A BinDrv writer context
Double value to write

Return value
0 if successful, 1 in case of an I/O error

Fair Isaac Corporation Confidential and Proprietary Information

7

Functions of the BinDrv librarybindrv_putstring
PurposeWrite a text string to the output stream.
Synopsisint bindrv_putstring(s_bindrvctx bctx, const char *val);
Arguments
bctx
val

A BinDrv writer context
Text string to write

Return value
0 if successful, 1 in case of an I/O error
Further information
The NULL pointer is treated as an empty string.

Fair Isaac Corporation Confidential and Proprietary Information

8

Functions of the BinDrv librarybindrv_putbool
PurposeWrite a Boolean value to the output stream.
Synopsisint bindrv_putbool(s_bindrvctx bctx, char val);
Arguments
bctx
val

A BinDrv writer context
Boolean value to write

Return value
0 if successful, 1 in case of an I/O error
Further information
The C convention is used: 0 for false and any other value for true.

Fair Isaac Corporation Confidential and Proprietary Information

9

Functions of the BinDrv librarybindrv_putlong
PurposeWrite a long integer to the output stream.
Synopsisint bindrv_putlong(s_bindrvctx bctx, BINDRV_LONG val);
Arguments
bctx
val

A BinDrv writer context
Long integer value (64bit) to write

Return value
0 if successful, 1 in case of an I/O error
Further information
Mosel does not support long integers: a file containing long integers cannot be processed by the"bin:" I/O driver.

Fair Isaac Corporation Confidential and Proprietary Information

10

Functions of the BinDrv librarybindrv_putctrl
PurposeWrite a control token to the output stream.
Synopsisint bindrv_putctrl(s_bindrvctx bctx, int val);
Arguments
bctx
val

A BinDrv reader context
Control code to write (value between 0 and 31)

Return value
0 if successful, 1 in case of an I/O error
Further information
1. A control code is represented by a 5bit integer (values 0 to 31) the interpretation of which isapplication-specific: the bindrv library does not use these control tokens. They are usually used as
markers to structure the data flow: it is up to the user to define appropriate conventions
according to his needs.
2. When generating a data stream to be parsed by a Mosel model, the following control codes must
be used — they correspond to the control characters employed in the standard Mosel ascii fileformat:
BINDRV_CTRL_SKIP Skip entry (symbol ’*’ in ascii format)
BINDRV_CTRL_LABEL Start a new record: this control token is always followed by a string
identifying the label (corresponds to ’label:’ in ascii format)
BINDRV_CTRL_OPENLST Begin list of entries (symbol ’[’ in ascii format)
BINDRV_CTRL_CLOSELST End list of entries (symbol ’]’ in ascii format)
BINDRV_CTRL_OPENNDX Begin list of array indices (symbol ’(’ in ascii format)
BINDRV_CTRL_CLOSENDX End list of array indices (symbol ’)’ in ascii format)

Fair Isaac Corporation Confidential and Proprietary Information

11

Functions of the BinDrv library

2.2

Readerbindrv_getbool

Get the value of a Boolean token.

p. 18

bindrv_getctrl

Get the code of a control token.

p. 21

bindrv_getint

Get the value of an integer token.

p. 16

bindrv_getlong

Get the value of a long integer token.

p. 20

bindrv_getreal

Get the value of a real token.

p. 17bindrv_getstring

Get the value of a text string token.

p. 19

bindrv_newreader

Create a new BinDrv context for parsing an input stream.

p. 13

bindrv_nexttoken

Get the type of the next token to read.

p. 15

bindrv_setalloc

Define a memory allocator for string buffers.

p. 14

Fair Isaac Corporation Confidential and Proprietary Information

12

Functions of the BinDrv librarybindrv_newreader
PurposeCreate a new BinDrv context for parsing an input stream.
Synopsiss_bindrvctx bindrv_newreader(size_t (*doread)(void *,size_t,size_t,void*), void
*rctx);
Arguments
doreadrctx

Callback function to retrieve data from the input stream
File descriptor to be passed as the last argument of doread

Return value
The new context or NULL in case of error.
ExampleIn the following example the file "bindata is opened using the C function fopen and a reader iscreated based on the resulting file descriptor:
f=fopen("bindata", "r");bdrv=bindrv_newreader((size_t (*)(void *,size_t,size_t,void*))fread, f);
Further information
1. Each context created using this function must be released by a call to bindrv_delete.
2. The doread routine is used by the reader whenever it requires further data to process. The
function receives as input a buffer (where read data has to be copied), its size and, as the lastargument, the pointer rctx. The third argument of doread is always 1. The return value must be 1
if successful (i.e. the requested amount of data has been read), any other value is interpreted as
an error condition.
3. The required doread function has the same signature as the C function fread such that a BinDrv
reader can use as input a file opened with the C function fopen.
Related topics
bindrv_delete.

Fair Isaac Corporation Confidential and Proprietary Information

13

Functions of the BinDrv librarybindrv_setalloc
PurposeDefine a memory allocator for string buffers.
Synopsisvoid bindrv_setalloc(s_bindrvctx bctx, void* (*memalloc)(size_t,void*), void* mctx);
Arguments
bctx
memalloc
mctx

A BinDrv reader context
A memory allocator or NULL
Context to be passed as the last argument of mamalloc

Further information
1. When reading a string, the function bindrv_getstring allocates a buffer that it returns. By
default the C function malloc is used for this memory allocation. This routine allows to set analternative function for this task: the provided function takes as argument the size of the buffer
to allocate as well as some context pointer mctx.
2. Using NULL as the function pointer restores the default memory allocator, namely the C function
malloc.
Related topics
bindrv_getstring.

Fair Isaac Corporation Confidential and Proprietary Information

14

Functions of the BinDrv librarybindrv_nexttoken
PurposeGet the type of the next token to read.
Synopsisint bindrv_nexttoken(s_bindrvctx bctx);
Argument
bctx

A BinDrv reader context

Return value
Type code for the next token or a negative value in case of a read error (end of stream). Possible
values are:
BINDRV_TYP_INT An integer
BINDRV_TYP_REAL A real (as a double)
BINDRV_TYP_STR A text string
BINDRV_TYP_BOOL A Boolean
BINDRV_TYP_CTRL A control token
BINDRV_TYP_LONG A long integer (64bit)
Further information
This routine does not return the token itself but indicates which function to use for reading it.
For instance, if the return value is BINDRV_TYP_INT, the function bindrv_getint has to be called toretrieve an integer value.
Related topics
bindrv_getint, bindrv_getreal, bindrv_getstring, bindrv_getbool, bindrv_getctrl,
bindrv_getlong.

Fair Isaac Corporation Confidential and Proprietary Information

15

Functions of the BinDrv librarybindrv_getint
PurposeGet the value of an integer token.
Synopsisint bindrv_getint(s_bindrvctx bctx, int *val);
Arguments
bctx
val

A BinDrv reader context
Pointer to return the integer value

Return value
0 if successful, a negative value in case of error or the type code of the token (positive value) if it
is not of the expected type.
Related topics
bindrv_nexttoken.

Fair Isaac Corporation Confidential and Proprietary Information

16

Functions of the BinDrv librarybindrv_getreal
PurposeGet the value of a real token.
Synopsisint bindrv_getreal(s_bindrvctx bctx, double *val);
Arguments
bctx
val

A BinDrv reader context
Pointer to return the double value

Return value
0 if successful, a negative value in case of error or the type code of the token (positive value) if it
is not of the expected type.
Related topics
bindrv_nexttoken.

Fair Isaac Corporation Confidential and Proprietary Information

17

Functions of the BinDrv librarybindrv_getbool
PurposeGet the value of a Boolean token.
Synopsisint bindrv_getbool(s_bindrvctx bctx, char *val);
Arguments
bctx
val

A BinDrv reader context
Pointer to return the Boolean value (as a char)

Return value
0 if successful, a negative value in case of error or the type code of the token (positive value) if it
is not of the expected type.
Related topics
bindrv_nexttoken.

Fair Isaac Corporation Confidential and Proprietary Information

18

Functions of the BinDrv librarybindrv_getstring
PurposeGet the value of a text string token.
Synopsisint bindrv_getstring(s_bindrvctx bctx,char **val);
Arguments
bctx
val

A BinDrv reader context
Pointer to return a reference to the string

Return value
0 if successful, a negative value in case of error or the type code of the token (positive value) if it
is not of the expected type.
Further information
The returned buffer is allocated using the C function malloc. To replace this default memory
allocator, (e.g. by some application specific memory management routine), use bindrv_setalloc.
Related topics
bindrv_nexttoken.

Fair Isaac Corporation Confidential and Proprietary Information

19

Functions of the BinDrv librarybindrv_getlong
PurposeGet the value of a long integer token.
Synopsisint bindrv_getlong(s_bindrvctx bctx,BINDRV_LONG *val);
Arguments
bctx
val

A BinDrv reader context
Pointer to return the long integer value (64bit)

Return value
0 if successful, a negative value in case of error or the type code of the token (positive value) if it
is not of the expected type.
Further information
Mosel does not support long integers: this type of token will never be returned from a file
generated by Mosel.
Related topics
bindrv_nexttoken.

Fair Isaac Corporation Confidential and Proprietary Information

20

Functions of the BinDrv librarybindrv_getctrl
PurposeGet the code of a control token.
Synopsisint bindrv_getctrl(s_bindrvctx bctx,int *val);
Arguments
bctx
val

A BinDrv reader context
Pointer to return the control code

Return value
0 if successful, a negative value in case of error or the type code of the token (positive value) if it
is not of the expected type.
Further information
1. A control code is represented by a 5bit integer (values 0 to 31) the interpretation of which isapplication-specific: the bindrv library does not use these control tokens. They are usually used as
markers to structure the data flow: it is up to the user to define appropriate conventions
according to his needs.
2. When the data stream is coming from Mosel, the following control codes may be used — theycorrespond to the control characters employed in the standard Mosel ascii file format:
BINDRV_CTRL_SKIP Skip entry (symbol ’*’ in ascii format)
BINDRV_CTRL_LABEL Start a new record: this control token is always followed by a string
identifying the label (corresponds to ’label:’ in ascii format)
BINDRV_CTRL_OPENLST Begin list of entries (symbol ’[’ in ascii format)
BINDRV_CTRL_CLOSELST End list of entries (symbol ’]’ in ascii format)
BINDRV_CTRL_OPENNDX Begin list of array indices (symbol ’(’ in ascii format)
BINDRV_CTRL_CLOSENDX End list of array indices (symbol ’)’ in ascii format)
Related topics
bindrv_nexttoken.

Fair Isaac Corporation Confidential and Proprietary Information

21

A PPENDIX A

Contacting FICO
FICO provides clients with support and services for all our products. Refer to the following
sections for more information.

Product support
FICO offers technical support and services ranging from self-help tools to direct assistance with a
FICO technical support engineer. Support is available to all clients who have purchased a FICO
product and have an active support or maintenance contract. You can find support contact
information on the Product Support home page (www.fico.com/support).
On the Product Support home page, you can also register for credentials to log on to FICO Online
Support, our web-based support tool to access Product Support 24x7 from anywhere in the world.
Using FICO Online Support, you can enter cases online, track them through resolution, findarticles in the FICO Knowledge Base, and query known issues.
Please include ’Xpress’ in the subject line of your support queries.

Product education
FICO Product Education is the principal provider of product training for our clients and partners.
Product Education offers instructor-led classroom courses, web-based training, seminars, andtraining tools for both new user enablement and ongoing performance support. For additional
information, visit the Product Education homepage at www.fico.com/en/product-training or
email producteducation@fico.com.

Product documentation
FICO continually looks for new ways to improve and enhance the value of the products andservices we provide. If you have comments or suggestions regarding how we can improve thisdocumentation, let us know by sending your suggestions to techpubs@fico.com.

Fair Isaac Corporation Confidential and Proprietary Information

22

Contacting FICO

Sales and maintenanceUSA, CANADA AND ALL AMERICASEmail: XpressSalesUS@fico.com
WORLDWIDE
Email: XpressSalesUK@fico.com
Tel: +44 207 940 8718
Fax: +44 870 420 3601
Xpress Optimization, FICO
FICO HouseInternational Square
Starley Way
Birmingham B37 7GN
UK

Related services
Strategy Consulting: Included in your contract with FICO may be a specified amount ofconsulting time to assist you in using FICO Optimization Modeler to meet your business needs.
Additional consulting time can be arranged by contract.
Conferences and Seminars: FICO offers conferences and seminars on our products and services.
For announcements concerning these events, go to www.fico.com or contact your FICO accountrepresentative.

About FICO
FICO (NYSE:FICO) delivers superior predictive analytics solutions that drive smarter decisions. The
company’s groundbreaking use of mathematics to predict consumer behavior has transformed
entire industries and revolutionized the way risk is managed and products are marketed. FICO’sinnovative solutions include the FICO® Score—the standard measure of consumer credit risk in
the United States—along with industry-leading solutions for managing credit accounts,
identifying and minimizing the impact of fraud, and customizing consumer offers with pinpoint
accuracy. Most of the world’s top banks, as well as leading insurers, retailers, pharmaceuticalcompanies, and government agencies, rely on FICO solutions to accelerate growth, control risk,
boost profits, and meet regulatory and competitive demands. FICO also helps millions ofindividuals manage their personal credit health through www.myfico.com. Learn more atwww.fico.com. FICO: Make every decision countTM .

Fair Isaac Corporation Confidential and Proprietary Information

23

IndexBbindrv writer context, 1bindrv_delete, 5bindrv_getbool, 18
bindrv_getctrl, 21
bindrv_getint, 16
bindrv_getlong, 20
bindrv_getreal, 17bindrv_getstring, 19
bindrv_newreader, 13
bindrv_newwriter, 4bindrv_nexttoken, 15
bindrv_putbool, 9bindrv_putctrl, 11bindrv_putint, 6bindrv_putlong, 10
bindrv_putreal, 7bindrv_putstring, 8bindrv_setalloc, 14
BINDRV_CTRL_CLOSELST, 11, 21
BINDRV_CTRL_CLOSENDX, 11, 21
BINDRV_CTRL_LABEL, 11, 21
BINDRV_CTRL_OPENLST, 11, 21
BINDRV_CTRL_OPENNDX, 11, 21
BINDRV_CTRL_SKIP, 11, 21
BINDRV_TYP_BOOL, 15
BINDRV_TYP_CTRL, 15
BINDRV_TYP_INT, 15
BINDRV_TYP_LONG, 15
BINDRV_TYP_REAL, 15
BINDRV_TYP_STR, 15
Booleanread, 18
write, 9Ccontext
input stream, 13
output stream, 4release, 5
control token, 2read, 21
write, 11I
input parsing, 13
input stream
create context, 13
integerread, 16
write, 6

Fair Isaac Corporation Confidential and Proprietary Information

Llong integer
read, 20
write, 10Mmemory allocator, 14
O
output stream
create context, 4R
read
Boolean, 18
control token, 21
integer, 16
long integer, 20
real, 17string, 19
token type, 15
real
read, 17
write, 7Sstringmemory allocator, 14
read, 19
write, 8Ttoken typeread, 15
token type code, 15W
write
Boolean, 9control token, 11
integer, 6long integer, 10
real, 7
string, 8
writer context, 124