Almost all of the daily (programming) work commonly encountered in a technical-scientific environment.
No games, sorry.
(And we removed all TCP/IP functions for obvious reasons)
The download file is less than 1.3 MB. Is this all there is?
Yes. This includes program and help, a tutorial and a few more demos. HicEst is a highly modular software. And it goes back to DOS. This explains size and speed.
I don"t know Fortran. How difficult is it?
A novice to computer programming might try his first steps: use HicEst as a simple desktop calculator, assigning a symbolic name to a numerical result, and then using that name in another statement, etc.
A person with some experience in Fortran, Basic, Pascal, C, C++ and alike, will find at least the use of HicEst"s standard features to be very simple.
A tutorial, some demos and the context sensitive help provide many samples.
Why just Fortran as the script language?
Learnability, portability, speed and availability of algorithms in source code all speak for Fortran as the number cruncher in mathematically oriented programs. Many programmers and engineers use Fortran for these reasons. And many companies have mission-critical applications written in Fortran.
Besides, a prime goal of HicEst is to support the development of algorithms acceptable for standard compilation as well.
Why only a subset of Fortran?
VISCO I and II, the parents of HicEst grew parallel to the everyday data evaluation, process control, simulation and modeling tasks in a Chemical Engineering laboratory over many years. Language elements and features were added only when needed. Although HicEst was almost completely rewritten the language base was extended only by a few irresistible features of Fortran 90, like optional keywords, some array expressions, dynamic allocation, USE.
Fortran is good in numerics, but has poor string handling.
This is why HicEst has its EDIT function. A single statement allows almost all standard string operations including repeat, sort, tabify, lexical analysis and more.
What is the difference to work with HicEst and a compiler?
A compiler needs all the statements of a program unit before it can compile. It generates machine code. When all program units have been compiled without error the linker produces a very efficient executable file. Only super brains will not have to debug. Lesser mortals have to edit the statements again.
HicEst"s incremental compiler checks each statement while it is written. In case of error it generates a message (remember, the error case is the normal case). Else an intermediate code is produced and stored for later reuse. It is interpreted and executed. From the instant result you decide whether to change the statement again or to proceed.
Why does compilation of my standard Fortran source terminate with an error message?
HicEst is Fortran-based but not a full implementation (Features). As an example, if your source starts with
program my_program
implicit none
integer(kind=2) :: something
the keywords program, implicit, integer are not recognized. Many features of standard Fortran are simply not needed for HicEst"s interpreter (e.g. integer: all numerics is in 8-byte real). Other features like implicit none would be highly desirable for a better programming style, but would also be contra-productive to our motto Instant Prototype Computing.
You might want to prefix all lines of your program with a "!" to make it comments only. Then load it to HicEst and uncomment the meat of your algorithm, line after line.
What happens to my script when a crash occurs?
Start HicEst again, open your script, see that nothing is lost. Even undo/redo pointers are conserved.
Why does HicEst only know 1- and 2-dimensional arrays?
HicEst shows the advantages and disadvantages of an interpreter. We think higher-dimensional arrays should either be treated in a DLL for real fast execution. This also keeps the script from blowing up to much.
Or perhaps more elegant, if feasible, use ALIAS to address linear array sections as vectors.
Can HicEst serve as a Windows wrapper for my console type program?
Yes. If you want to just run your program with no changes use
You could interactively set the string parameters.
A more elegant solution is to compile your program as a DLL. The header structure is found in HicEst"s help. Or modify the example interactively in Tutorial.dem menu Demos/System/DLL. Use HicEst as the dispatcher to calls of the procedures (entry points) of your program, e.g.
value = DLL(Name="yourDLL.dll", Handle=hDLL, Fnc="Function123", Arg=data1, Arg=data2, ...)
With the handle option your DLL will stay open and its static data are retained between calls.
How can I call a DLL with a derived data type structure?
WRITE data to a string, numeric data with binary formats ib1, ib2, ib4, ib8, fb4, fb8. Define largest size (explicit length!) numeric data items first. Place numeric data before character data. Add small data items (padding) if needed to ensure natural alignment (may be on up to 64-bit boundaries, compare your compiler manual). Type defined arrays may need trailing padding.
Can I dynamically allocate a 2-byte integer array of size n?
Yes. Size is only limited by virtual memory. ALLOCATE a string of length 2*n. (Partial) conversion to 8-byte floating point (as used by HicEst for all numerics) is via READ and WRITE with the binary format "ib2".
Or have the array as a file on disk. If the array has e.g. 23 columns:
Yes, computers with a COM port can be linked like any other instrument with a RS232 interface. Instruments usually have a protocol for serial communication, so you have to write a "driver" with 1 or more COM function calls which is very easy to do. If the "instrument" is another PC you are free to design your own protocol (see COM(Alice_to_Bob).dem.)
My script does not show the F2 to F9 buttons on HicEst"s toolbar.
As soon as any of the F2 to F9 subroutines is defined the button shows e.g.