COHERENT manpages
This page displays the COHERENT manpage for Programming COHERENT [Overview].
List of available manpages
Index
Programming COHERENT -- Overview The C language is the ``native language'' of COHERENT. Most COHERENT programs are written in C. If you are a beginner and are interested in learning something about C, look at the tutorial The C Language in the first part of this manual. The following Lexicon entries give you information you need to write or port C programs under COHERENT: C keywords This lists the C keywords recognized by the COHERENT implementation of C. Each keyword, in turn, is described in full in its own Lexicon entry. C language This summarizes the COHERENT implementation of C. It gives the size of each data type, formatting of floating-point data, static limits, and other information. C preprocessor This describes the processing directives that the COHERENT preprocessor recognizes. Each directive is described in full in its own Lexicon entry header files This entry names the header files included as part of COHERENT. Each header file is described in its own Lexicon entry. Some of the header-file articles are of particular interest. libraries This describes the libraries included with COHERENT. Almost every library function and system call has its own Lexicon entry; the only exceptions are the routines kept in libmisc.a and libcurses.a. Each library has its own summary entry; of particular interest are the entries libc, libm, libgdbm, and libsocket. If you are an experienced C programmer who is new to COHERENT, we suggest you look first at the article for C language, to get an overview of the dialect of C that COHERENT supports. Look at the entry for libraries, to see what libraries are available; then look at the entry for each library to see what functions are available. The following Lexicon entries describe the commands with which you can compile and manage your programs: ar The archiver. This turns a group of object modules into a library. as The COHERENT macro-assembler. This assembles modules written in assembly language, and builds object modules that you can link with modules written in C or other languages. cc The C compiler. This describes the compiler itself, and its options and switches. cpp The C preprocessor. The preprocessor itself has its own options to help you control the building of your programs. db The symbolic debugger. With db, you can set breakpoints, single-step through code, hot-patch binaries, and otherwise debug your programs. It requires knowledge of 80386 assembly language. ld The linker. This links object modules into an executable binary. The Lexicon entry describes its switches and features. make The programming discipline. make helps you to manage the building of a complex program. It is indespensible for managing all but the simplest programming projects. nm This utility prints the contents of a program's symbol table. sh The Bourne shell. This is of the COHERENT command interpreter. You can write large, complex programs in the shell. These can functions, and draw on a library of prewritten functions. The shell is one of the most powerful tools available to a COHERENT programmer -- and one of the most neglected. strip Strip the symbol table from a program. This makes most programs significantly smaller, with no loss in functionality. Each command is described in its own Lexicon entry. Definitions The following Lexicon entries give technical definitions of interest to programmers: address What an ``address'' is. alignment What byte alignment is, and how it applies under the various machine on which COHERENT has been implemented ANSI A brief introduction to the ANSI Standard for Programming Language C. arena What an arena is, and how it applies to COHERENT programs. array What an array is, and elementary information on how to code it. ASCII The ASCII table. bit What a bit is. bit map What a bit map is, and how to code it under C. buffer What a buffer is, and how buffering affects your languages. byte What a byte is. byte ordering This describes how bytes and words are ordered on the various machines on which COHERENT has been implemented. calling conventions The calling conventions for COHERENT functions. This is particularly important if you are writing modules in assembly language. cast How to ``coerce'' one data type into another. cc0 The COHERENT C parser. cc1 The COHERENT C code generator. cc2 The COHERENT C optimizer. cc3 The COHERENT de-compiler. It generates a file of assembly language for your examination. data formats This gives the size of the common data types on the various machines on which COHERENT has been implemented. data types The data types that COHERENT C recognizes. environ This article introduces the argument environ, which by default is the third argument passed to the function main() in a C program. It points to image of the process's environment. errno This global variable holds the error status returned by a COHERENT system call. The article errno.h interprets the codes that can appear in this variable. execution This describes how each form of the system call exec() executes a program. field Description of what a field is, and how to address it. FILE Description of the FILE structure used by STDIO routines. file What a file is. It also goes into the ``black art'' of permissions. file descriptor Description of the file descriptor used by COHERENT system calls. function What a function is. GMT A brief introduction to Greenwich Mean Time, which is the internal time for every COHERENT system. initialization This describes the rules of initialization for C. interrupt What an interrupt is. Latin 1 The table ISO Latin 1 (ISO 8859.1). lvalue Definition of the ``left value'' in a C expression. macro What a C macro is, and how COHERENT C processes them. manifest constant This introduces manifest constants, and lists the constants that COHERENT defines automatically. modulus A definition of the modulus arithmetic operation. NUL Definition of the NUL character. nybble What a ``nybble'' is. object format Definition of an object format. operator A list of the C operators. This article also gives a table of precedence for the operators. pattern What a pattern is. pointer What a pointer is, and tips for using pointers with COHERENT C. portability This gives some tips on how to write portable programs. POSIX Standard A brief introduction to the POSIX Standard random access A definition of random access. read-only memory A definition of ROM, or ``read-only memory''. recursion A definition of this programming technique. rvalue Definition of the ``right value'' in a C expression. signame This global array holds a string that describes the signal that a program has received. stack A definition of the program stack, and how to manipulate it under COHERENT C. standard error Definition of the standard-error device. standard input Definition of the standard-input device. standard output Definition of the standard-output device. stderr The file descriptor of the standard-error device. stdin The file descriptor of the standard-input device. STDIO Definition of STDIO -- i.e., ``standard input and output''. stdout The file descriptor of the standard-output device. storage class This entry summarizes the classes of storage that COHERENT C recognizes. stream Definition of a file stream. STREAMS This article summarizes the COHERENT implemenation of STREAMS. structure Definition of a structure, and basic information on how to code it. structure assignment This details structure assigment under COHERENT C. stty Summary of the stty interface to terminals. termio Introduction to the termio terminal interface. termios This summarizes the POSIX Standard extensions to the termio terminal interface. type checking This details type checking under COHERENT C. type promotion This details type promotion under COHERENT C. Other Languages COHERENT includes the following programming languages: awk This interpreted language lets you write programs for text processing. It is especially good at processing tabular information, thus letting you quickly write simple data-base programs. bc bc is a calculator program that offers infinite magnitude and infinite precision. This is an interpreted langauge that you can program on the fly to perform simple tasks, such as computing interest payments on the national debt. You can also write programs that you can run repeatedly. These can also take advantage of a library of routines already written for you. lex This program reads a set of lexical analysis rules that you write in a standard form, and generates a C program that you can compile and run. yacc This program reads a set of parsing rules that you write in Backus- Naur Form, and generates a C program that you can compile and run. You can use with code generated by lex to write complex programs, such as compilers. Each of these languages is described in a Lexicon article. The front of the manual has a tutorial for each. See Also Administering COHERENT, C language, COHERENT, commands, libraries, Using COHERENT