.page size 55,80 .nonumber .lm 8.rm 70 .no flags accept .flags accept ~ .flags bold ^* This software is furnished for free and may be used and copied as desired. This software or any other copies thereof may be provided or otherwise made available to any other person. No title to and ownership of the software is hereby transferred or allowed. This software may not be sold for profit. .b1 The information in this software is subject to change without notice and should not be construed as a commitment by Leeds ~& Northrup Co. to supply support. .b1 Leeds ~& Northrup assumes no responsibility for the use or reliability of this software on any equipment whatsoever. This software is also not guaranteed to work. After all this is .b1 .center ;+-----------------+ .center ;| FREEBE SOFTWARE | .center ;+-----------------+ .b1 .indent +8;Robert A. Harris .indent +8;Leeds ~& Northrup Co. .indent +8;Dickerson Road .indent +8;North Wales, Pa. 19454 .indent +8;(215)-643-2000 .b1 ---- ---- ---- ---- .b1 .autoparagraph .set paragraph 0,1,4 .center ;IF MODified (IFMOD) Program .center ;--------------------------- .require "abstract.rno" All the files in this directory are part of IFMOD. A short description of each file is given below: .b1 .!begin file list .lm +18 .indent -16 AAAREADME.1ST###Contains this notice. .indent -16 AAAREADME.RNO###The RUNOFF source used to generate the AAAREADME.1ST notice. .b1 .indent -16 ABSTRACT.DOC####This is the abstract submitted to DECUS along with the program. .indent -16 ABSTRACT.RNO####The RUNOFF source used to generate the ABSTRACT.DOC file and the opening paragraph of AAAREADME.1ST notice. .b1 .indent -16 IFMOD.EXE#######A linked executable version of IFMOD. In order to use this program a foreign command must be created. To define the foreign command enter the following: .b1 .indent +3 $ IFMOD :== $disk:[directory]IFMOD.EXE .b1 .test page 20 .indent -16 IFMOD.HLP#######This is a HELP module describing how to use IFMOD. This module is ready for adding to the system HELP library (SYS$HELP:HELPLIB.HLB). To add this module to the HELP library you use the following command: .b1 .indent +3 $ LIBRARY/HELP SYS$HELPLIB.HLB IFMOD.HLP .b1 Note: In our system all non-DEC help modules have '_' appended to the module name. If you do not use this convention you must edit the file IFMOD.HLP and remove the '_' from the first line of the file before adding it to HELP. .b1 .indent -16 IFMOD.BLD#######Command procedure to compile/assemble and link all the source files needed to generate a new version of IFMOD. It should be noted that this command procedure uses an existing version of IFMOD.EXE to actually build itself. If you don't have a working version of IFMOD available, then the assemblies may be performed manually by seeing what commands are executed by the procedure. .b1 .indent -10 Source files. .b1 .indent -16 IFMOD.MAR#######IFMOD main program. .b1 .indent -16 IFMODRMS.MAR####This module is used to access a file header for the modification date via the RMS system services. .b1 .indent -16 IFMODLIB.MAR####This module is used to access the insertion date of modules stored in Library files. .b1 .indent -16 IFMODMSG.MSG####This module contains the error messages for the IFMOD program. .b1 .indent -10 There are also several Run-Time Library routines and System Service routines used. .lm -18 .!end file list .page The following are some examples of IFMOD in use. .b1 The following is a command procedure to re-build the IFMOD program itself: .b2 .literal $ if "''ifmod_verify'" then set verify $!---------------------------------------------------------- $! IFMOD.BLD - The function of this command procedure is $! to build an executable image of the program IFMOD. $! It will test for modules which have changed and $! re-compile (assemble) and Link the modules. $! $! P1 - if specified, then P1 contains qualifiers for $! the LINK command to override the default $! qualifiers. The first qualifier is not to $! contain a / since it will be added by the $! proc. This is done because invoking the $! command procedure with a P1 value that $! begins with a / confuses DCL and it thinks $! the / qualifier is for the command $! procedure invocation. $!---------------------------------------------------------- $! 22-Jan-1984 R. A. Harris Initial Coding. $!---------------------------------------------------------- $ on error then goto abort $ on control_y then goto abort $! $ if "''f$mode()'" .eqs. "BATCH" then assign nla0: sys$print $ if "''f$mode()'" .eqs. "BATCH" then set default [.ifmod] $! $! Create a foreign symbol for IFMOD (boot strapping $! itself). "SYS$COM:" is a logical name which is $! assigned to the disk and directory where an $! executable copy of IFMOD is stored. $! $ ifmod := $sys$com:ifmod/error=(.true.)/echo $! $! Define default qualifiers for compiles and assembles. $! This is done in such a way that simple changes to $! the command procedure can change the defaults to $! ones desirable for debugging enhancements to the $! program. $! $ macro := macro/nolist $ !!!! macro := macro/nolist/debug $ !!!! macro := macro/list/debug $! $ message := message/nolist $ !!!! message := message/list $! $ link := link/notrace/nodebug $ !!!! link := link/notrace/debug $ !!!! link := link/trace/debug $ if p1 .nes. "" then link := 'link'/'p1' $! $! Set up to compile and assemble the progarm. If errors $! are detected then and error flag is set to yes. $! $ error := no $ on error then error := yes $! $ ifmod ifmod.mar .gt. ifmod.obj then $ 'macro' ifmod $ ifmod ifmodrms.mar .gt. ifmodrms.obj then $ 'macro' ifmodrms $ ifmod ifmodlib.mar .gt. ifmodlib.obj then $ 'macro' ifmodlib $ ifmod ifmodmsg.msg .gt. ifmodmsg.obj then $ 'message' ifmodmsg $! $ if error then goto abort ! if errors, abort $ on error then goto abort ! set up new on error action $! $! Link the program. $! $ ifmod/error=(.false.)/noecho - (ifmod.obj,ifmodrms,ifmodlib,ifmodmsg) - .lt. ifmod.exe then goto endif_link $ v = f$verify("YES") $ 'link' sys$input:/options ifmod,- ifmodrms,- ifmodlib,- ifmodmsg $ endif_link: !'f$verify(V)' $! $ if error then goto abort ! check for link errors. $ goto exit $! $! Abort. $! $ abort: !'f$verify("NO")' $ if verify then set verify $ exit 4 $! $! Exit. $! $ exit: $ if verify then set verify !'f$verify("NO")' .end literal .page Example of a command procedure for building an application program .b2 .literal $ verify = 'f$verify("NO")' $ if "''simul_tst'" then set verify $ error = "NO" $ on error then error = "YES" $ on control_y then goto abort $! $ set default dnbc:[harris.simul] $! $ fortran := fortran /nolist $ !!!! fortran := fortran /nolist /debug $ !!!! fortran := fortran /nolist /debug /noopt $ !!!! fortran := fortran /nolist /debug /noopt /d_lines $! $ macro := macro /nolist $ !!!! macro := macro /nolist /debug $! $ link := link /nomap /nodebug /notrace $ !!!! link := link /map=simul /nodebug $ !!!! link := link /map=simul /debug $! $ if p1 .nes. "" then p1 := /'p1' $! $ ifmod := $sys$com:ifmod /echo /error=(.true.) $! $! Compile or assemble the new routines (if necessary) $! $ on error then error = "YES" $ ifmod simulx.mar .gt. simulx.obj then 'macro' simulx $! $ on error then error = "YES" $ ifmod opsys.for,commons.for,discs.cmn .gt. opsys.obj - then 'fortran' opsys $! $ on error then error = "YES" $ ifmod bioproc.for,commons.for,discs.cmn .gt. - bioproc.obj then 'fortran' bioproc $! $ on error then error = "YES" $ ifmod fortmaint.for,commons.for,discs.cmn .gt. - fortmaint.obj then 'fortran' fortmaint $! $ on error then error = "YES" $ ifmod mod39.for .gt. mod39.obj then 'fortran' mod39 $! $ on error then error = "YES" $ ifmod valvol0.for,discs.cmn .gt. - valvol0.obj then 'fortran' valvol0 $! $ on error then error = "YES" $ ifmod getstd.for,discs.cmn .gt. - getstd.obj then 'fortran' getstd $! $ on error then error = "YES" $ ifmod getdcds.for,discs.cmn .gt. - getdcds.obj then 'fortran' getdcds $! $ on error then error = "YES" $ ifmod discs.for,discs.cmn .gt. - discs.obj then 'fortran' discs $! $ on error then error = "YES" $ ifmod ablanks.for .gt. ablanks.obj then 'fortran' ablanks $! $ on error then error = "YES" $ ifmod conv.mar .gt. conv.obj then 'macro' conv $! $ on error then error = "YES" $ ifmod cconv.for .gt. cconv.obj then 'fortran' cconv $! $ on error then error = "YES" $ ifmod flip.for .gt. flip.obj then 'fortran' flip $! $ on error then error = "YES" $ ifmod init.for,commons.for,discs.cmn .gt. - init.obj then 'fortran' init $! $ on error then error = "YES" $ ifmod cdump.for,commons.for .gt. - cdump.obj then 'fortran' cdump $! $ on error then error = "YES" $ ifmod dumpconv.for .gt. - dumpconv.obj then 'fortran' dumpconv $! $ on error then error = "YES" $ ifmod block.for,commons.for .gt. - block.obj then 'fortran' block $! $! Link the Simulator $! $ on error then error = "YES" $! $ v = f$verify("YES") $ 'link' /executable=test:simul.exe 'p1' - SIMULX,- OPSYS,- BIOPROC,- FORTMAINT,- MOD39,- VALVOL0,- GETSTD,- GETDCDS,- DISCS,- ABLANKS,- CONV,- CCONV,- FLIP,- INIT,- CDUMP,- DUMPCONV,- BLOCK,- SYS$COM:IPSSLIB.OLB/LIBRARY $!'f$verify(V)' $ if error then goto abort $! $ goto exit $! $! $! $ abort: $ set noon $ if verify then set verify !'f$verify("NO")' $ exit 4 $! $! Exit. $! $ exit: $ if verify then set verify !'f$verify("NO")' .end literal