COMLINE.ASM and FORTCK.FOR : These were are files that I have found useful in writing MICROSOFT FORTRAN files, I do not guarantee that they will with any other version of FORTRAN or on any system other than the IBM PC (tested on an XT, AT, 386 and will most likely work with any DOS 2.0 or higher IBM machines). Please distribute them in this unmodified form in COMLINE.ZIP or if you prefer another archive format. Include the files: COMLINE.ASM - Command line translator (Borland Turbo Assembler) COMLINE.OBJ - Linkable object file C_CLINE.C - C demo (MS Quick C) QB_CLINE.BAS - Basic demo (MS Quick Basic) P_CLINE.PAS - Pascal demo (Borland Turbo Pascal) FORTCK.FOR - Fortran file checker (MS Fortran) FORTCK.EXE - Run time version README.TXT - This file README.BAT - Stupid batch file to read this file ALLCHARS.255 - All 255 characters, to test FORTCK and other programs COMLINE: This will read information from the DOS Command line when you initially run a EXE file. The information is returned in a CHARACTER*128 string with the first character being the length of the string. The string is terminated with a carriage return. An example of how to use COMLINE is provided in FORTCK.FOR and the other demo programs. COMLINE is totally self contained ASSEMBLY language, but it was written to work via a FORTRAN style FAR PROCEDURE call. Therefore other languages must follow the FORTRAN FAR calling convention (where the address of the rightmost argument is the first thing pushed to the stack, high byte first, before the return address, all of which must be 32 bit addresses). FORTCK: FORTCK will check a program for anything that is not a FORTRAN readable character (ASCII [32 - 126] + CR/LF). !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz{|}~ and SPACE It is designed to indicate embedded control characters and also to detect a broken carriage return/line feed sequence, which my editor occasionally slips in. There are a few command line options (none are case sensitive and they may begin with '-' or '/'): /s### : Skip ASCII value Where ### is a number corresponding to an ASCII character code. The number may be up to 3 characters long. If the last character is an 'H' then the number is assumed to be hexadecimal. If more than one number is specified, they must be 3 characters long (the leading zeroes must be entered). If you only include one number, it may be from one to three characters. This option may be called repeatedly. If the character specified is in the "legal" range of this program (SPACE to ~), the character is marked as bad and any occurrences of the character are displayed. If a CR is specified, the CR/LF sequence check is not completed. /a$ : Skip ASCII character Where $ is an ASCII character. The characters are typed directly you may include up to MAXSKIP characters. This option may be called repeatedly. This option may also be used to mark bad characters bad. /f : Fix on (+) The program will delete any bad characters (and fix any broken CR/LF sequence). This is done in the file: FIXED.TXT, your original file is left intact. /? /h : Print help summary screen DEMOS IN OTHER LANGUAGES: I wanted to test the portability of COMLINE.ASM to different languages on the IBM PC. The test files show the proper way to set up the subroutine as a FAR call (variables and return) and will then print out the length of the string and the data contained in the string. All the variables that I tested were fixed length strings, which really aren't much of a problem; however, with variable length strings, the termination character varies from language to language. The Pascal routine wasn't really necessary for Turbo Pascal since it has command line information as a built in feature, but it should give other interested Pascal programmers a push in the right direction. Again, I am very poor so contributions of any dollar amount will be greatly appreciated. Send them to: Scott Heavner 19 Pine Woods Drive North Tonawanda, NY 14120 If you have any comments or suggestions, email them to sdh@po.cwru.edu