Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ncar!tank!dwayne@rover.bsd.uchicago.edu From: dwayne@rover.bsd.uchicago.edu Newsgroups: comp.lang.pascal Subject: Extended Pascal Message-ID: <1997@tank.uchicago.edu> Date: 24 Feb 89 16:22:49 GMT Sender: news@tank.uchicago.edu Organization: University of Chicago - Biomedical Physics Lines: 60 What's wrong with the way VAX Pascal uses modules. It's terribly easy to use and it's very powerful. In the program that you are writing, you properly declare your procedures near the beginning of the program with the 'extern' qualifier. This tells the compiler to check each occurrence of the thing in your program, and to check the types also. For example: PROGRAM TEST (INPUT,OUTPUT); CONST... TYPE... VAR Y: INTEGER; PROCEDURE WHATEVER(VAR:X:INTEGER);EXTERN; BEGIN . WHATEVER(Y); . END. At somepoint you create another file somewhere called a module. It looks like: MODULE MISCFNS (anyname) (INPUT,OUTPUT); [GLOBAL] PROCEDURE WHATEVER(VAR X:INTEGER); BEGIN . . END; END. IF BOTH THE PROGRAM IS COMPILED AND THEN THE MODULE(S) ARE COMPILED... WITHOUT ERROR OF COURSE, THEN YOU JUST LINK THEM: LINK WHATEVER,MISCFNS THEN THE VAX LINKER RESOLVES THE REFERENCES AND PRODUCES THE WHATEVER.EXE FILE. THIS MAKES IT TERRIBLY CONVENIENT TO MAKE, FOR EXAMPLE, A MODULE CONTAINING A BUNCH OF FUNCTIONS YOU LIKE TO USE. THEN WHENEVER YOU WRITE A PROGRAM THAT USES ANY OF THEM THEN JUST LINK TO THAT MODULE. LINK MYNEWPROG,MYFAVFNS THIS OF COURSE USES THE VAX LINKER WHICH LINKS PROGRAMS AND MODULES REGARDLESS OF THEIR NATIVE LANGUAGE (FOR EXAMPLE A C PROGRAM WITH FORTRAN AND PASCAL FNS IF YOU LIKE). BUT THE STANDARD COULD REQUIRE THE COMPILER TO PRODUCE CROSS-REFERENCE TABLES OF UNFULFILLED REFERENCES. AND ALSO REQUIRE SOME STANDARD LINKING PROTOCOL THAT TAKES THESE COMPILED OBJECT CODE FILES AND RESOLVES THEM INTO EXECUTABLES. DWAYNE SPRADLIN DWAYNE@ROVER.BSD.UCHICAGO.EDU