├── .zenodo.json ├── CITATION.cff ├── COGSMAP ├── data │ ├── ELEV.-E1 │ ├── ELEV2.-E2 │ ├── ELLIPSE.-E2 │ ├── FRNRTOP.-E2 │ ├── HELPFILE.LST │ ├── LAKE.-E2 │ ├── LEASES.-E2 │ ├── MAPS.LST │ ├── NETSAND.-E2 │ ├── PIPELINE.-E2 │ ├── PLS.-E1 │ ├── PLS.-E2 │ ├── RD-FILES.LST │ ├── ROADS.-E2 │ ├── SEISLINE.-E2 │ ├── SOILS.-E2 │ ├── STREAMS.-E2 │ ├── THEMES.LST │ ├── TOPLINE.-E2 │ ├── WATER.-E2 │ ├── WELLELEV.-E1 │ └── WELLID.-E1 └── program │ ├── ADD.EX │ ├── ALTITUDE.-BP │ ├── ASSIGN.EX │ ├── AVERAGE.EX │ ├── BASICS.EX │ ├── BP.IN │ ├── BUILDING.-BP │ ├── CLUMP.EX │ ├── COGSMAP.EXE │ ├── COPY.EX │ ├── COVER.EX │ ├── CROSS.EX │ ├── DEMO.IN │ ├── DESCRIBE.EX │ ├── DIFFEREN.EX │ ├── DISPLAY.EX │ ├── DIVIDE.EX │ ├── DRAIN.EX │ ├── ECHO.EX │ ├── EULER.EX │ ├── EXPLAIN.EX │ ├── EXPONENT.EX │ ├── EXPOSE.EX │ ├── GRID.EX │ ├── LABEL.EX │ ├── LIST.EX │ ├── MAP.EX │ ├── MAXIMIZE.EX │ ├── MINIMIZE.EX │ ├── MULTIPLY.EX │ ├── NOTE.EX │ ├── ORIENT.EX │ ├── POINT.EX │ ├── PRINT.EX │ ├── PROFILE.EX │ ├── PROTECT.EX │ ├── QUIET.EX │ ├── RADIATE.EX │ ├── READ.EX │ ├── RECODE.EX │ ├── RESPACE.EX │ ├── ROADS.-BP │ ├── SCALE.EX │ ├── SCAN.EX │ ├── SCORE.EX │ ├── SHOW.EX │ ├── SIZE.EX │ ├── SLICE.EX │ ├── SORT.EX │ ├── SPAN.EX │ ├── SPREAD.EX │ ├── STARTING.MAP │ ├── STOP.EX │ ├── STRIP.EX │ ├── SUBTRACT.EX │ ├── SURVEY.EX │ ├── TRACE.EX │ ├── TREES.-BP │ ├── WATER.-BP │ ├── WRITE.EX │ └── ZAP.EX ├── CONTRIBUTING.md ├── LICENSE.md ├── PC-MOSS ├── data │ └── mosscoal │ │ ├── ACECS │ │ ├── BACKSCRL.COM │ │ ├── BACKSCRL.DOC │ │ ├── BORDER │ │ ├── COAL │ │ ├── COAL.DT │ │ ├── COAL.FA │ │ ├── COAL.IP │ │ ├── COAL.SL │ │ ├── COALHOLE │ │ ├── COALHOLE.AT │ │ ├── COALSAMP │ │ ├── COALSAMP.AT │ │ ├── DAVIS │ │ ├── GEOLOG │ │ ├── INTRPROC │ │ ├── LANDLINE │ │ ├── LM │ │ ├── MUDDY │ │ ├── MUDDY.AT │ │ ├── NURESAMP │ │ ├── OGLEASES │ │ ├── OWNMINRL │ │ ├── OWNSURF │ │ ├── PLSCEED │ │ ├── PRLAS │ │ └── ROADS ├── manual │ ├── AppendixC-MOSS-Line-Styles-and-Font-Types.pdf │ ├── MOSS User's Manual │ │ └── mossusersmanual00unse.pdf │ ├── PC-MOSS Version 1.0 USER AND PROGRAMMER DOCUMENTATION │ │ └── mossdoc.txt │ └── file_formats │ │ └── files.doc ├── program │ └── GIS │ │ ├── EXE │ │ ├── ACTIVE.EXE │ │ ├── ANNOTATE.EXE │ │ ├── AREA.EXE │ │ ├── ATTRIBUT.EXE │ │ ├── AUDIT.EXE │ │ ├── AUTOLABE.EXE │ │ ├── BSEARCH.EXE │ │ ├── BUFFER.EXE │ │ ├── COMPUTE.EXE │ │ ├── CONTOUR.EXE │ │ ├── DATABTES.EXE │ │ ├── DELETE.EXE │ │ ├── DEVICE.EXE │ │ ├── DISTANCE.EXE │ │ ├── EXPORT.EXE │ │ ├── FREE.EXE │ │ ├── FREQUENC.EXE │ │ ├── GENERATE.EXE │ │ ├── GIS.EXE │ │ ├── GRID.EXE │ │ ├── IMPORT.EXE │ │ ├── INTERSEC.EXE │ │ ├── INTRPROC │ │ ├── LEGEND.EXE │ │ ├── LENGTH.EXE │ │ ├── LIST.EXE │ │ ├── LPOVER.EXE │ │ ├── MERGE.EXE │ │ ├── NUMBER.EXE │ │ ├── OPEN.EXE │ │ ├── PENPLOT.EXE │ │ ├── PERIMETE.EXE │ │ ├── PLOT.EXE │ │ ├── PROFILE.EXE │ │ ├── PROXIMIT.EXE │ │ ├── QUERY.EXE │ │ ├── REPORT.EXE │ │ ├── RESET.EXE │ │ ├── SAVE.EXE │ │ ├── SELECT.EXE │ │ ├── SHADE.EXE │ │ ├── SIZE.EXE │ │ ├── STATISTI.EXE │ │ ├── STATUS.EXE │ │ ├── SUB2AT.EXE │ │ ├── SUBEDIT.EXE │ │ ├── UNION.EXE │ │ ├── VARIOGRA.EXE │ │ ├── WINDOW.EXE │ │ ├── XYSUBJEC.EXE │ │ └── ZOOM.EXE │ │ ├── HELP │ │ ├── MHACTIVE │ │ ├── MHANNOTA │ │ ├── MHAREA │ │ ├── MHATTDES │ │ ├── MHATTRIB │ │ ├── MHAUDIT │ │ ├── MHAUTO │ │ ├── MHBSEARC │ │ ├── MHBUFFER │ │ ├── MHBYE │ │ ├── MHCOMPUT │ │ ├── MHCONTOU │ │ ├── MHDATABT │ │ ├── MHDELETE │ │ ├── MHDEVICE │ │ ├── MHDISTAN │ │ ├── MHERASE │ │ ├── MHEXPORT │ │ ├── MHFREE │ │ ├── MHFREQUE │ │ ├── MHGENERA │ │ ├── MHGRID │ │ ├── MHHELP │ │ ├── MHIMPORT │ │ ├── MHINTER │ │ ├── MHKRIG │ │ ├── MHLEGEND │ │ ├── MHLENGTH │ │ ├── MHLIST │ │ ├── MHLPOVER │ │ ├── MHNUMBER │ │ ├── MHOPEN │ │ ├── MHPENPLO │ │ ├── MHPERIME │ │ ├── MHPLOT │ │ ├── MHPROFIL │ │ ├── MHPROXIM │ │ ├── MHQUERY │ │ ├── MHREPORT │ │ ├── MHRESET │ │ ├── MHSAVE │ │ ├── MHSELECT │ │ ├── MHSHADE │ │ ├── MHSIZE │ │ ├── MHSPLINE │ │ ├── MHSTATIS │ │ ├── MHSTATUS │ │ ├── MHSUB2AT │ │ ├── MHSUBEDI │ │ ├── MHTESTGR │ │ ├── MHUNION │ │ ├── MHUTILIT │ │ ├── MHVARIOG │ │ ├── MHWINDOW │ │ ├── MHXYSUBJ │ │ ├── MHZOOM │ │ └── PCMOSS.DOC │ │ └── INTRFACE │ │ ├── ACTIVE.PRG │ │ ├── BLMLINE.DT │ │ ├── BLMSYM.DT │ │ ├── FONTS.DT │ │ ├── GIS.MNU │ │ ├── GLOBAL.MNU │ │ ├── MOSS-PC.MNU │ │ ├── MOSS.MNU │ │ ├── NULL.MNU │ │ ├── PC-MOSS.MNU │ │ └── UTILITY.MNU └── src │ ├── ABXDRW.FOR │ ├── ACTIVE.FOR │ ├── ADCORD.FOR │ ├── ADDDIR.FOR │ ├── ADDEND.FOR │ ├── ADSDEL.FOR │ ├── ADSTAD.FOR │ ├── AKIMA.FOR │ ├── ALTER.FOR │ ├── AMOVE.FOR │ ├── ANGLE.FOR │ ├── ANNOTATE.FOR │ ├── APGET.FOR │ ├── AREA.FOR │ ├── ASK.FOR │ ├── ASKSUB.FOR │ ├── ATTACH.FOR │ ├── ATTDSC.FOR │ ├── ATTOPN.FOR │ ├── ATTRIBUT.FOR │ ├── AUDIT.FOR │ ├── AUTOLABE.FOR │ ├── AVWIND.FOR │ ├── AXIS.FOR │ ├── AZIMUT.FOR │ ├── B2SORT.FOR │ ├── BAD1.FOR │ ├── BAD2.FOR │ ├── BAD3.FOR │ ├── BANNER.FOR │ ├── BAR.FOR │ ├── BARC.FOR │ ├── BARCL.FOR │ ├── BARN.FOR │ ├── BARN1.FOR │ ├── BLDSUB.FOR │ ├── BLFILL.FOR │ ├── BLML.FOR │ ├── BLMLD.FOR │ ├── BLMLINE.FOR │ ├── BLMSYM.FOR │ ├── BLOCK.FOR │ ├── BOOLE.FOR │ ├── BOOLOG.FOR │ ├── BOXF.FOR │ ├── BRESEN.FOR │ ├── BSEARCH.FOR │ ├── BSORT.FOR │ ├── BTEMPLT.FOR │ ├── BUFCOM.FOR │ ├── BUFFER.FOR │ ├── BWEEDT.FOR │ ├── BXCALC.FOR │ ├── BYTEIT.FOR │ ├── C77.BAT │ ├── CALCLB.FOR │ ├── CALLAB.FOR │ ├── CALLABL.FOR │ ├── CALMBR.FOR │ ├── CELPRM.FOR │ ├── CENTAR.FOR │ ├── CHASH.FOR │ ├── CHDBLD.FOR │ ├── CHKFLT.FOR │ ├── CHKUNTS.FOR │ ├── CHRBLD.FOR │ ├── CHRJST.FOR │ ├── CHROUT.FOR │ ├── CIRCLE.FOR │ ├── CIRCOMP.FOR │ ├── CLEAR.FOR │ ├── CLIP.FOR │ ├── CLOSED.FOR │ ├── CLOSEF.FOR │ ├── CLRMNU.BAK │ ├── CLRMNU.FOR │ ├── CNVUPR.FOR │ ├── COMDASH.FOR │ ├── COMPAT.FOR │ ├── COMPILE.BAK │ ├── COMPILE.BAT │ ├── COMPM.FOR │ ├── COMPP.FOR │ ├── COMPRESC.FOR │ ├── COMPRN.FOR │ ├── COMPUTE.FOR │ ├── CONPLT.FOR │ ├── CONTIN.FOR │ ├── CONTOUR.FOR │ ├── CONTPL.FOR │ ├── CORDPQ.FOR │ ├── CORDXY.FOR │ ├── CORNRS.FOR │ ├── CORRAL.FOR │ ├── COVAR4.FOR │ ├── COWRT.FOR │ ├── CPTRNS.FOR │ ├── CRDOUT.FOR │ ├── CRISS.FOR │ ├── CROS.FOR │ ├── CROSHACH.FOR │ ├── CROSHTCH.FOR │ ├── CROSS.FOR │ ├── CROSS1.FOR │ ├── CROSY.FOR │ ├── CUBSPLIN.FOR │ ├── DAGET.FOR │ ├── DASHP.FOR │ ├── DATABTES.FOR │ ├── DBCHAN.INC │ ├── DECIP.FOR │ ├── DECIP1.FOR │ ├── DELETE.FOR │ ├── DELMAP.FOR │ ├── DELOOP.FOR │ ├── DENUM.FOR │ ├── DESC.FOR │ ├── DESHDR.FOR │ ├── DESPRJ.FOR │ ├── DESVSB.FOR │ ├── DETPROX.FOR │ ├── DEVGET.FOR │ ├── DEVICE.FOR │ ├── DEVPREP.FOR │ ├── DIGET.FOR │ ├── DIGOUT.FOR │ ├── DISTANCE.FOR │ ├── DISTNCE.FOR │ ├── DLINDEF.FOR │ ├── DMSIN.FOR │ ├── DNAMES.INC │ ├── DOLITL.FOR │ ├── DRAWB.FOR │ ├── DRFAST.FOR │ ├── DRFTRM.FOR │ ├── DRPLUS.FOR │ ├── DRWSYM.FOR │ ├── DSCLS.FOR │ ├── DSIN.FOR │ ├── DSOPN.FOR │ ├── DSORT.FOR │ ├── DSOUT.FOR │ ├── ELIPSE.FOR │ ├── EQUIV.FOR │ ├── EXPORT.FOR │ ├── FASTCONT.FOR │ ├── FAULT.FOR │ ├── FBISEA.FOR │ ├── FCHECK.FOR │ ├── FCHECK2.FOR │ ├── FCHECK3.FOR │ ├── FDATA.FOR │ ├── FIGURE.FOR │ ├── FILES.BAT │ ├── FILINT.FOR │ ├── FILLC.FOR │ ├── FIXCHR.FOR │ ├── FLD.FOR │ ├── FLDSET.FOR │ ├── FLIN2.FOR │ ├── FLINE.FOR │ ├── FNDMAP.FOR │ ├── FNDSUB.FOR │ ├── FNUM.FOR │ ├── FONTBLK.FOR │ ├── FONTS.FOR │ ├── FPOINT.FOR │ ├── FREE.FOR │ ├── FREEACT.FOR │ ├── FREQUENC.FOR │ ├── FRSTC.FOR │ ├── FSORT.FOR │ ├── FSTCHR.FOR │ ├── GENERATE.FOR │ ├── GENRAL.FOR │ ├── GETAT.FOR │ ├── GETAT1.FOR │ ├── GETATT.FOR │ ├── GETDATE.FOR │ ├── GETFAST.FOR │ ├── GETFLE.FOR │ ├── GETFSUB.FOR │ ├── GETHAT.FOR │ ├── GETMAF.FOR │ ├── GETMAP.FOR │ ├── GETPRG.FOR │ ├── GETPTS.FOR │ ├── GETSUB.FOR │ ├── GETWND.FOR │ ├── GETWRD.FOR │ ├── GETXY.FOR │ ├── GIS.FOR │ ├── GLOBAL.INC │ ├── GOFF.FOR │ ├── GRID.FOR │ ├── GRIDI1.FOR │ ├── GRIDI2.FOR │ ├── GRIDMK.FOR │ ├── GRIDPT.FOR │ ├── GROPE.FOR │ ├── GTB.FOR │ ├── GTMAP.FOR │ ├── GTNAM.FOR │ ├── GWIND.INC │ ├── HBAR.FOR │ ├── HEADER.FOR │ ├── HEADISP.FOR │ ├── HSTBARVL.FOR │ ├── HSTCNT.FOR │ ├── HSTDSC.FOR │ ├── HSTLEG.FOR │ ├── HSTPLT.FOR │ ├── HSTPOL.FOR │ ├── HSYMB.FOR │ ├── HSYPOS.FOR │ ├── IBARN.FOR │ ├── IBARN1.FOR │ ├── IBOOLE.FOR │ ├── ICENTAR.FOR │ ├── ICORDPQ.FOR │ ├── ICORDXY.FOR │ ├── ICORRAL.FOR │ ├── ICOWRT.FOR │ ├── ICRISS.FOR │ ├── IDCLDP.FOR │ ├── IDGRID.FOR │ ├── IDPDRV.FOR │ ├── IDPTIP.FOR │ ├── IDSFFT.FOR │ ├── IDTANG.FOR │ ├── IDXCHG.FOR │ ├── IFLINE.FOR │ ├── IGETIS.FOR │ ├── IGETPTS.FOR │ ├── IGRIDF.FOR │ ├── IGRIDP.FOR │ ├── IGRIDS.FOR │ ├── IGROPE.FOR │ ├── IINLIST.FOR │ ├── IINSIDE.FOR │ ├── IISLWND.FOR │ ├── IMPORT.FOR │ ├── INCM.FOR │ ├── INGRD.FOR │ ├── INIP.FOR │ ├── INITGV.FOR │ ├── INITIAL.FOR │ ├── INITL.FOR │ ├── INLIST.FOR │ ├── INOUT.FOR │ ├── INOUT1.FOR │ ├── INOUT2.FOR │ ├── INPGON.FOR │ ├── INPOLY.FOR │ ├── INSIDE.FOR │ ├── INTCHAR.FOR │ ├── INTERSEC.FOR │ ├── INUM.FOR │ ├── INVWND.FOR │ ├── IO.INC │ ├── IPPERIM.FOR │ ├── ISAVMAT.FOR │ ├── ISAVWRK.FOR │ ├── ISIDE.FOR │ ├── ISLWND.FOR │ ├── JKGET.FOR │ ├── JKGTLS.FOR │ ├── JKPACK.FOR │ ├── JKPTLS.FOR │ ├── JKPTUA.FOR │ ├── JKPUA.FOR │ ├── JKPUT.FOR │ ├── JKUNPK.FOR │ ├── JUNK │ ├── KHEADER.FOR │ ├── KRGIN1.FOR │ ├── KRGIN2.FOR │ ├── KRIG.FOR │ ├── KRIG4P.FOR │ ├── LABMOV.FOR │ ├── LASTC.FOR │ ├── LBGENR.FOR │ ├── LBLBOX.FOR │ ├── LBOOLE.FOR │ ├── LBPARM.FOR │ ├── LDCMD.FOR │ ├── LEGEND.FOR │ ├── LENGTH.FOR │ ├── LETERS.FOR │ ├── LICENSE │ ├── LIMIT.FOR │ ├── LINKUP.FOR │ ├── LIST.FOR │ ├── LISTAT.FOR │ ├── LODMNU.FOR │ ├── LPOVER.FOR │ ├── LSTASN.FOR │ ├── LSTCHR.FOR │ ├── LSTDIR.FOR │ ├── MAEVAL.FOR │ ├── MAJMIN.FOR │ ├── MAPNAME.INC │ ├── MATCH.FOR │ ├── MATCH2.FOR │ ├── MATHFN.FOR │ ├── MATHSTK.FOR │ ├── MAXCOR.FOR │ ├── MCHEK.FOR │ ├── MCOMP.FOR │ ├── MCOMP1.FOR │ ├── MCOMPH.FOR │ ├── MCONTPR.FOR │ ├── MDYHMS.FOR │ ├── MERGE.FOR │ ├── MERSUB.FOR │ ├── MFAST.INC │ ├── MHELP.FOR │ ├── MNVAR.FOR │ ├── MOSPRM.FOR │ ├── MOSSBLK.FOR │ ├── MOVXR.FOR │ ├── MX.FOR │ ├── MYST.INC │ ├── NBCHRS.FOR │ ├── NEIGH.FOR │ ├── NEWSUB.FOR │ ├── NEXTPT.FOR │ ├── NEXTWD.FOR │ ├── NSSUB.FOR │ ├── OPEN.FOR │ ├── OPENED.FOR │ ├── OPENF.FOR │ ├── ORDERI.FOR │ ├── OUTCM.FOR │ ├── OUTGEO.FOR │ ├── OUTIP.FOR │ ├── OVERLP.FOR │ ├── PACKC.FOR │ ├── PARAMS.INC │ ├── PARSE.FOR │ ├── PARSPRMS.FOR │ ├── PEN.FOR │ ├── PENASS.FOR │ ├── PENBLK.FOR │ ├── PENDV.FOR │ ├── PENPLOT.FOR │ ├── PERIMETE.FOR │ ├── PERR.FOR │ ├── PIP.FOR │ ├── PIP1.FOR │ ├── PIP2.FOR │ ├── PISL.FOR │ ├── PLOT.FOR │ ├── PLOTA.FOR │ ├── PLOTBLK.FOR │ ├── PLOTBLOC.FOR │ ├── PLOTDV.FOR │ ├── PLOTH.FOR │ ├── PLOTP.FOR │ ├── PLOTS.FOR │ ├── PLOTSYM.FOR │ ├── PLOTW.FOR │ ├── PLOUT.FOR │ ├── PLPARM.FOR │ ├── PNPL2.FOR │ ├── PNPOLY.FOR │ ├── PNUMBER.FOR │ ├── POFF.FOR │ ├── POISE.FOR │ ├── POSHFT.FOR │ ├── POSL.FOR │ ├── POV0.FOR │ ├── POV1.FOR │ ├── POV2.FOR │ ├── PPERIM.FOR │ ├── PQPNTS.500 │ ├── PQPNTS.INC │ ├── PRECHK.FOR │ ├── PREPRO.FOR │ ├── PRFAXIS.FOR │ ├── PRFPLT.FOR │ ├── PRHEAD.FOR │ ├── PROFILE.FOR │ ├── PROFIT.FOR │ ├── PROFLIP.FOR │ ├── PROIN.FOR │ ├── PROVW.FOR │ ├── PROXIMIT.FOR │ ├── PSET4.FOR │ ├── PTBOOLE.FOR │ ├── PUTAT.FOR │ ├── PUTFAST.FOR │ ├── PUTMAF.FOR │ ├── PUTMAP.FOR │ ├── PUTSUB.FOR │ ├── PUTSUB1.FOR │ ├── PXPARM.FOR │ ├── QUERCL.FOR │ ├── QUERY.FOR │ ├── QUPARM.FOR │ ├── RDBLK.FOR │ ├── RDN.FOR │ ├── RDXYZ.FOR │ ├── READIN.FOR │ ├── READLN.FOR │ ├── READ_F77.FOR │ ├── REALS.FOR │ ├── RECEIVE.FOR │ ├── REMBLK.FOR │ ├── REPORT.FOR │ ├── RESET.FOR │ ├── RESTRT.INC │ ├── RETRVL.FOR │ ├── RGRID.FOR │ ├── RLNCLN.FOR │ ├── RLNLEN.FOR │ ├── RLSOUT.FOR │ ├── RPN.FOR │ ├── RRLNLEN.FOR │ ├── RSLCOM.FOR │ ├── RSPNTS.500 │ ├── RSPNTS.INC │ ├── RTEMP.FOR │ ├── SAVE.FOR │ ├── SAVMAT.FOR │ ├── SAVWRK.FOR │ ├── SBJSRT.FOR │ ├── SCAGET.FOR │ ├── SCALIT.FOR │ ├── SCOMP.FOR │ ├── SDESC.FOR │ ├── SDESCR.FOR │ ├── SELECT.FOR │ ├── SELELP.FOR │ ├── SELEXT.FOR │ ├── SELFEA.FOR │ ├── SETPTR.FOR │ ├── SETW.FOR │ ├── SETWND.FOR │ ├── SHADE.FOR │ ├── SHADER.FOR │ ├── SINTER.FOR │ ├── SIZE.FOR │ ├── SOL.FIG │ ├── SPAG.ERR │ ├── SPAG.FIG │ ├── SPAG.OUT │ ├── SPAWN.INC │ ├── SPOINTS.FOR │ ├── SPOINTS.INC │ ├── SRCHPB.FOR │ ├── SRTTMP.FOR │ ├── SS2DGAMH.FOR │ ├── SS2DGRID.FOR │ ├── SS2DPREP.FOR │ ├── SS2DVCTL.FOR │ ├── SSPOINTS.FOR │ ├── STATISTI.FOR │ ├── STATUS.FOR │ ├── STRNG.INC │ ├── SUB2AT.FOR │ ├── SUBEDIT.FOR │ ├── SYMDRW.FOR │ ├── SYSDO.FOR │ ├── TABARA.FOR │ ├── TEMPL.FOR │ ├── TERM.FOR │ ├── THICK.FOR │ ├── TICS.FOR │ ├── TREDIR.FOR │ ├── TUPDIR.FOR │ ├── TYFIL.FOR │ ├── TYPE.INC │ ├── TYPESC.FOR │ ├── UDCONV.FOR │ ├── UDIN.FOR │ ├── UFINS.FOR │ ├── UIIN.FOR │ ├── UNION.FOR │ ├── UNPACK.FOR │ ├── UNSUB.FOR │ ├── UPDATE.FOR │ ├── UPSUBJ.FOR │ ├── VALDOP.FOR │ ├── VARGOUT.FOR │ ├── VARIN4.FOR │ ├── VARIOGRA.FOR │ ├── VAROUT.FOR │ ├── VECDRW.FOR │ ├── VECGET.FOR │ ├── VWND.INC │ ├── VZONE.FOR │ ├── WHMAP.INC │ ├── WHTCAL.FOR │ ├── WHTTRM.FOR │ ├── WHWND.FOR │ ├── WINDOW.FOR │ ├── WRITE_F7.FOR │ ├── WRTENTY.FOR │ ├── WRTMNU.FOR │ ├── XCONT.FOR │ ├── XI.FOR │ ├── XRXR.500 │ ├── XRXR.INC │ ├── XSIGN.FOR │ ├── XXX.FOR │ ├── XYPNTS.500 │ ├── XYPNTS.INC │ ├── XYSUBJEC.FOR │ ├── XYXY.500 │ ├── XYXY.INC │ ├── YI.FOR │ ├── YRYR.INC │ ├── ZOOM.FOR │ ├── ZOOMBX.FOR │ └── ZOOMPT.FOR ├── README.md └── codemeta.json /.zenodo.json: -------------------------------------------------------------------------------- 1 | { 2 | "creators": [ 3 | { 4 | "name": "Reed, Carl N III" 5 | }, 6 | { 7 | "name": "Katz, Sol" 8 | }, 9 | { 10 | "name": "Frosh, Randy" 11 | }, 12 | { 13 | "name": "Davidson, John" 14 | }, 15 | { 16 | "name": "Taylor, Anne" 17 | }, 18 | { 19 | "name": "Lee, John" 20 | } 21 | ], 22 | "contributors": [ 23 | { 24 | "name": "Löwe, Peter", 25 | "affiliation": "OSGeo", 26 | "orcid": "0000-0003-2257-0517", 27 | "type": "ContactPerson" 28 | }, 29 | { 30 | "name": "Nartišs, Māris", 31 | "affiliation": "OSGeo", 32 | "orcid": "0000-0002-3875-740X", 33 | "type": "DataCollector" 34 | }, 35 | { 36 | "name": "McKenna, Jeff", 37 | "affiliation": "GatewayGeo", 38 | "orcid": "0000-0003-3900-1863", 39 | "type": "DataManager" 40 | } 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /COGSMAP/data/ELEV.-E1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/ELEV.-E1 -------------------------------------------------------------------------------- /COGSMAP/data/ELEV2.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/ELEV2.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/ELLIPSE.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/ELLIPSE.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/FRNRTOP.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/FRNRTOP.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/HELPFILE.LST: -------------------------------------------------------------------------------- 1 | 3D ADD ORIENT ASSIGN AVERAGE SHOW 2 | CLUMP COMPUTE COPY COVER CROSS ZAP 3 | DESCRIBE DIVIDE DRAIN DUMP EULER STOP 4 | EXPOSE GRID HELP INTERPOLATE LABEL LIST 5 | MAXIMUM MINIMUM MULTIPLY POINT POWER DISPLAY 6 | PROTECT TRACE READ NOTE RENAME RECODE 7 | RESPACE PRINT SCALE SCAN SCORE SIZE 8 | SLICE SLOPE SORT SPACE STRIP SUBTRACT 9 | SURVEY SYSTEM TRANSLATE TREND RADIATE WRITE 10 | SPREAD 11 | -------------------------------------------------------------------------------- /COGSMAP/data/LAKE.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/LAKE.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/LEASES.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/LEASES.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/MAPS.LST: -------------------------------------------------------------------------------- 1 | BP Brown's Pond 2 | E2 ncga ellipse area, 9 twps 3 | E1 8 TWP NCGA DATA SET 4 | -------------------------------------------------------------------------------- /COGSMAP/data/NETSAND.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/NETSAND.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/PIPELINE.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/PIPELINE.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/PLS.-E1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/PLS.-E1 -------------------------------------------------------------------------------- /COGSMAP/data/PLS.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/PLS.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/RD-FILES.LST: -------------------------------------------------------------------------------- 1 | 2 | 3 | Directory of D:\SOL\E2 4 | Volume in drive D is DISK1_VOL2 5 | -------------------------------------------------------------------------------- /COGSMAP/data/ROADS.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/ROADS.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/SEISLINE.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/SEISLINE.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/SOILS.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/SOILS.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/STREAMS.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/STREAMS.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/THEMES.LST: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 File(s) 7835648 bytes free 4 | Directory of D:\SOL\E2 5 | Volume in drive D is DISK1_VOL2 6 | A1 -E2 57600 1-01-80 3:11a 7 | AAA -E2 57600 1-01-80 3:11a 8 | ELEV2 -E2 57600 1-01-80 1:10a 9 | ELLIPSE -E2 57600 1-01-80 5:27a 10 | FRNRTOP -E2 57600 1-01-80 1:48a 11 | LAKE -E2 57600 1-01-80 3:11a 12 | LEASES -E2 57600 1-01-80 3:29a 13 | NETSAND -E2 57600 1-01-80 3:29a 14 | PIPELINE -E2 57600 1-01-80 5:21a 15 | PLS -E2 57600 1-01-80 2:47a 16 | ROADS -E2 57600 1-01-80 2:46a 17 | SEISLINE -E2 57600 1-01-80 5:54a 18 | SOILS -E2 57600 1-01-80 5:54a 19 | STREAMS -E2 57600 1-01-80 2:48a 20 | TOPLINE -E2 57600 1-01-80 7:22a 21 | WATER -E2 57600 1-01-80 3:14a 22 | -------------------------------------------------------------------------------- /COGSMAP/data/TOPLINE.-E2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/TOPLINE.-E2 -------------------------------------------------------------------------------- /COGSMAP/data/WELLELEV.-E1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/WELLELEV.-E1 -------------------------------------------------------------------------------- /COGSMAP/data/WELLID.-E1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/data/WELLID.-E1 -------------------------------------------------------------------------------- /COGSMAP/program/ADD.EX: -------------------------------------------------------------------------------- 1 | OPERATION ADD 2 | 3 | The ADD operation creates an output overlay by adding the values of two or more 4 | input overlays on a point-by-point basis. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | AD[D] overlay T[O] overlay [T[O] overlay]... [/] 9 | [F[OR] overlay] 10 | 11 | where individual phrases are interpreted as follows. 12 | 13 | ADD overlay gives the title of one of the input overlays to be 14 | added. 15 | 16 | TO overlay gives the title of an additional input overlay to be 17 | added. 18 | 19 | FOR overlay gives the title of the output overlay. If omitted, the 20 | title X is assumed. 21 | 22 | / indicates that the rest of the instruction is to be 23 | read by skipping immediately to the next line of input 24 | text. 25 |  -------------------------------------------------------------------------------- /COGSMAP/program/ALTITUDE.-BP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/program/ALTITUDE.-BP -------------------------------------------------------------------------------- /COGSMAP/program/ASSIGN.EX: -------------------------------------------------------------------------------- 1 | OPERATION ASSIGN 2 | 3 | The ASSIGN operation creates an output overlay in which every point is set to 4 | the same, specified value. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | AS[SIGN] number [F[OR] overlay] 9 | 10 | where individual phrases are interpreted as follows. 11 | 12 | ASSIGN number gives the value to be assigned. 13 | 14 | FOR overlay gives the title of the output overlay. If omitted, the 15 | title X is assumed. 16 |  -------------------------------------------------------------------------------- /COGSMAP/program/AVERAGE.EX: -------------------------------------------------------------------------------- 1 | OPERATION AVERAGE 2 | 3 | The AVERAGE operation creates an output overlay by averaging the overlay 4 | weighted values of two or more input overlays on a point-by-point basis. 5 | Output values are computed by multiplying the values of each input overlay by a 6 | numerical weight assigned to that overlay, adding the resultant products for 7 | each individual point, then dividing each point`s total by the sum of all 8 | assigned weights 9 | 10 | The general form of the instruction for this operation is: 11 | 12 | AV[ERAGE] overlay [T[IMES] weight] P[LUS] overlay [/] 13 | [T[IMES] weight] [P[LUS] overlay [T[IMES] weight]]... [/] 14 | [F[OR] overlay] 15 | 16 | where individual phrases are interpreted as follows. 17 | 18 | AVERAGE overlay 19 | gives the title of one of the input overlays to be 20 | averaged. 21 | 22 | TIMES weight gives a number indicating the weighting factor to be 23 | associated with the most recently specified input 24 | overlay. If omitted, a weight of 1 is assumed. 25 | 26 | PLUS overlay gives the title of an additional input overlay to be 27 | averaged. 28 | 29 | FOR overlay gives the title of the output overlay. If omitted, the 30 | title X is assumed. 31 | 32 | / indicates that the rest of the instruction is to be read 33 | by skipping immediately to the next line of input text. 34 |  -------------------------------------------------------------------------------- /COGSMAP/program/BP.IN: -------------------------------------------------------------------------------- 1 | QUIET 2 | PRINT 3 | . Welcome to the Brown's Pond study area. The area encompasses 4 | . approximately 3,600 acres of typical New England countryside 5 | . in the small town of Petersham (pronounced "Peters - Ham"), 6 | . Massachusetts. It is located about 60 miles west of Boston. 7 | . The map of this area is square and oriented such that north 8 | . is toward its upper left corner. It is partitioned into 60 9 | . rows by 60 columns of points spaced every 200 feet. 10 | 11 | ECHO 12 | READ 13 |  -------------------------------------------------------------------------------- /COGSMAP/program/BUILDING.-BP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/program/BUILDING.-BP -------------------------------------------------------------------------------- /COGSMAP/program/COGSMAP.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/program/COGSMAP.EXE -------------------------------------------------------------------------------- /COGSMAP/program/COPY.EX: -------------------------------------------------------------------------------- 1 | OPERATION COPY 2 | 3 | The COPY operation creates an output overlay by reproducing the values, 4 | labels, and scale of an input overlay. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | COP[Y] overlay [F[OR] overlay] 9 | 10 | where individual phrases are interpreted as follows. 11 | 12 | COPY overlay gives the title of the input overlay to be copied. 13 | 14 | FOR overlay gives the title of the output overlay. If omitted, the 15 | title X is assumed. 16 |  -------------------------------------------------------------------------------- /COGSMAP/program/COVER.EX: -------------------------------------------------------------------------------- 1 | OPERATION COVER 2 | 3 | The COVER operation creates an output overlay by reproducing the values of one 4 | input overlay, then replacing or "covering" these values with the values of 5 | another input overlay on all points where this second overlay value is anything 6 | other than 0. If more than two input overlays are specified, each is used to 7 | cover whatever values have already been generated. All input overlays 8 | specified as processed in this manner according to the order in whch they 9 | appear in the COVER instruction. 10 | 11 | The general form of the instruction for this operation is: 12 | 13 | COV[ER] overlay W[ITH] overlay [W[ITH] overlay]... [/] 14 | [F[OR] overlay] 15 | 16 | where individual phrases are interpreted as follows. 17 | 18 | COVER overlay gives the title of the input overlay to be covered. 19 | 20 | WITH overlay gives the title of an additional input overlay to cover 21 | any that have already been specified. 22 | 23 | FOR overlay gives the title of the output overlay. If omitted, the 24 | title X is assumed. 25 | 26 | / indicates that the rest of the instruction is to be read 27 | by skipping immediately to the next line of input text. 28 |  -------------------------------------------------------------------------------- /COGSMAP/program/DESCRIBE.EX: -------------------------------------------------------------------------------- 1 | OPERATION DESCRIBE 2 | 3 | The DESCRIBE operation displays the legend of an input overlay. Each overlay's 4 | legend indicates its title, scale, and protection status, as well as the 5 | values, labels (if any), and numbers of points associated with its regions. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | DE[SCRIBE] overlay 10 | 11 | where: 12 | 13 | DESCRIBE overlay 14 | gives the title of the overlay to be described. 15 |  -------------------------------------------------------------------------------- /COGSMAP/program/DIFFEREN.EX: -------------------------------------------------------------------------------- 1 | OPERATION DIFFERENTIATE 2 | 3 | The DIFFERENTIATE operation creates an output overlay by computing slopes at 4 | points located on a three-dimensional surface. Slopes are ratios of vertical 5 | (i.e. perpendicular to the cartographic plane) to horizontal distance. The 6 | third dimensional position of each point on this surface is defined by its 7 | value on an input overlay. 8 | 9 | Output values are assigned as percentages rounded to the nearest integer. They 10 | may be computed to reflect either the steepest of the slopes defined by a point 11 | and its immediate neighbors or the vector sum of those slopes. 12 | 13 | The general form of the instruction for this operation is: 14 | 15 | DIF[FERENTIATE] overlay M[AXIMALLY] [F[OR] overlay] 16 | 17 | where individual phrases are interpreted as follows. 18 | 19 | DIFFERENTIATE overlay 20 | gives the title of the input overlay. The values on this 21 | overlay should relate to units of distance equivalent to 22 | those of its scale. Input values of less than 0 exclude 23 | points from slope calculations. 24 | 25 | MAXIMALLY indicates that steepest slopes are to be computed. If 26 | omitted, vector sums are used. 27 | 28 | FOR overlay gives the title of the output overlay. If omitted, the 29 | title X is assumed. 30 |  -------------------------------------------------------------------------------- /COGSMAP/program/DIVIDE.EX: -------------------------------------------------------------------------------- 1 | OPERATION DIVIDE 2 | 3 | The DIVIDE operation creates an output overlay by dividing the values of one 4 | input overlay by those of another input overlay on a point-by-point basis. If 5 | more than two input overlays are specified, each additional overlay is used to 6 | further divide whatever output overlay values have been computed so far. All 7 | input overlays specified are processed in this manner according to the order in 8 | which they appear in the DIVIDE instruction. 9 | 10 | On output, all fractional values are truncated. Division by 0 is permitted but 11 | is processed such that any positive value divided by 0 results in an output 12 | overlay value of -32767, and 0 divided by 0 results in a value of 0. 13 | 14 | The general form of the instruction for this operation is: 15 | 16 | DIV[IDE] overlay B[Y] overlay [B[Y] overlay]... [/] 17 | [F[OR] overlay] 18 | 19 | where individual phrases are interpreted as follows. 20 | 21 | DIVIDE overlay 22 | gives the title of the initial input overlay of values 23 | to be divided. 24 | 25 | BY overlay gives the title of an additional input overlay of values 26 | to be processed as divisors. 27 | 28 | FOR overlay gives the title of the output overlay. If omitted, the 29 | title X is assumed. 30 | 31 | / indicates that the rest of the instruction is to be read 32 | by skipping immediately to the next line of input text. 33 |  -------------------------------------------------------------------------------- /COGSMAP/program/DRAIN.EX: -------------------------------------------------------------------------------- 1 | OPERATION DRAIN 2 | 3 | The DRAIN operation creates an output overlay by computing runoff volume at 4 | points located on a three-dimensional surface. Runoff volume can be visualized 5 | as the amount of liquid that would ultimately flow into each point if known 6 | amounts of this liquid were to be released at specified surface locations. The 7 | third dimensional position of each point on this surface is defined by its 8 | value on one of two input overlays, while the volume initially drained from 9 | each point is defined by its value on the other. 10 | 11 | The general form of the instruction for this operation is: 12 | 13 | DR[AIN] overlay O[VER] overlay [F[OR] overlay] 14 | 15 | where individual phrases are interpreted as follows. 16 | 17 | DRAIN overlay gives the title of the input overlay whose values define 18 | initial volumes. 19 | 20 | OVER overlay gives the title of the input overlay whose values define 21 | the third-dimensional position of each point on the 22 | surface over volumes are to be drained. 23 | 24 | FOR overlay gives the title of the output overlay. If omitted, the 25 | title X is assumed. 26 |  -------------------------------------------------------------------------------- /COGSMAP/program/ECHO.EX: -------------------------------------------------------------------------------- 1 | OPERATION ECHO 2 | 3 | The ECHO operation sets a message handling indicator such that descriptive 4 | messages are issued during system operation. The QUIET operation has an 5 | opposite effect. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | EC[HO] 10 |  -------------------------------------------------------------------------------- /COGSMAP/program/EULER.EX: -------------------------------------------------------------------------------- 1 | OPERATION EULER 2 | 3 | The EULER operation creates an output overlay by computing the Euler number of 4 | each region on an input overlay. The Euler number (or topological genus) of an 5 | area is computed as the number of wholly enclosed "islands" (i.e. contiguous 6 | areas of foreign value) which lie within that area less one short of the number 7 | of islands which make up the area itself. An area shaped like a pair of 8 | figure-eights, for example, would have an Euler number of 3 due to its 4 9 | "holes" and 1 "extra island." 10 | The general form of the instruction for this operation is: 11 | 12 | EU[LER] overlay [F[OR] overlay] 13 | 14 | where individual phrases are interpreted as follows. 15 | 16 | EULER overlay gives the title of the input overlay. 17 | 18 | FOR overlay gives the title of the output overlay. If omitted, the 19 | title X is assumed. 20 |  -------------------------------------------------------------------------------- /COGSMAP/program/EXPLAIN.EX: -------------------------------------------------------------------------------- 1 | OPERATION EXPLAIN 2 | 3 | The EXPLAIN operation types out DOS text files of user information. A number of 4 | these files are included as part of the Map Analysis Package. Additional files 5 | can also be created in DOS with a text editing program. To be recognized by the 6 | EXPLAIN operation, they must have DOS file names with the extension ".EX" and 7 | be accessible from the current directory. 8 | 9 | The general form of the instruction for this operation is: 10 | 11 | EXPL[AIN] name 12 | 13 | where: 14 | 15 | EXPLAIN name gives the name (without extension) of the DOS file to be 16 | typed. If no name is specified, a list of all currently 17 | available explanation files is produced. 18 |  -------------------------------------------------------------------------------- /COGSMAP/program/EXPOSE.EX: -------------------------------------------------------------------------------- 1 | OPERATION EXPOSE 2 | 3 | The EXPOSE operation sets the file protection indicator associated with an 4 | input overlay to a protection status of "exposed" such that that overlay is no 5 | longer protected from being modified. The PROTECT operation has an opposite 6 | effect. 7 | 8 | The general form of the instruction for this operation is: 9 | 10 | EXPOS[E] overlay 11 | 12 | where: 13 | 14 | EXPOSE overlay 15 | gives the title of the overlay to be exposed. 16 |  -------------------------------------------------------------------------------- /COGSMAP/program/LABEL.EX: -------------------------------------------------------------------------------- 1 | OPERATION LABEL 2 | 3 | The LABEL operation reassigns user-specified labels to selected regions of an 4 | input overlay. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | LA[BEL] overlay 9 | [value space label] 10 | . 11 | . 12 | . 13 | 14 | where individual phrases are interpreted as follows. 15 | 16 | LABEL overlay gives the title of the input overlay. 17 | 18 | value space label 19 | gives a two-digit value (with no preceding characters or 20 | spaces) followed immediately by a blank space and a 21 | label of up to sixteen characters to be used to 22 | represent the region associated with that value. 23 | 24 | The LABEL operation will continue to expect value- 25 | space-label input on new lines of text until a value of 26 | less than 0 is encountered. 27 |  -------------------------------------------------------------------------------- /COGSMAP/program/LIST.EX: -------------------------------------------------------------------------------- 1 | OPERATION LIST 2 | 3 | The LIST operation produces a listing of the name, row and column dimensions, 4 | and standard scale of the map currently being accessed, as well as the title, 5 | protection status, and scale of its overlays. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | save LI[ST] 10 |  -------------------------------------------------------------------------------- /COGSMAP/program/MAXIMIZE.EX: -------------------------------------------------------------------------------- 1 | OPERATION MAXIMIZE 2 | 3 | The MAXIMIZE operation creates an output overlay by comparing the values of two 4 | or more input overlays on a point-by-point basis, then assigning to each point 5 | the largest of its input values. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | MAX[IMIZE] overlay V[ERSUS] overlay [V[ERSUS] overlay]... [/] 10 | [F[OR] overlay] 11 | 12 | where individual phrases are interpreted as follows. 13 | 14 | MAXIMIZE overlay 15 | gives the title of one of the input overlays to be 16 | maximized. 17 | 18 | VERSUS overlay 19 | gives the title of an additional input overlay to be 20 | maximized. 21 | 22 | FOR overlay gives the title of the output overlay. If omitted, the 23 | title X is assumed. 24 | 25 | / indicates that the rest of the instruction is to be read 26 | by skipping immediately to the next line of input text. 27 |  -------------------------------------------------------------------------------- /COGSMAP/program/MINIMIZE.EX: -------------------------------------------------------------------------------- 1 | OPERATION MINIMIZE 2 | 3 | The MINIMIZE operation creates an output overlay by comparing the values of two 4 | or more input overlays on a point-by-point basis, then assigning to each point 5 | the smallest of its input values. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | MIN[IMIZE] overlay V[ERSUS] overlay [V[ERSUS] overlay]... [/] 10 | [F[OR] overlay] 11 | 12 | where individual phrases are interpreted as follows. 13 | 14 | MINIMIZE overlay 15 | gives the title of one of the input overlays to be 16 | minimized. 17 | 18 | VERSUS overlay 19 | gives the title of an additional input overlay to be 20 | minimized. 21 | 22 | FOR overlay gives the title of the output overlay. If omitted, the 23 | title X is assumed. 24 | 25 | / indicates that the rest of the instruction is to be read 26 | by skipping immediately to the next line of input text. 27 |  -------------------------------------------------------------------------------- /COGSMAP/program/MULTIPLY.EX: -------------------------------------------------------------------------------- 1 | OPERATION MULTIPLY 2 | 3 | The MULTIPLY operation creates an output overlay by multiplying the values of 4 | two or more input overlays on a point-by-point basis. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | MU[LTIPLY] overlay B[Y] overlay [B[Y] overlay]... [/] 9 | [F[OR] overlay] 10 | 11 | where individual phrases are interpreted as follows. 12 | 13 | MULTIPLY overlay 14 | gives the title of one of the input overlays to be 15 | multiplied. 16 | 17 | BY overlay gives the title of an additional input overlay to be 18 | multiplied. 19 | 20 | FOR overlay gives the title of the output overlay. If omitted, the 21 | title X is assumed. 22 | 23 | / indicates that the rest of the instruction is to be read 24 | by skipping immediately to the next line of input text. 25 |  -------------------------------------------------------------------------------- /COGSMAP/program/NOTE.EX: -------------------------------------------------------------------------------- 1 | OPERATION NOTE 2 | 3 | The NOTE operation provides for the inclusion of non-instruction text within an 4 | instruction sequence. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | N[OTE] [text] 9 | 10 | where: 11 | 12 | NOTE text gives the text to be included. 13 |  -------------------------------------------------------------------------------- /COGSMAP/program/PROTECT.EX: -------------------------------------------------------------------------------- 1 | OPERATION PROTECT 2 | 3 | The PROTECT operation sets the file protection indicator associated with an 4 | input overlay to a protection status of "protected" such that that overlay is 5 | protected from being modified. The EXPOSE operation has an opposite effect. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | PROT[ECT] overlay 10 | 11 | where: 12 | 13 | PROTECT overlay 14 | gives the title of the overlay to be protected 15 |  -------------------------------------------------------------------------------- /COGSMAP/program/QUIET.EX: -------------------------------------------------------------------------------- 1 | OPERATION QUIET 2 | 3 | The QUIET operation sets a message handling indicator such that descriptive 4 | messages are suppressed during system operation. The ECHO operation has an 5 | opposite effect. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | Q[UIET] 10 |  -------------------------------------------------------------------------------- /COGSMAP/program/READ.EX: -------------------------------------------------------------------------------- 1 | OPERATION READ 2 | 3 | The READ operation provides for the input of instructions from previously 4 | created DOS text files rather than from the keyboard. Such files would normally 5 | be created in DOS with a text editing program. To be recognized by the READ 6 | operation, they must have DOS file names with the extension ".IN" and be 7 | accessible from the current directory. 8 | 9 | The general form of the instruction for this operation is: 10 | 11 | REA[D] name 12 | 13 | where: 14 | 15 | READ name gives the name (without extension) of the DOS file from 16 | which MAP instructions are to be read. If no name is 17 | specified, control returns to a point just after the 18 | previous READ, if any. 19 |  -------------------------------------------------------------------------------- /COGSMAP/program/RECODE.EX: -------------------------------------------------------------------------------- 1 | OPERATION RECODE 2 | 3 | The RECODE operation creates an output overlay by assigning new, specified 4 | values to the regions of an input overlay. Regions for which no new value is 5 | specified retain their input values. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | RECO[DE] overlay [F[OR] overlay] [/] 10 | [A[SSIGNING] value [T[O] value]... [TH[ROUGH] value]]... 11 | 12 | where individual phrases are interpreted as follows. 13 | 14 | RECODE overlay 15 | gives the title of the input overlay; 16 | 17 | FOR overlay gives the title of the output overlay. If omitted, the 18 | title X is assumed. 19 | 20 | ASSIGNING value 21 | gives an output value to be assigned. 22 | 23 | TO value gives the input value of the region to which the most 24 | recently specified output value is to be assigned. 25 | 26 | THROUGH value gives an input value which effectively causes the most 27 | recently specified TO value phrase to be repeated for 28 | all values greater than that value and less than or 29 | equal to this one. 30 | 31 | / indicates that the rest of the instruction is to be read 32 | by skipping immediately to the next line of input text. 33 |  -------------------------------------------------------------------------------- /COGSMAP/program/ROADS.-BP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/program/ROADS.-BP -------------------------------------------------------------------------------- /COGSMAP/program/SCALE.EX: -------------------------------------------------------------------------------- 1 | OPERATION SCALE 2 | 3 | The SCALE operation resets the scale of an input overlay. 4 | 5 | The general form of the instruction for this operation is: 6 | 7 | SCA[LE] overlay A[T] number 8 | 9 | where individual phrases are interpreted as follows. 10 | 11 | SCALE overlay gives the title of the overlay whose scale is to be 12 | reset 13 | 14 | AT number gives a number indicating the scale to be assigned. 15 |  -------------------------------------------------------------------------------- /COGSMAP/program/SIZE.EX: -------------------------------------------------------------------------------- 1 | OPERATION SIZE 2 | 3 | The SIZE operation creates an output overlay by assigning a new value to each 4 | region of an input overlay indicating the number of points in that region. 5 | 6 | The general form of the instruction for this operation is: 7 | 8 | SI[ZE] overlay [F[OR] overlay] 9 | 10 | where individual phrases are interpreted as follows. 11 | 12 | SIZE overlay gives the title of the input overlay. 13 | 14 | FOR overlay gives the title of the output overlay. If omitted, the 15 | title X is assumed. 16 |  -------------------------------------------------------------------------------- /COGSMAP/program/SLICE.EX: -------------------------------------------------------------------------------- 1 | OPERATION SLICE 2 | 3 | The SLICE operation creates an output overlay by dividing a specified range of 4 | values on an input overlay into equal intervals, then replacing each input 5 | value with a new value indicating the ordinal position of its interval. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | SL[ICE] overlay [I[NTO] intervals] [FR[OM] value] 10 | [TH[ROUGH] value] [F[OR] overlay] 11 | 12 | where all phrases are to appear on a single line of text and where individual 13 | phrases are interpreted as follows. 14 | 15 | SLICE overlay gives the title of the input overlay. 16 | 17 | INTO intervals 18 | gives a number indicating maximum output value to be 19 | generated. If omitted or specified as less than 1 or 20 | greater than 1998, a value of 4 is assumed. 21 | 22 | FROM value gives a number indicating the lower limit of the range 23 | of input values to be sliced into intervals. If omitted, 24 | the lowest input value encountered is assumed. 25 | 26 | TO value gives a number indicating the upper limit of the range 27 | of input values to be sliced into intervals. If omitted, 28 | the highest input value encountered is assumed. 29 | 30 | FOR overlay gives the title of the output overlay. If omitted, the 31 | title X is assumed. 32 |  -------------------------------------------------------------------------------- /COGSMAP/program/SORT.EX: -------------------------------------------------------------------------------- 1 | OPERATION SORT 2 | 3 | The SORT operation creates an output overlay by replacing the lowest value on 4 | an input overlay with an output value of 1, the second lowest with a value of 5 | 2, the third with a 3, and so on. 6 | 7 | The general form of the instruction for this operation is: 8 | 9 | SO[RT] overlay [F[OR] overlay] 10 | 11 | where individual phrases are interpreted as follows. 12 | 13 | SORT overlay gives the title of the input overlay. 14 | 15 | FOR overlay gives the title of the output overlay. If omitted, the 16 | title X is assumed. 17 |  -------------------------------------------------------------------------------- /COGSMAP/program/STOP.EX: -------------------------------------------------------------------------------- 1 | OPERATION STOP 2 | 3 | The STOP operation terminates execution of the Map Analysis Package. 4 | 5 | The general form of the instruction for this operation is: 6 | 7 | STO[P] 8 |  -------------------------------------------------------------------------------- /COGSMAP/program/SUBTRACT.EX: -------------------------------------------------------------------------------- 1 | OPERATION SUBTRACT 2 | 3 | The SUBTRACT operation creates an output overlay by subtracting the values of 4 | one input overlay from those of another input overlay on a point-by-point 5 | basis. If more than two input overlays are specified, the values of each 6 | additional overlay are subtracted from whatever output overlay values have been 7 | computed so far. All input overlays specified are processed in this manner 8 | according to the order in which they appear in the SUBTRACT instruction. 9 | 10 | The general form of the instruction for this operation is: 11 | 12 | SUB[TRACT] overlay F[ROM] overlay [F[ROM] overlay]... [/] 13 | [F[OR] overlay] 14 | 15 | where individual phrases are interpreted as follows. 16 | 17 | SUBTRACT overlay 18 | gives the title of the initial input overlay of values 19 | from which others are to be subtracted. 20 | 21 | FROM overlay gives the title of an additional input overlay of values 22 | to be subtracted. 23 | 24 | FOR overlay gives the title of the output overlay. If omitted, the 25 | title X is assumed. 26 | 27 | / indicates that the rest of the instruction is to be read 28 | by skipping immediately to the next line of input text. 29 |  -------------------------------------------------------------------------------- /COGSMAP/program/SURVEY.EX: -------------------------------------------------------------------------------- 1 | OPERATION SURVEY 2 | 3 | The SURVEY operation creates an output overlay by calculating the convexity of 4 | each region on an input overlay. The convexity of a region is the ratio of the 5 | square root of the region's area to the length of its perimeter. Convexity is 6 | greatest for circular forms and decreases as shapes become more complex. 7 | 8 | On output, values ranging from a maximum of 100 to a minimum approaching 0 are 9 | assigned to each point according to the convexity of its region. 10 | 11 | The general form of the instruction for this operation is: 12 | 13 | SUR[VEY] overlay [F[OR] overlay] 14 | 15 | where individual phrases are interpreted as follows. 16 | 17 | SURVEY overlay gives the title of the input overlay. 18 | 19 | FOR overlay gives the title of the output overlay. If omitted, the 20 | title X is assumed. 21 |  -------------------------------------------------------------------------------- /COGSMAP/program/TREES.-BP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/program/TREES.-BP -------------------------------------------------------------------------------- /COGSMAP/program/WATER.-BP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/COGSMAP/program/WATER.-BP -------------------------------------------------------------------------------- /COGSMAP/program/WRITE.EX: -------------------------------------------------------------------------------- 1 | OPERATION WRITE 2 | 3 | The WRITE operation provides for the direction of text output to a specified 4 | DOS text file rather than to the terminal. This file will be located in the 5 | current directory under a specified file name with ".IN" as its file neame 6 | extension. 7 | 8 | The general form of the instruction for this operation is: 9 | 10 | W[RITE] name 11 | 12 | where: 13 | 14 | WRITE name gives the name (without extension) of the DOS file to 15 | which subsequent text output is to be written. If no 16 | name is specified, subsequent text output is directed to 17 | the terminal. 18 |  -------------------------------------------------------------------------------- /COGSMAP/program/ZAP.EX: -------------------------------------------------------------------------------- 1 | OPERATION ZAP 2 | 3 | The ZAP operation deletes a specified overlay. 4 | 5 | The general form of the instruction for this operation is: 6 | 7 | ZAP overlay 8 | 9 | where: 10 | 11 | ZAP overlay gives the title of the overlay to be zapped. 12 |  -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/ACECS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/ACECS -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/BACKSCRL.COM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/BACKSCRL.COM -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/BORDER: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/BORDER -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COAL: -------------------------------------------------------------------------------- 1 | BEDS 2 | NUMBER OF COAL BEDS 3 | 1 4 | (13X,I2) 5 | 2 6 |  -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COAL.DT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COAL.DT -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COAL.FA: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COAL.FA -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COAL.IP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COAL.IP -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COAL.SL: -------------------------------------------------------------------------------- 1 |                     -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COALHOLE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COALHOLE -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COALHOLE.AT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COALHOLE.AT -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COALSAMP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COALSAMP -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/COALSAMP.AT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/COALSAMP.AT -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/DAVIS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/DAVIS -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/GEOLOG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/GEOLOG -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/INTRPROC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/INTRPROC -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/LANDLINE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/LANDLINE -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/LM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/LM -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/MUDDY: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/MUDDY -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/MUDDY.AT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/MUDDY.AT -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/NURESAMP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/NURESAMP -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/OGLEASES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/OGLEASES -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/OWNMINRL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/OWNMINRL -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/OWNSURF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/OWNSURF -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/PLSCEED: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/PLSCEED -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/PRLAS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/PRLAS -------------------------------------------------------------------------------- /PC-MOSS/data/mosscoal/ROADS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/data/mosscoal/ROADS -------------------------------------------------------------------------------- /PC-MOSS/manual/AppendixC-MOSS-Line-Styles-and-Font-Types.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/manual/AppendixC-MOSS-Line-Styles-and-Font-Types.pdf -------------------------------------------------------------------------------- /PC-MOSS/manual/MOSS User's Manual/mossusersmanual00unse.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/manual/MOSS User's Manual/mossusersmanual00unse.pdf -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/ACTIVE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/ACTIVE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/ANNOTATE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/ANNOTATE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/AREA.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/AREA.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/ATTRIBUT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/ATTRIBUT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/AUDIT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/AUDIT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/AUTOLABE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/AUTOLABE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/BSEARCH.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/BSEARCH.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/BUFFER.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/BUFFER.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/COMPUTE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/COMPUTE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/CONTOUR.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/CONTOUR.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/DATABTES.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/DATABTES.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/DELETE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/DELETE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/DEVICE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/DEVICE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/DISTANCE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/DISTANCE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/EXPORT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/EXPORT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/FREE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/FREE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/FREQUENC.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/FREQUENC.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/GENERATE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/GENERATE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/GIS.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/GIS.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/GRID.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/GRID.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/IMPORT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/IMPORT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/INTERSEC.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/INTERSEC.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/INTRPROC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/INTRPROC -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/LEGEND.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/LEGEND.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/LENGTH.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/LENGTH.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/LIST.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/LIST.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/LPOVER.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/LPOVER.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/MERGE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/MERGE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/NUMBER.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/NUMBER.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/OPEN.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/OPEN.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/PENPLOT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/PENPLOT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/PERIMETE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/PERIMETE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/PLOT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/PLOT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/PROFILE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/PROFILE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/PROXIMIT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/PROXIMIT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/QUERY.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/QUERY.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/REPORT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/REPORT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/RESET.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/RESET.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/SAVE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/SAVE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/SELECT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/SELECT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/SHADE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/SHADE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/SIZE.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/SIZE.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/STATISTI.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/STATISTI.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/STATUS.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/STATUS.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/SUB2AT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/SUB2AT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/SUBEDIT.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/SUBEDIT.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/UNION.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/UNION.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/VARIOGRA.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/VARIOGRA.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/WINDOW.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/WINDOW.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/XYSUBJEC.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/XYSUBJEC.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/EXE/ZOOM.EXE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/EXE/ZOOM.EXE -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/HELP/MHBYE: -------------------------------------------------------------------------------- 1 | BYE BYE 2 | 3 | 4 | 5 | The BYE command is summarized as follows: 6 | 7 | BYE is a program control command which will terminate the session. 8 | After the command is issued the user is returned to the computer 9 | operating system. The user can then initiate other processes. 10 | 11 | 12 | The BYE command is specified as follows: 13 | 14 | BYE 15 | 16 | 17 | There are no individual parameters associated with the BYE command. 18 | 19 | 20 | The following is an example of use of the BYE command: 21 | 22 | ENTER COMMAND 23 | ? BYE 24 | 25 | USER JOHN LOGGED OFF FROM MOSS 26 | 27 | THANKYOU FOR USING MOSS 28 | 29 | STOP 30 | 31 | ) 32 | 33 | 34 | The limitations of the BYE command are as follows: 35 | 36 | -- The active list, current master file name, baud rate, and window 37 | will be lost unless RESTART is given as the user name at the be- 38 | ginning of the next session (see also Appendix A). 39 | -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/HELP/MHERASE: -------------------------------------------------------------------------------- 1 | ERASE ERASE 2 | 3 | 4 | 5 | The ERASE command is summarized as follows: 6 | 7 | ERASE is a data display command that clears the display screen and 8 | sets the cursor in the upper left-hand corner of the screen. This 9 | command should be used liberally if the user wishes to keep the dis- 10 | play screen readable. 11 | 12 | 13 | The ERASE command is specified as follows: 14 | 15 | ERASE 16 | 17 | 18 | There are no individual parameters associated with the ERASE command. 19 | 20 | 21 | The following is an example of use of the ERASE command: 22 | 23 | ENTER COMMAND 24 | ? ERASE 25 | 26 | 27 | The limitations of the ERASE command are as follows: 28 | 29 | -- If a baud rate other than 300 is being used, execution of this 30 | command will be slow. 31 | -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/HELP/MHFREE: -------------------------------------------------------------------------------- 1 | FREE FREE 2 | 3 | 4 | 5 | The FREE command is summarized as follows: 6 | 7 | FREE is a data manipulation command that deactivates any ID referenced 8 | in the active map table. 9 | 10 | 11 | The FREE command is specified as follows: 12 | 13 | FREE (active ID's) 14 | 15 | 16 | The individual parameters of the FREE command are described below: 17 | 18 | (active ID'S) are the ID numbers of the maps to be deactivated, i.e., 19 | deleted from the active map table. If the entire active map table is 20 | to be deactivated, the user may enter ALL instead of the active ID 21 | numbers. Active ID's can be entered in any order and the remaining 22 | active maps will be renumbered accordingly. 23 | 24 | 25 | The following is an example of use of the FREE command: 26 | 27 | ENTER COMMAND 28 | ? FREE 29 | ENTER ALL OR ACTIVE MAP ID'S 30 | ? 4 2 31 | 32 | 33 | The limitations of the FREE command are as follows: 34 | 35 | -- Cannot free inclusive strings of ID's, for example "2 6" will 36 | only free ID 2 and ID 6, not ID 2 through ID 6. 37 | -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/HELP/MHINTER: -------------------------------------------------------------------------------- 1 | INTERLINE INTERLINE 2 | 3 | Interline is a line intersector command which will 'cut' the major map 4 | based upon intersections with the minor map. The resultant map will be 5 | a series of line segments which will not cross any item in the minor 6 | map. 7 | 8 | INTerline ID1 ID2 NEW_MAP_NAME (subject merge options)* 9 | 10 | ID1 is the major map to 'cut' into segments 11 | 12 | ID2 is the minor map to 'cut' ID1 13 | 14 | NEW_MAP_NAME is the resultant map's name 15 | 16 | (subject merge options)* are options required to merge subjects of the 17 | two active IDs or to build a new subject from one or both subjects 18 | from the two active IDs 19 | 20 | Example: 21 | 22 | INTerline 1 2 MAPOUT 23 | Do you want to specify SUBJECT MERGE parameter [CR=NO] 24 | [NO = 14 chars from 1st and 16 chars from 2nd] 25 | [YES= input # chars from each subject] 26 | [REV= reverse order of subjects ] : NO 27 | 28 | INTERSECTED FEATURES = 128 29 | 30 | Limitations: 31 | 32 | - Active IDs must exist 33 | 34 | - Only works with line data types 35 | 36 | - 256 intersections for each item in major ID 37 | -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/HELP/MHRESET: -------------------------------------------------------------------------------- 1 | RESET RESET 2 | 3 | 4 | 5 | The RESET command is summarized as follows: 6 | 7 | RESET is a data display command that allows the user to return the 8 | data display to the original window specified by using the WINDOW 9 | command. The RESET command can be executed after performing one or 10 | more ZOOM commands and returns to the original window regardless of 11 | how many times the window has been changed by ZOOM. 12 | 13 | 14 | The RESET command is specified as follows: 15 | 16 | RESET 17 | 18 | 19 | There are no individual parameters associated with the RESET command. 20 | 21 | 22 | The following is an example of use of the RESET command: 23 | 24 | ENTER COMMAND 25 | ? RESET 26 | 27 | 28 | The limitations of the RESET command are as follows: 29 | 30 | -- None found to date. 31 | -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/HELP/PCMOSS.DOC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/HELP/PCMOSS.DOC -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/ACTIVE.PRG: -------------------------------------------------------------------------------- 1 | 000 ACTIVE 2 | 000 ANNOTATE 3 | 000 AREA 4 | 000 ATTDESCRIBE 5 | 000 ATTRIBUTE 6 | 000 AUDIT 7 | 000 AUTOLABEL 8 | 000 BSEARCH 9 | 000 BUFFER 10 | 000 COMPUTE 11 | 000 CONTOUR 12 | 000 DATABTEST 13 | 000 DELETE 14 | 000 DEVICE 15 | 000 DISTANCE 16 | 000 ERASE 17 | 000 EXPORT 18 | 000 FREE 19 | 000 FREQUENCY 20 | 000 GENERATE 21 | 000 GRID 22 | 000 HELP 23 | 000 IMPORT 24 | 000 INTERSECT 25 | 000 LEGEND 26 | 000 LENGTH 27 | 000 LIST 28 | 000 LPOVER 29 | 000 MERGE 30 | 000 NUMBER 31 | 000 OPEN 32 | 000 PERIMETER 33 | 000 PENPLOT 34 | 000 PLOT 35 | 000 PROFILE 36 | 000 PROXIMITY 37 | 000 PROXITERATE 38 | 000 QUERY 39 | 000 REPORT 40 | 000 RESET 41 | 000 SAVE 42 | 000 SELECT 43 | 000 SHADE 44 | 000 SIZE 45 | 000 STATISTICS 46 | 000 STATUS 47 | 000 SUB2AT 48 | 000 SUBEDIT 49 | 000 SYSTEM 50 | 000 UNION 51 | 000 VARIOGRAM 52 | 000 WINDOW 53 | 000 XYSUBJECT 54 | 000 ZOOM 55 |  -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/BLMLINE.DT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/INTRFACE/BLMLINE.DT -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/BLMSYM.DT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/INTRFACE/BLMSYM.DT -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/FONTS.DT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OSGeo/MOSS/e623f02f66279d47953294684f7e464a2116ee5b/PC-MOSS/program/GIS/INTRFACE/FONTS.DT -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/GIS.MNU: -------------------------------------------------------------------------------- 1 | 1.00WGIS 2 | 1.00PMOSS-PC - Vector Map Analysis 3 |  -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/GLOBAL.MNU: -------------------------------------------------------------------------------- 1 | 1.0WGIS X 2 | -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/NULL.MNU: -------------------------------------------------------------------------------- 1 | 00.00NBye 2 | 00.00NHelp 3 | 00.00NMenu 4 |  -------------------------------------------------------------------------------- /PC-MOSS/program/GIS/INTRFACE/UTILITY.MNU: -------------------------------------------------------------------------------- 1 | 1.00WUtility - Gives access to file manipulation commands 2 | 86.08AAttribute - Multiple attribute support. 3 | 86.08AAttdescribe - Build multiple attribute batch input file. 4 | 86.08ADatabtest - Map names support. 5 | 86.08ASubedit - Map subject editor. 6 | 86.08ASub2at - Subject to multiple attribute input. 7 | 88.01AXysubject - Convert an ASCII (text) data file into an IMPORT file. 8 | -------------------------------------------------------------------------------- /PC-MOSS/src/ABXDRW.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE abxdrw(xstart,xlen,ystart,ylen) 2 | C 3 | C DRAW A BOX IN THE SCREEN OF ORIGIN (XSTART,YSTART) 4 | C A LENGTH XLEN IN X AND LENGTH YLEN IN Y 5 | C 6 | C THIS ROUTINE IS FOR PLOT10 COMPATIBLE TERMINALS 7 | C 8 | CALL movea(xstart,ystart) 9 | CALL drawa(xstart+xlen,ystart) 10 | CALL drawa(xstart+xlen,ystart+ylen) 11 | CALL drawa(xstart,ystart+ylen) 12 | CALL drawa(xstart,ystart) 13 | C 14 | C CALL POSTF 15 | C 16 | RETURN 17 | END 18 | -------------------------------------------------------------------------------- /PC-MOSS/src/ADDDIR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE adddir(icom,mapout) 2 | C**************************************************************************** 3 | C ROUTINE ADDS THE DIRECTORY IN FRONT OF A MAP NAME. 4 | C 5 | C PARAMETER: MAPIN - IN - MAP NAME TO BE ADDED TO 6 | C MAPOUT - OUT - MAP NAME WITH PATH ADDED 7 | C**************************************************************************** 8 | C 9 | $Include:'DNAMES.inc' 10 | INTEGER icom(25) , mapin(25) , mapout(25) , maphold(25) 11 | C 12 | index = 1 13 | ipack = 0 14 | CALL clear(mapout,25) 15 | CALL clear(mapin,25) 16 | DO il = 1 , 10 17 | mapin(il) = icom(il) 18 | ENDDO 19 | IF ( mapin(1).LT.0 ) THEN 20 | IF ( iabs(mapin(1)).GT.256 ) THEN 21 | CALL unpack(mapin,24) 22 | ipack = 1 23 | ENDIF 24 | C 25 | DO index = 1 , lendir 26 | mapout(index) = mast(index) 27 | ENDDO 28 | ENDIF 29 | C 30 | DO i = 1 , 12 31 | IF ( mapin(i).EQ.0 ) GOTO 100 32 | mapout(index) = iabs(mapin(i)) 33 | index = index + 1 34 | ENDDO 35 | 100 CONTINUE 36 | IF ( ipack.GT.0 ) THEN 37 | CALL packc(mapout,maphold,25) 38 | CALL clear(mapout,25) 39 | DO il = 1 , 25 40 | mapout(il) = maphold(il) 41 | ENDDO 42 | ENDIF 43 | C write(*,'(1x,25a1)')(mapout(ll),ll=1,25) 44 | RETURN 45 | END 46 | -------------------------------------------------------------------------------- /PC-MOSS/src/ADSDEL.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE adsdel(ier,id,index,npts) 2 | C ************************************************ 3 | C 4 | C S U B R O U T I N E A D S D E L 5 | C 6 | C FUNCTION - DELETE AN ACTIVE DATA SET FROM THE 7 | C A&D STRUCTURE TABLE 8 | C 9 | C INPUT PARAMETERS: 10 | C 11 | C IER = ERROR RETURN 12 | C ID = ID OF DATA SET TO DELETE 13 | C INDEX = POINTER TO FIRST ENTRY IN POINTER 14 | C TABLE (RETURNED) 15 | C NPTS = NUMBER OF ENTRIES IN POINTER TABLE 16 | C TO DELETE (RETURNED) 17 | C 18 | C 19 | C ************************************************** 20 | C 21 | $Include:'WHMAP.inc' 22 | C 23 | C 24 | npts = istrct(id+1) 25 | C 26 | C DECREMENT NUMBER OF IDS COUNTER BY ONE 27 | C 28 | nstrct = nstrct - 7 29 | C 30 | C IS THIS THE LAST ENTRY IN THE STRUCTURE TABLE ? 31 | C 32 | IF ( id.NE.nstrct+1 ) THEN 33 | C 34 | C OTHER THAN LAST. COMPRESS STRUCTURE TABLE 35 | C 36 | jinc = id + 7 37 | istart = id 38 | istop = nstrct 39 | C 40 | DO i = istart , istop 41 | istrct(i) = istrct(jinc) 42 | jinc = jinc + 1 43 | ENDDO 44 | ENDIF 45 | C 46 | RETURN 47 | END 48 | -------------------------------------------------------------------------------- /PC-MOSS/src/AMOVE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE amove(nwords,from,to) 2 | C 3 | C**************************************************************** 4 | C 5 | C TITLE AMOVE 6 | C 7 | C CALL FORMAT 8 | C 9 | C CALL AMOVE(NWORDS,FROM,TO) 10 | C 11 | C***************************************************************** 12 | C 13 | INTEGER*2 nwords 14 | INTEGER*2 from(nwords) , to(nwords) 15 | C 16 | DO l = 1 , nwords 17 | to(l) = from(l) 18 | ENDDO 19 | RETURN 20 | END 21 | -------------------------------------------------------------------------------- /PC-MOSS/src/APGET.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE apget(index,istart,istop,ntot) 2 | C 3 | C ******************************************************* 4 | C 5 | C S U B R O U T I N E A P G E T 6 | C 7 | C FUNCTION - GET THE POINTER TO THE ACTIVE MAP DATA 8 | C SET POINTER TABLE (MAPPTS) FROM THE 9 | C ACTIVE MAP STRUCTURE TABLE (ISTRCT) 10 | C 11 | C INPUT PARAMETERS: 12 | C 13 | C INDEX = LOCATION IN ISTRCT OF ACTIVE DATA SET 14 | C OF INTEREST. 15 | C ISTART = RETURNED LOCATION IN POINTER TABLE OF 16 | C FIRST ITEM OF ACTIVE MAP OF INTEREST 17 | C ISTOP = LOCATION OF LAST ITEM OF INTEREST (RETURNED) 18 | C NTOT = RETURNED NUMBER OF ITEMS 19 | C 20 | C ROUTINES 21 | C CALLED: NONE. 22 | C ********************************************************* 23 | C 24 | COMMON /whmap / istrct(300) , nstrct 25 | C 26 | istart = istrct(index) 27 | ntot = istrct(index+1) 28 | istop = istart + ntot - 1 29 | C 30 | RETURN 31 | END 32 | -------------------------------------------------------------------------------- /PC-MOSS/src/AREA.FOR: -------------------------------------------------------------------------------- 1 | C ***************************************************************************** 2 | C 3 | C P R O G R A M A R E A 4 | C FUNCTION: 5 | C THIS ROUTINE RE-STATE MOSS RUNTIME PARAMETERS AND EXECUTE THE 6 | C AREA, PERIMETER, LENGTH, AND FREQUENCY COMMANDS 7 | C ***************************************************************************** 8 | C 9 | PROGRAM area 10 | $Include:'dbchan.inc' 11 | $Include:'mfast.inc' 12 | COMMON /fls / iunit , ifile(5) 13 | $Include:'strng.inc' 14 | C 15 | C FIRST READ IN THE COMMON BLOCKS 16 | C 17 | CALL initl(ier) 18 | IF ( ier.NE.0 ) STOP 19 | C 20 | C OPEN POINTER FILE 21 | C 22 | CALL openf(icdcfa,idesfa,1,512,2,ier) 23 | IF ( ier.NE.0 ) THEN 24 | C 25 | C ERROR RETURNS 26 | C 27 | WRITE (*,*) ' Could not properly open file' 28 | ELSE 29 | C 30 | C SET WINDOW 31 | C 32 | CALL setwnd 33 | C 34 | C CALL TABLE GENERATION ROUTINE 35 | C 36 | icard(80) = -1 37 | CALL tabara(lines,icard(80)) 38 | ENDIF 39 | C 40 | lines = lines + 2 41 | CLOSE (icdcfa,IOSTAT=ier) 42 | END 43 | -------------------------------------------------------------------------------- /PC-MOSS/src/ASK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE ask 2 | C 3 | C gives or not gives a prompt for action 4 | C 5 | $Include:'Global.inc' 6 | C 7 | C 8 | C ********** START ********** 9 | 10 | C * Write menu to screen unless user has requested menu not be displayed. 11 | 12 | IF ( help ) THEN 13 | WRITE (usrout,*) 14 | WRITE (usrout,99001) 15 | ELSEIF ( display ) THEN 16 | WRITE (usrout,*) 17 | WRITE (usrout,99002) 18 | ELSE 19 | WRITE (usrout,*) 20 | WRITE (usrout,99003) whoiam(1:cstart) 21 | ENDIF 22 | 23 | 99001 FORMAT (/,' For which command do you want HELP ? ',\) 24 | 99002 FORMAT (/,' Enter Command: ',\) 25 | 99003 FORMAT (1X,A,'-->',\) 26 | RETURN 27 | END 28 | -------------------------------------------------------------------------------- /PC-MOSS/src/ATTACH.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE attach(ki,ipt,iout,unit14,unit20,unit21) 2 | C*** THIS SUBROUTINE OPENS THE INPUT AND OUTPUT FILES FOR 3 | C*** PROGRAM SS2DGAMH. 4 | C*** THIS VERSION WRITTEN BY G.W.HEINE BLM, DENVER MAY 1985 5 | C*** TO REPLACE ORIGINAL STATPAC VERSION 6 | C*** ALL FILE NAMES ARE CONSTANT RATHER THAN USER INPUT 7 | C*** 8 | CHARACTER*32 unit14 , unit20 , unit21 9 | unit14 = 'TEMPKRIG.UPR' 10 | unit20 = 'TEMPVARG.FVC' 11 | unit21 = 'TEMPVARG.FGA' 12 | c OPEN (KI,FILE=UNIT14,STATUS='OLD',FORM='UNFORMATTED') 13 | C OPEN (IPT,FILE=UNIT20,STATUS='OLD',FORM='UNFORMATTED') 14 | OPEN (iout,STATUS='scratch',FORM='FORMATTED') 15 | RETURN 16 | END 17 | -------------------------------------------------------------------------------- /PC-MOSS/src/AVWIND.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE avwind(xorgin,xlen,yorgin,ylen) 2 | C 3 | C FUNCTION: SET GRAPHICS WINDOW IN WORLD COORDINATE SYSTEM 4 | C THIS VERSION FOR TEKTRONIX PLOT10 COMPATIBLE TERMINALS 5 | C 6 | CALL vwindo(xorgin,xlen,yorgin,ylen) 7 | CALL scrset(xorgin,xlen,yorgin,ylen) 8 | C 9 | RETURN 10 | END 11 | -------------------------------------------------------------------------------- /PC-MOSS/src/B2SORT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE b2sort(var1,var2,ipoint,n) 2 | C*** CODED BY W. D. GRUNDY MAY 1984 3 | C*** 4 | C*** THIS SUBROUTINE IS REQUIRED BY PROGRAM STPSORT. 5 | C*** IT SORTS THE MINOR SORT KEY AFTER THE SORT ON 6 | C*** THE MAJOR KEY HAS BEEN FINISHED. 7 | C*** THIS IS A BUBBLE SORT AND IS STABLE. 8 | C*** 9 | DIMENSION var1(1) , var2(1) , ipoint(1) 10 | DO i = 2 , n 11 | DO j = 2 , i 12 | jj = i - j + 1 13 | IF ( var1(ipoint(jj+1)).NE.var1(ipoint(jj)) ) GOTO 100 14 | IF ( var2(ipoint(jj+1)).GE.var2(ipoint(jj)) ) GOTO 100 15 | itemp = ipoint(jj) 16 | ipoint(jj) = ipoint(jj+1) 17 | ipoint(jj+1) = itemp 18 | ENDDO 19 | 100 ENDDO 20 | RETURN 21 | END 22 | -------------------------------------------------------------------------------- /PC-MOSS/src/BANNER.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine Banner: This subroutine gives the program banner with any 2 | C identifying characteristics deemed appropriate by the programmer who 3 | C creates/edits/modifies this subroutine. We take requests. 4 | 5 | SUBROUTINE banner 6 | 7 | $Include:'GLOBAL.INC' 8 | 9 | 10 | C# Get initial date/time. 11 | C **** Currently Data General only 12 | C Call GetDte ( ITime, IDate, Error ) 13 | C **** With other systems 14 | error = .TRUE. 15 | 16 | WRITE (usrout,99001) 17 | 99001 FORMAT (' ') 18 | 19 | IF ( display ) THEN 20 | C# Identify program. 21 | whoiam = level(lvlnum) 22 | WRITE (usrout,99002) whoiam 23 | 99002 FORMAT ('>>>>> ',A,) 24 | ENDIF 25 | 26 | C# Identify current program version. 27 | IF ( display ) THEN 28 | IF ( vrsion.GT.0.0 ) THEN 29 | WRITE (usrout,99003) vrsion 30 | ENDIF 31 | 99003 FORMAT (' BLM/DSC/DOI - CGTL/CFNR/CSU Version ',F5.2) 32 | ENDIF 33 | 34 | C# Make sure date/time were available before printing. 35 | IF ( error ) THEN 36 | WRITE (usrout,99004) 37 | error = .FALSE. 38 | ELSE 39 | WRITE (usrout,99005) itime , idate(2) , idate(3) , idate(1) 40 | ENDIF 41 | 99004 FORMAT (' ') 42 | 99005 FORMAT (' - ',2(I2.2,':'),I2.2,' ',2(I2.2,'/'),I4.4,/) 43 | 44 | 45 | RETURN 46 | END 47 | -------------------------------------------------------------------------------- /PC-MOSS/src/BARC.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE barc(nxt,npts,ang1,ang2,rad,xcen,ycen) 2 | $Include:'rspnts.inc' 3 | C dimension r(1),s(1) 4 | C 5 | C FUNCTION: DRAW AN ARC OF RADIUS RAD BETWEEN ANG1 AND ANG2 DEFINED BY 6 | C NPTS POINTS CENTERED AT XCEN,YCEN. 7 | IF ( ang1.EQ.ang2 ) ang1 = ang2 + 360. 8 | C 9 | C 10 | IF ( ang1.GE.0.0 ) THEN 11 | ang1 = ang1 - 360. 12 | ENDIF 13 | np = npts + 1 14 | DO k = 1 , npts 15 | ang = ang1 + (ang2-ang1)*float(k-1)/npts 16 | th = ang*.0174533 17 | np = np - 1 18 | c ipos = position in r and s of where to place arc point 19 | ipos = nxt + np 20 | rt = rad*cos(th) + xcen 21 | st = rad*sin(th) + ycen 22 | CALL spoints('R ',r,rt,ipos,2) 23 | CALL spoints('S ',s,st,ipos,2) 24 | ENDDO 25 | C 26 | RETURN 27 | END 28 | -------------------------------------------------------------------------------- /PC-MOSS/src/BLFILL.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE blfill(icard,k) 2 | DIMENSION icard(k) 3 | C 4 | C FUNCTION: CONVERT ALL 0 VALUES TO BLANKS 5 | C 6 | C PROGRAMMED BY CARL REED, AUTOMETRIC INC., MAY 1983 7 | C 8 | DO i = 1 , k 9 | IF ( icard(i).LE.0 ) icard(i) = 32 10 | C 11 | ENDDO 12 | C 13 | RETURN 14 | END 15 | -------------------------------------------------------------------------------- /PC-MOSS/src/BSORT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE bsort(npt,xx,isim) 2 | INTEGER xx(1) 3 | C 4 | C **************************************************** 5 | C 6 | C S U B R O U T I N E B S O R T 7 | C 8 | C FUNCTION - SORT IN ASCENDING OR DESCENDING ORDER 9 | C ON X AND RE-ORDER Y AND W ACCORDINGLY 10 | C 11 | C INPUT PARAMETERS - 12 | C 13 | C NPT = NUMBER OF COORDINATES IN X,Y,W 14 | C NVAR = UNUSED 15 | C (X,Y,W)=ARRAYS TO SORT 16 | C ISIM = 0 = ASCENDING SORT 17 | C = 1 = DESCENDING SORT 18 | C 19 | C PROGRAMMED BY CARTOGRAPHIC LAB, U. OF MICHIGAN 20 | C 21 | C ***************************************************** 22 | C 23 | jn = npt - 1 24 | DO i = 1 , jn 25 | jl = i + 1 26 | DO j = jl , npt 27 | IF ( isim.NE.0 ) THEN 28 | IF ( xx(i).LE.xx(j) ) GOTO 50 29 | ELSEIF ( xx(i).GE.xx(j) ) THEN 30 | GOTO 50 31 | ENDIF 32 | C 33 | C INTERCHANGE 34 | C 35 | temp = xx(i) 36 | xx(i) = xx(j) 37 | xx(j) = temp 38 | 50 ENDDO 39 | ENDDO 40 | C 41 | RETURN 42 | END 43 | -------------------------------------------------------------------------------- /PC-MOSS/src/BXCALC.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE bxcalc(xbox,ybox,ndim,slen) 2 | DIMENSION xbox(ndim) , ybox(ndim) 3 | C 4 | C *************************************************** 5 | C 6 | C S U B R O U T I N E B X C A L C 7 | C 8 | C FUNCTION - CLACULATE A BOX OF SIDE LENGTH SLEN 9 | C 10 | C INPUT PARAMETERS - 11 | C 12 | C (XBOX,YBOX) - RETURNED WITH COORDINATES OF BOX 13 | C NDIM - DIMENSION OF (XBOX,YBOX) 14 | C SLEN - LENGTH OF SIDE OF BOX 15 | C 16 | C ROUTINES 17 | C CALLED: 18 | C NONE. 19 | C 20 | C *************************************************** 21 | C 22 | hblen = slen/2. 23 | xbox(1) = hblen 24 | ybox(1) = hblen 25 | ybox(2) = -hblen 26 | xbox(2) = hblen 27 | xbox(3) = -hblen 28 | ybox(3) = -hblen 29 | xbox(4) = -hblen 30 | ybox(4) = hblen 31 | xbox(5) = xbox(1) 32 | ybox(5) = ybox(1) 33 | C 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/BYTEIT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE byteit(ibuff,iout) 2 | C 3 | DIMENSION iout(2) 4 | C 5 | ihold = ishft(ibuff,8) 6 | irhgt = ishft(ihold,-8) 7 | ileft = ishft(ibuff,-8) 8 | iout(1) = irhgt 9 | iout(2) = ileft 10 | RETURN 11 | END 12 | -------------------------------------------------------------------------------- /PC-MOSS/src/C77.BAT: -------------------------------------------------------------------------------- 1 | \f77ms\bin\fl /c /Os /Zl /4I2 /4Nt /FPi /Foc:\gis\obj\ %1.for 2 | -------------------------------------------------------------------------------- /PC-MOSS/src/CALMBR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE calmbr(npts,xmin,xmax,ymin,ymax) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E C A L M B R 6 | C FUNCTION: 7 | C CALCULATE MBR FOR AN ITEM 8 | C PARAMETERS: 9 | C NPTS - NUMBER OF MAP POINTS. 10 | C XMIN,XMAX,YMIN,YMAX O- THE X AND Y, MINIMUN AND MAXIMUN 11 | C OF THE MAP DATA. 12 | C ROUTINES 13 | C ***************************************************************************** 14 | C 15 | $Include:'xypnts.inc' 16 | C SET VALUES 17 | C 18 | xmin = 9999999.0 19 | xmax = 0.0 20 | ymin = 9999999.0 21 | ymax = 0.0 22 | C 23 | C ENTER LOOP 24 | C 25 | DO i = 1 , npts 26 | CALL spoints('X ',x,xi,i,1) 27 | CALL spoints('Y ',y,yi,i,1) 28 | xmin = amin1(xi,xmin) 29 | xmax = amax1(xi,xmax) 30 | ymin = amin1(yi,ymin) 31 | ymax = amax1(yi,ymax) 32 | ENDDO 33 | C 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/CENTAR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE centar(i,xcent,ycent,area1,island,nsland,iconv) 2 | DIMENSION island(*) 3 | $Include:'xypnts.inc' 4 | DOUBLE PRECISION xj , xl , yj , yl 5 | DOUBLE PRECISION xmom , ymom , area2 6 | C 7 | xmom = 0.0 8 | ymom = 0.D0 9 | area2 = 0.D0 10 | C 11 | conv = 4046.856422 12 | IF ( iconv.EQ.1 ) conv = 43260. 13 | i = iabs(i) 14 | C 15 | ipoint = 1 16 | IF ( nsland.LT.1 ) ipoint = 0 17 | C 18 | DO j = 2 , i 19 | IF ( ipoint.NE.0 ) THEN 20 | IF ( j.EQ.island(ipoint) ) THEN 21 | ipoint = ipoint + 1 22 | IF ( ipoint.GT.nsland ) ipoint = 0 23 | GOTO 100 24 | ENDIF 25 | ENDIF 26 | l = j - 1 27 | CALL spoints('X ',x,xll,l,1) 28 | CALL spoints('X ',x,xjj,j,1) 29 | CALL spoints('Y ',y,yll,l,1) 30 | CALL spoints('Y ',y,yjj,j,1) 31 | xl = dble(xll) 32 | xj = dble(xjj) 33 | yl = dble(yll) 34 | yj = dble(yjj) 35 | xmom = xmom + (((xl*(xl+xj))+xj**2)*(yl-yj)) 36 | ymom = ymom + (((yl*(yl+yj))+yj**2)*(xl-xj)) 37 | area2 = area2 + ((xl+xj)*(yl-yj)) 38 | 100 ENDDO 39 | C 40 | xcent = sngl(xmom/(3.D0*area2)) 41 | ycent = sngl(ymom/(3.D0*area2)) 42 | ycent = abs(ycent) 43 | area2 = (dabs(area2/2.D0)) 44 | area1 = area2/dble(conv) 45 | C 46 | RETURN 47 | END 48 | -------------------------------------------------------------------------------- /PC-MOSS/src/CHASH.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE chash(icom,nchars,iprim,ihash,lenr) 2 | DIMENSION icom(nchars) 3 | C 4 | C ***************************************************************************** 5 | C 6 | C S U B R O U T I N E C H A S H 7 | C 8 | C FUNCTION: CALCULATE THE HASH ADDRESS OF A HEAD NODE. THIS IS 9 | C A MORE SOPHISTICATED HASHING FUNCTION THAT HASH 10 | C PARAMETERS: 11 | C ICOM I- ARRAY CONTAINING KEY 12 | C NCHARS I- NUMBER OF CHARACTERS IN KEY 13 | C IPRIM I- LENGTH OF HASH TABLE 14 | C IHASH O- RETURNED HASH 15 | C LENR I- TABLE RECORD LENGTH 16 | C 17 | C ROUTINES 18 | C CALLED: NONE. 19 | C 20 | C ***************************************************************************** 21 | C 22 | hash = 0.0 23 | DO i = 1 , nchars 24 | hash = hash + ((10*i)-10)*icom(i) 25 | ENDDO 26 | C 27 | xlen = iprim 28 | xlen = xlen/float(lenr) 29 | hashi = hash/xlen 30 | itemp = hashi 31 | itemp = (hashi-itemp)*xlen 32 | ihash = itemp*lenr + 1 33 | C 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/CHRBLD.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE chrbld(istrng,cstrng) 2 | C 3 | C routine to create a character filename from an integer 4 | C filename. must be dimensioned to atleast 25 5 | C for the pc version and 30 for the dg version 6 | C 7 | CHARACTER cstrng*25 8 | INTEGER wrk(30) , istrng(*) 9 | C 10 | C test if packed - if so unpack 11 | C 12 | DO l = 1 , 25 13 | wrk(l) = istrng(l) 14 | ENDDO 15 | IF ( wrk(1).GT.255 ) CALL unpack(wrk,30) 16 | C 17 | C convert name to character string 18 | C 19 | cstrng = ' ' 20 | C 21 | DO l = 1 , 25 22 | IF ( wrk(l).EQ.32 .OR. wrk(l).EQ.0 ) GOTO 100 23 | C look for numbers 24 | IF ( wrk(l).GT.47 .AND. wrk(l).LT.58 ) cstrng(l:l) 25 | & = char(wrk(l)) 26 | C look for upper case alpha 27 | IF ( wrk(l).GT.64 .AND. wrk(l).LT.91 ) cstrng(l:l) 28 | & = char(wrk(l)) 29 | C look for lower case alpha 30 | IF ( wrk(l).GT.96 .AND. wrk(l).LT.123 ) cstrng(l:l) 31 | & = char(wrk(l)) 32 | C look for a dot 33 | IF ( wrk(l).EQ.46 ) cstrng(l:l) = char(wrk(l)) 34 | C look for a back slash 35 | IF ( wrk(l).EQ.92 ) cstrng(l:l) = char(wrk(l)) 36 | ENDDO 37 | 38 | C 39 | C 40 | 100 CONTINUE 41 | RETURN 42 | END 43 | -------------------------------------------------------------------------------- /PC-MOSS/src/CIRCLE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE circle(n,xcen,ycen,rad) 2 | $Include:'xypnts.inc' 3 | C 4 | C GENERATE A PARAMETRIC REPRESENTATION OF A CIRCLE 5 | C 6 | p = 2.0*3.14156/(n-1) 7 | c1 = cos(p) 8 | s1 = sin(p) 9 | xxt = rad 10 | yyt = 0.0 11 | CALL spoints('X ',x,(xxt+xcen),n,2) 12 | c x(n)=xxt+xcen 13 | CALL spoints('Y ',y,(yyt+ycen),n,2) 14 | C y(n)=yyt+ycen 15 | CALL spoints('X ',x,xn,n,1) 16 | CALL spoints('Y ',y,yn,n,1) 17 | xlast = xn - xcen 18 | ylast = yn - ycen 19 | nvert = n 20 | DO i = 2 , n 21 | xxt = (xlast)*c1 - (ylast)*s1 22 | yyt = (xlast)*s1 + (ylast)*c1 23 | nvert = nvert - 1 24 | xlast = xxt 25 | ylast = yyt 26 | CALL spoints('X ',x,(xxt+xcen),nvert,2) 27 | c x(nvert)=xxt+xcen 28 | CALL spoints('Y ',y,(yyt+ycen),nvert,2) 29 | c y(nvert)=yyt+ycen 30 | ENDDO 31 | C 32 | RETURN 33 | END 34 | -------------------------------------------------------------------------------- /PC-MOSS/src/CLEAR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE clear(iarr,ndim) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E C L E A R 6 | C FUNCTION: 7 | C THIS ROUTINE ZEROES AN ARRAY. 8 | C PARAMETERS: 9 | C IARR IN - ARRAY TO BE ZEROED. 10 | C NDIM IN - SIZE OF IARR ARRAY. 11 | C ROUTINES 12 | C CALLED: NONE. 13 | C 14 | C ***************************************************************************** 15 | C 16 | DIMENSION iarr(ndim) 17 | C 18 | C ZERO AN ARRAY 19 | C 20 | DO i = 1 , ndim 21 | iarr(i) = 0 22 | ENDDO 23 | C 24 | RETURN 25 | END 26 | -------------------------------------------------------------------------------- /PC-MOSS/src/CLRMNU.BAK: -------------------------------------------------------------------------------- 1 | C * Subroutine ClrMnu clears the menu areas when a new "program" is called and 2 | C sets up the system for that programs menus. 3 | 4 | Subroutine ClrMnu 5 | 6 | $Include:'GLOBAL.inc' 7 | cssk some of global.inc seems scrambled, had to fake next line 8 | character * 8 imenu(60),ctype(60), whoiam , level (10) 9 | real * 4 rvrsn (60) 10 | C# New program name. 11 | WhoIAm=' ' 12 | do 1 k=1,8 13 | if(Imenu(prgrun)(k:k).eq.' ')go to 2 14 | whoIam(k:k)=imenu(prgrun)(k:k) 15 | 1 enddo 16 | C# Save return. 17 | 2 continue 18 | LvlNum = LvlNum + 1 19 | If(lvlnum.gt.1)Display=.false. 20 | Level(LvlNum) = WhoIAm 21 | C# Reset. 22 | PrgRun = 0 23 | C# Reset command name, command type, and version number in menu. 24 | Do 100 I = NulCmd+1, IONum 25 | IMenu(I) = ' ' 26 | CType(I) = ' ' 27 | RVrsn(I) = 0.0 28 | 100 Continue 29 | IONum = NulCMD 30 | Return 31 | End 32 | -------------------------------------------------------------------------------- /PC-MOSS/src/CLRMNU.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine ClrMnu clears the menu areas when a new "program" is called and 2 | C sets up the system for that programs menus. 3 | 4 | SUBROUTINE clrmnu 5 | 6 | $Include:'GLOBAL.inc' 7 | 8 | C# New program name. 9 | whoiam = ' ' 10 | DO k = 1 , 8 11 | IF ( imenu(prgrun)(k:k).EQ.' ' ) GOTO 100 12 | whoiam(k:k) = imenu(prgrun)(k:k) 13 | ENDDO 14 | C# Save return. 15 | 100 CONTINUE 16 | lvlnum = lvlnum + 1 17 | IF ( lvlnum.GT.1 ) display = .FALSE. 18 | level(lvlnum) = whoiam 19 | C# Reset. 20 | prgrun = 0 21 | C# Reset command name, command type, and version number in menu. 22 | DO i = nulcmd + 1 , ionum 23 | imenu(i) = ' ' 24 | ctype(i) = ' ' 25 | rvrsn(i) = 0.0 26 | ENDDO 27 | ionum = nulcmd 28 | RETURN 29 | END 30 | -------------------------------------------------------------------------------- /PC-MOSS/src/CNVUPR.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine CNVUPR converts lower case to upper case for those systems that 2 | C don't handle lower case automatically. 3 | 4 | SUBROUTINE cnvupr(textln,length) 5 | 6 | C# Length = the number of elements in the text array. 7 | INTEGER length 8 | C# TextLn = the character array to be converted to upper case. 9 | CHARACTER*80 textln 10 | 11 | C# Index variable for looping. 12 | INTEGER i 13 | 14 | C * Now, convert each lowercase alpha character to uppercase. 15 | 16 | DO i = 1 , length 17 | IF ( ichar(textln(i:i)).GT.96 ) THEN 18 | IF ( ichar(textln(i:i)).LT.123 ) THEN 19 | textln(i:i) = char(ichar(textln(i:i))-32) 20 | ENDIF 21 | ENDIF 22 | ENDDO 23 | 24 | RETURN 25 | END 26 | -------------------------------------------------------------------------------- /PC-MOSS/src/COMPILE.BAK: -------------------------------------------------------------------------------- 1 | c77 a* 2 | c77 b* 3 | c77 c* 4 | c77 d* 5 | c77 e* 6 | c77 f* 7 | c77 g* 8 | c77 h* 9 | c77 i* 10 | c77 j* 11 | c77 k* 12 | c77 l* 13 | c77 m* 14 | c77 n* 15 | c77 o* 16 | c77 p* 17 | c77 q* 18 | c77 r* 19 | c77 s* 20 | c77 t* 21 | c77 u* 22 | c77 v* 23 | c77 w* 24 | c77 x* 25 | c77 y* 26 | c77 z* 27 | 28 | 29 | -------------------------------------------------------------------------------- /PC-MOSS/src/COMPILE.BAT: -------------------------------------------------------------------------------- 1 | c77 e* 2 | c77 f* 3 | c77 g* 4 | c77 h* 5 | c77 i* 6 | c77 j* 7 | c77 k* 8 | c77 l* 9 | c77 m* 10 | c77 n* 11 | c77 o* 12 | c77 p* 13 | c77 q* 14 | c77 r* 15 | c77 s* 16 | c77 t* 17 | c77 u* 18 | c77 v* 19 | c77 w* 20 | c77 x* 21 | c77 y* 22 | c77 z* 23 | 24 | 25 | -------------------------------------------------------------------------------- /PC-MOSS/src/CONTIN.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE contin(lines,istop) 2 | COMMON /clines/ cline 3 | COMMON /io / nprnt , ioin 4 | INTEGER cline 5 | INTEGER string(80) 6 | LOGICAL mcomp 7 | C 8 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 9 | C 10 | C S U B R O U T I N E C O N T I N 11 | C 12 | C FUNCTION: CHECK WITH USER IF SHOULD CONTINUE AFTER N LINES 13 | C 14 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 15 | C 16 | istop = 0 17 | lines = lines + 1 18 | IF ( lines-1.GT.21 ) THEN 19 | C 20 | WRITE (nprnt,99001) 21 | 99001 FORMAT (' Continue? ((Y)/N)',\) 22 | lines = lines + 1 23 | C 24 | CALL readin(string,80,icardp,iend) 25 | C 26 | IF ( mcomp(string(1),'N',1,ier) ) istop = 1 27 | IF ( istop.NE.1 ) THEN 28 | C 29 | lines = 1 30 | ENDIF 31 | ENDIF 32 | C 33 | RETURN 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/CPTRNS.FOR: -------------------------------------------------------------------------------- 1 | C 2 | C CHANGES COORIDINATES FROM METERS TO INCHES AND FACTORS 3 | C PRODUCT BY SCALE 4 | C 5 | C XX=INPUT COORDINATE IN METERS 6 | C XC=OUTPUT COORDINATE IN INCHES 7 | C ORG=MINIMUM VALUE OR ORIGION FOR COORDINATE 8 | C SCALE=OUTPUT MAP SCALE 9 | C 10 | SUBROUTINE cptrns(xx,xc,org,scale) 11 | xc = ((xx-org)*39.37)/scale 12 | RETURN 13 | END 14 | -------------------------------------------------------------------------------- /PC-MOSS/src/CRDOUT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE crdout 2 | COMMON /strng / icard(80) , icardc , initl 3 | LOGICAL initl 4 | OPEN (50,FILE='cmdline',STATUS='new',IOSTAT=ier) 5 | IF ( ier.NE.0 ) THEN 6 | OPEN (50,FILE='cmdline',STATUS='old') 7 | CLOSE (50,STATUS='delete') 8 | OPEN (50,FILE='cmdline',STATUS='new') 9 | ENDIF 10 | icardc = 80 11 | WRITE (50,'(L1,i2,80i3)') initl , icardc , (icard(l),l=1,icardc) 12 | CLOSE (50) 13 | END 14 | -------------------------------------------------------------------------------- /PC-MOSS/src/CROSS1.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE cross1(a,b,c,p,q,r,x,y,d,ier) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E C R O S S 1 6 | C FUNCTION: 7 | C DETERMINE IF LINE (A,B,C) INTERSECTS 8 | C LINE (P,Q,R). IF IT DOES, X AND Y 9 | C ARE THE VALUES. IF IT DOES NOT, IER 10 | C IS SET TO 1 11 | C PARAMETERS: 12 | C A,B,C IN - LINE AX+BY+C=0. 13 | C P,Q,R IN - LINE PX+QY+R=0. 14 | C (X,Y) OUT- THE INTERSECTION POINT. 15 | C D OUT- BOTTOM DIVISOR MATRIX. 16 | C IER OUT- ERROR RETURN 17 | C 1,IF AN ERROR. 18 | C 0,IF NO ERROR. 19 | C ***************************************************************************** 20 | C 21 | DOUBLE PRECISION a , b , c , p , q , r , d 22 | ier = 1 23 | C 24 | d = a*q - b*p 25 | C 26 | C LINES PARALELL ? 27 | C 28 | IF ( dabs(d).EQ.0.D0 ) THEN 29 | ier = 0 30 | C 31 | RETURN 32 | ELSE 33 | C 34 | x = sngl((b*r-c*q)/d) 35 | y = sngl((c*p-a*r)/d) 36 | C 37 | RETURN 38 | ENDIF 39 | END 40 | -------------------------------------------------------------------------------- /PC-MOSS/src/CROSY.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE crosy(x1,y1,x2,y2,x3,y3,x4,y4,x,y,nix) 2 | DOUBLE PRECISION a , b , c , p , q , r , d 3 | C 4 | C DO TWO LINES CROSS ONE ANOTHER ? 5 | C 6 | nix = 1 7 | IF ( x1.EQ.x2 .AND. y1.EQ.y2 ) RETURN 8 | IF ( x1.EQ.x3 .AND. y1.EQ.y3 .OR. x2.EQ.x3 .AND. y2.EQ.y3 ) RETURN 9 | IF ( x1.EQ.x4 .AND. y1.EQ.y4 .OR. x2.EQ.x4 .AND. y2.EQ.y4 ) RETURN 10 | xmin = amax1(amin1(x1,x2),amin1(x3,x4)) 11 | ymin = amax1(amin1(y1,y2),amin1(y3,y4)) 12 | xmax = amin1(amax1(x1,x2),amax1(x3,x4)) 13 | ymax = amin1(amax1(y1,y2),amax1(y3,y4)) 14 | CALL genral(x1,y1,x2,y2,a,b,c) 15 | CALL genral(x3,y3,x4,y4,p,q,r) 16 | CALL cross1(a,b,c,p,q,r,x,y,d,ier) 17 | IF ( ier.EQ.0 ) RETURN 18 | IF ( x.GT.xmin .AND. x.LT.xmax .AND. y.GE.ymin .AND. y.LE.ymax ) 19 | & nix = 2 20 | C 21 | RETURN 22 | END 23 | -------------------------------------------------------------------------------- /PC-MOSS/src/DBCHAN.INC: -------------------------------------------------------------------------------- 1 | C Static channel numbers for "FAST FILES", set in MOSSBLK 2 | COMMON /DBCHAN/ ICMAST,ICWORK,ICDCFA,ICDCDT,IDESFA(12),IDESDT(12) 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/DELMAP.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE delmap(first,last,nmaps,name,ichan,ier) 2 | COMMON /dirsy / lastc , lastbk , iwtrn , kdir(256) 3 | COMMON /io / nprnt , ioin 4 | $Include:'dnames.inc' 5 | $Include:'strng.inc' 6 | COMMON /dbmap / dbnmap(2) 7 | INTEGER name(16) , first , wrk(2) , dbnmap 8 | C 9 | C DELETE A MAP FROM A MOSS DT FILE 10 | C 11 | ier = 0 12 | IF ( nmaps.LT.1 ) RETURN 13 | C 14 | CALL fndmap(dbnmap(2),name,ichan,iloc1,iloc2) 15 | IF ( iloc1.EQ.0 ) THEN 16 | C 17 | WRITE (nprnt,99001) 18 | 99001 FORMAT (' *DELMAP* THIS MAP DOES NOT EXIST') 19 | ier = 1 20 | ELSE 21 | C 22 | move = last - iloc1 23 | IF ( move.GE.1 ) THEN 24 | C 25 | DO i = 1 , move 26 | iloc1 = iloc1 + 1 27 | CALL getmap(ichan,iloc1,name,ier) 28 | CALL putmap(ichan,iloc1-1,name,ier) 29 | ENDDO 30 | WRITE (ichan,REC=lastbk) kdir 31 | ENDIF 32 | C 33 | last = last - 1 34 | nmaps = nmaps - 1 35 | CALL getmap(ichan,1,name,ier) 36 | name(16) = last 37 | CALL putmap(ichan,1,name,ier) 38 | WRITE (ichan,REC=1) kdir 39 | ENDIF 40 | RETURN 41 | END 42 | -------------------------------------------------------------------------------- /PC-MOSS/src/DEVGET.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE devget(icard,icardc) 2 | C 3 | C routine to get and change the graphic output device and status 4 | C 5 | COMMON /fls / iunit , ifile(5) 6 | DIMENSION icard(80) , icom(10) , iwrk(25) 7 | LOGICAL mcomp 8 | C 9 | C see if anything remains in command line array 10 | C 11 | CALL decip(icard,icom,icardc) 12 | IF ( icom(1).EQ.0 ) THEN 13 | C 14 | C nothing good given - tell current status 15 | C 16 | WRITE (*,*) 17 | IF ( iunit.EQ.6 ) THEN 18 | WRITE (*,*) 'Screen is current device' 19 | RETURN 20 | ELSE 21 | WRITE (*,99001) (ifile(ll),ll=1,5) 22 | 99001 FORMAT (1X,'File : ',5A2,' is current device',//, 23 | & ' Use DEVICE * to return output to the SCREEN') 24 | RETURN 25 | ENDIF 26 | C 27 | C should be a device option 28 | C 29 | ELSEIF ( mcomp(icom,'*',1,ier) .OR. mcomp(icom,'SCREEN',6,ier) ) 30 | & THEN 31 | iunit = 6 32 | ifile(1) = 0 33 | RETURN 34 | ELSE 35 | CALL gtnam(-1,16,icom,iwrk,ier) 36 | DO l = 1 , 5 37 | ifile(l) = iwrk(l) 38 | ENDDO 39 | iunit = 60 40 | RETURN 41 | ENDIF 42 | C 43 | C 44 | END 45 | -------------------------------------------------------------------------------- /PC-MOSS/src/DEVICE.FOR: -------------------------------------------------------------------------------- 1 | C******************************************************************* 2 | C 3 | C PROGRAM DEVICE 4 | C 5 | C to set up the graphics output device 6 | C 7 | C default : (iunit=6) 8 | C (optional): (iunit=60) 9 | C : <*> or (iunit=61) (screen other than crt) 10 | C****************************************************************** 11 | PROGRAM device 12 | C 13 | $Include:'STRNG.inc' 14 | COMMON /fls / iunit , ifile(5) 15 | C 16 | CALL initl(ier) 17 | IF ( ier.NE.0 ) STOP 18 | CALL devget(icard,icardp) 19 | CALL outcm 20 | END 21 | -------------------------------------------------------------------------------- /PC-MOSS/src/DLINDEF.FOR: -------------------------------------------------------------------------------- 1 | C 2 | C THIS SUBROUTINE REQUEST THE USER TO ENTER THE PARAMETERS 3 | C FOR LINE TYPES THAT HAVE A WIDTH. 4 | C 5 | SUBROUTINE dlindef(lstype,ispen,widthl,dmark) 6 | C 7 | C COMMON /CHANL/ IO(40) 8 | $Include:'strng.inc' 9 | C COMMON /STRNG/ ICARD(80),K 10 | C 11 | IF ( lstype.GT.6 ) THEN 12 | C/* THESE LINES DON'T NEED 2 PENS 13 | WRITE (*,*) 'Some special lines require 2 pens.' 14 | CALL penass('2nd PEN ',ispen) 15 | ENDIF 16 | IF ( lstype.LE.5 ) RETURN 17 | C/* NOT WIDE LINES 18 | WRITE (*,99001) 19 | 99001 FORMAT (' Enter LINE WIDTH, DIST between MARKERS (inches)', 20 | & ' [CR=.1,.5] = '\) 21 | CALL readin(icard,lenicd,k,ie) 22 | CALL fnum(icard,80,widthl,k) 23 | CALL fnum(icard,80,dmark,k) 24 | IF ( widthl.LE.0 .OR. widthl.GT..5 ) widthl = .1 25 | IF ( dmark.LE.0 .OR. dmark.GT.3. ) dmark = .5 26 | RETURN 27 | END 28 | -------------------------------------------------------------------------------- /PC-MOSS/src/DNAMES.INC: -------------------------------------------------------------------------------- 1 | C 2 | COMMON /DNAMES/ MAST(25),IWORK(25),IDIRC(8),JNAMES(3,12),LENDIR 3 | C 4 |  -------------------------------------------------------------------------------- /PC-MOSS/src/DRAWB.FOR: -------------------------------------------------------------------------------- 1 | C****************************************************************** 2 | C 3 | C PROGRAM: S U B R O U T I N E D R A W B 4 | C 5 | C FUNCTION: DRAWS A BORDER AROUND THE MINIMUM BOUNDING 6 | C RECTANGLE 7 | C 8 | C PARAMETERS: X=X DIRECTION DISTANCE IN INCHES FROM XMIN 9 | C & XMAX SIDES 10 | C Y=Y DIRECTION DISTANCE IN INCHES FROM YMIN 11 | C & YMAX SIDES 12 | C 13 | C YOFF=Y OFFSET FROM BOTTOM OF BORDER 14 | C 15 | C 16 | C ROUTINES REQUIRED: hpplot 17 | C COMMON DIMEN 18 | C 19 | C****************************************************************** 20 | SUBROUTINE drawb(x,y,yoff) 21 | COMMON /dimen / x1 , y1 , x2 , y2 , xln , yln , scale , fact , 22 | & x0 , y0 23 | C 24 | C 25 | xl = x - 2.0*fact 26 | yb = 0.0 - yoff 27 | xr = x + xln + 1.0*fact 28 | yt = y + yln + 1.0*fact 29 | CALL hpplot(xl,yb,3) 30 | CALL hpplot(xr,yb,2) 31 | CALL hpplot(xr,yt,2) 32 | CALL hpplot(xl,yt,2) 33 | CALL hpplot(xl,yb,2) 34 | C 35 | RETURN 36 | END 37 | -------------------------------------------------------------------------------- /PC-MOSS/src/DRPLUS.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE drplus(xpoint,ypoint) 2 | C ********************************************************************* 3 | C 4 | C S U B R O U T I N E D R P L U S 5 | C 6 | C Purpose: This routine draws a plus centered at xpoint,ypoint 7 | C 8 | C Parameters: 9 | C Name Use Type Dimension Description 10 | C ---- --- ---- --------- ------------------ 11 | C 12 | C Files: Logical Unit File name or description 13 | C ------------ ------------------------ 14 | C 15 | C Calls: WHWND, INVWND, MOVEA, MOVREL, DRWREL 16 | C 17 | C ********************************************************************** 18 | COMMON /mdevice/ idev 19 | $Include:'IO.inc' 20 | C 21 | C 22 | C FIRST CHECK TO ENSURE THAN IT IS IN THE WINDOW 23 | C 24 | CALL whwnd(x1,y1,x2,y2) 25 | IF ( invwnd(xpoint,xpoint,ypoint,ypoint,x1,x2,y1,y2).NE.0 ) THEN 26 | C 27 | C DRAW + CENTERED AT XPOINT, YPOINT 28 | C 29 | CALL plotdv(xpoint,ypoint,3,idev) 30 | CALL plotdv(xpoint-3,ypoint,3,idev) 31 | CALL plotdv(xpoint+6,ypoint,2,idev) 32 | CALL plotdv(xpoint-3,ypoint,3,idev) 33 | CALL plotdv(xpoint,ypoint-3,3,idev) 34 | CALL plotdv(xpoint,ypoint+6,2,idev) 35 | ENDIF 36 | C 37 | RETURN 38 | END 39 | -------------------------------------------------------------------------------- /PC-MOSS/src/DRWSYM.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE drwsym(npts) 2 | C DIMENSION XX(NPTS),YY(NPTS) 3 | $Include:'xypnts.inc' 4 | CALL movea(x(1),y(1)) 5 | DO i = 2 , npts 6 | IF ( x(i).LT.0 ) THEN 7 | CALL movea(x(i),y(i)) 8 | ELSE 9 | CALL drawa(x(i),y(i)) 10 | ENDIF 11 | ENDDO 12 | C 13 | RETURN 14 | END 15 | -------------------------------------------------------------------------------- /PC-MOSS/src/DSORT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE dsort(ds,ihol,n) 2 | C*** THIS SUBROUTINE WAS WRITTEN BY KIM AND KNUDSEN 3 | C*** THIS IS A SORTING ROUTINE IN ASCENDING ORDER 4 | DIMENSION ds(1) , ihol(1) 5 | dnew = ds(n) 6 | new = ihol(n) 7 | n1 = n - 1 8 | DO i = 1 , n1 9 | k = i 10 | IF ( dnew.LT.ds(i) ) THEN 11 | jk = 0 12 | DO i = k , n1 13 | j = n1 - jk 14 | jk = jk + 1 15 | ds(j+1) = ds(j) 16 | ihol(j+1) = ihol(j) 17 | ENDDO 18 | ds(k) = dnew 19 | ihol(k) = new 20 | GOTO 100 21 | ENDIF 22 | ENDDO 23 | 100 CONTINUE 24 | RETURN 25 | END 26 | -------------------------------------------------------------------------------- /PC-MOSS/src/EQUIV.FOR: -------------------------------------------------------------------------------- 1 | 2 | LOGICAL FUNCTION equiv(q,r) 3 | LOGICAL q , r 4 | equiv = .FALSE. 5 | IF ( q .AND. r ) equiv = .TRUE. 6 | IF ( .NOT.q .AND. .NOT.r ) equiv = .TRUE. 7 | C 8 | RETURN 9 | END 10 | -------------------------------------------------------------------------------- /PC-MOSS/src/FILINT.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine FILINT fills an integer array with a value passed from the 2 | C calling routine. 3 | 4 | SUBROUTINE filint(name,length,value,begin) 5 | 6 | C# Name = the name of the array to be filled. 7 | INTEGER name(*) 8 | C# Length = the number of elements in the array to be filled (default=1). 9 | INTEGER length 10 | C# Value = the array element value (default=0). 11 | INTEGER value 12 | C# Begin = the first position to fill of the string passed (default=1). 13 | INTEGER begin 14 | 15 | C# Index/counter variables for looping. 16 | INTEGER i , j , k 17 | 18 | C * Get first element to change and length of array. 19 | 20 | j = begin 21 | IF ( j.LE.0 ) j = 1 22 | k = length 23 | IF ( k.LE.0 ) k = 1 24 | 25 | C * Change element Begin to Length. 26 | 27 | DO i = j , k 28 | name(i) = value 29 | ENDDO 30 | 31 | RETURN 32 | END 33 | -------------------------------------------------------------------------------- /PC-MOSS/src/FILLC.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE fillc(ibuff,nword,iword) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E F I L L C 6 | C FUNCTION: 7 | C THIS ROUTINE FILLS ARRAY IBUFF WITH IWORD CHARACTERS. 8 | C PARAMETERS: 9 | C IBUFF OUT- ARRAY TO FILL. 10 | C NWORD IN - ARRAY SIZE. 11 | C IWORD IN - FILLER CHARACTER. 12 | C ROUTINES 13 | C CALLED: NONE. 14 | C 15 | C ***************************************************************************** 16 | C 17 | DIMENSION ibuff(*) 18 | C 19 | DO i = 1 , nword 20 | ibuff(i) = iword 21 | ENDDO 22 | C 23 | RETURN 24 | END 25 | -------------------------------------------------------------------------------- /PC-MOSS/src/FIXCHR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE fixchr(in,ndim) 2 | INTEGER in(*) , iuse(30) 3 | DO l = 1 , ndim/2 4 | iuse(l) = in(l) 5 | ENDDO 6 | CALL unpack(iuse,ndim) 7 | DO l = 1 , ndim 8 | IF ( iuse(l).EQ.0 ) iuse(l) = 32 9 | ENDDO 10 | CALL packc(iuse,in,ndim) 11 | RETURN 12 | END 13 | -------------------------------------------------------------------------------- /PC-MOSS/src/FLD.FOR: -------------------------------------------------------------------------------- 1 | INTEGER*2 FUNCTION fld(var,start,stop) 2 | C 3 | C VAR INPUT VARIABLE NAME 4 | C START STARTING BIT OF VARIABLE TO BE EXTRACTED 5 | C STOP LAST BIT OF VARIABLE TO BE EXTRACTED 6 | C 7 | C BIT ARE NUMBERED 1 THROUGH N FROM LEFT TO RIGHT, 1 BEING THE 8 | C MOST SIGNIFICANT AND N BEING THE LEAST SIGNIFICANT. 9 | C 10 | C THIS ROUTINE IS AN EMULATION OF THE DG FLD FUNCTION. 11 | C 12 | INTEGER*2 var , start , stop , temp , j 13 | C 14 | fld = var 15 | IF ( start.LE.15 ) THEN 16 | IF ( stop.LE.15 ) THEN 17 | C 18 | temp = var 19 | C 20 | C ----TRUNCATE THE LEFT MOST BITS TO THE STARTING BIT 21 | C 22 | c J = 16 - START 23 | IF ( j.NE.0 ) THEN 24 | DO il = start , 15 25 | temp = ibclr(temp,j) 26 | ENDDO 27 | ENDIF 28 | C 29 | C ----SHIFT THE REST OF THE BITS TO THE RIGHT 30 | C 31 | j = 15 - stop 32 | IF ( j.NE.0 ) temp = ishl(temp,-stop) 33 | C 34 | C ----SAVE THE RESULT 35 | C 36 | fld = temp 37 | RETURN 38 | ENDIF 39 | ENDIF 40 | C 41 | C ----ERROR CONDITION 42 | C 43 | WRITE (1,99001) start , stop 44 | 99001 FORMAT (' *FLD* - INVALID BIT RANGE = ',2I6) 45 | C 46 | RETURN 47 | END 48 | -------------------------------------------------------------------------------- /PC-MOSS/src/FLDSET.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE fldset(var,start,stop,value) 2 | C --------------------------------------------------------------------- 3 | C 4 | C VAR OUTPUT VARIABLE NAME 5 | C START STARTING BIT OF VARIABLE TO BE SET 6 | C STOP LAST BIT OF VARIABLE TO BE SET 7 | C VALUE THE VALUE TO BE STORED IN THE SPECIFIED BITS OF VAR 8 | C 9 | C BIT ARE NUMBERED 1 THROUGH N FROM LEFT TO RIGHT, 1 BEING THE 10 | C MOST SIGNIFICANT AND N BEING THE LEAST SIGNIFICANT. 11 | C 12 | C 13 | C --------------------------------------------------------------------- 14 | C 15 | INTEGER var , start , stop , value , temp , tempa , j , nbit 16 | LOGICAL what 17 | C 18 | IF ( start.LE.15 .AND. start.GE.0 ) THEN 19 | IF ( stop.LE.15 .AND. stop.GE.0 ) THEN 20 | C 21 | jbit = 0 22 | DO i = stop , start , -1 23 | jbit = jbit + 1 24 | c CALL BITSET (17-I,GETBIT (JBIT,VALUE,1),VAR,1) 25 | what = btest(var,i) 26 | IF ( .NOT.what .AND. value.EQ.1 ) var = ibset(var,i) 27 | IF ( value.EQ.0 .AND. (what) ) var = ibclr(var,i) 28 | ENDDO 29 | RETURN 30 | ENDIF 31 | ENDIF 32 | C 33 | C ----ERROR CONDITION 34 | C 35 | WRITE (1,99001) 36 | 99001 FORMAT (' ERROR - INVALID BIT RANGE SPECIFIED (FLDSET).') 37 | C 38 | RETURN 39 | END 40 | -------------------------------------------------------------------------------- /PC-MOSS/src/FLIN2.FOR: -------------------------------------------------------------------------------- 1 | LOGICAL FUNCTION flin2(ix,iy,npts,atol,i) 2 | $Include:'pqpnts.inc' 3 | REAL ix , iy 4 | LOGICAL fpoint 5 | C 6 | C ********************************************************** 7 | C 8 | C L O G I C A L F U N C T I O N F L I N 2 9 | C 10 | C FUNCTION: DETERMINE IF THE POINT IX,IY IS WITH ATOL 11 | C UNITS OF THE LINE STORED IN X AND Y 12 | C INPUT PARAMETERS: 13 | C (IX,IY) = POINT TO TEST 14 | C NPTS = NUMBER OF X,Y COORDINATES 15 | C ATOL = SEARCH TOLERENCE 16 | C I = LINE SEGMENT NUMBER, IF POINT (IX,YI) WITHIN 17 | C ATOL UNITS OF THIS LINE SEGMENT. 18 | C ROUTINES 19 | C CALLED: P,Q,POISE,FPOINT. 20 | C ******************************************************* 21 | C 22 | flin2 = .FALSE. 23 | n = npts - 1 24 | DO i = 1 , n 25 | CALL spoints('P ',p,x1,i,1) 26 | CALL spoints('Q ',q,y1,i,1) 27 | CALL spoints('P ',p,x2,i+1,1) 28 | CALL spoints('Q ',q,y2,i+1,1) 29 | c X1=P(I) 30 | c Y1=Q(I) 31 | c X2=P(I+1) 32 | c Y2=Q(I+1) 33 | CALL poise(ix,iy,x1,y1,x2,y2,dsq) 34 | C 35 | C NOW DETERMINE IF POINT WITHIN ATOL UNITS OF THIS LINE SEGMENT 36 | C 37 | IF ( dsq.LE.atol ) THEN 38 | flin2 = .TRUE. 39 | C 40 | RETURN 41 | ENDIF 42 | ENDDO 43 | RETURN 44 | END 45 | -------------------------------------------------------------------------------- /PC-MOSS/src/FLINE.FOR: -------------------------------------------------------------------------------- 1 | LOGICAL FUNCTION fline(ix,iy,npts,atol,i) 2 | REAL ix , iy 3 | $Include:'xypnts.inc' 4 | C 5 | C ********************************************************** 6 | C 7 | C L O G I C A L F U N C T I O N F L I N E 8 | C 9 | C FUNCTION: DETERMINE IF THE POINT IX,IY IS WITHin ATOL 10 | C UNITS OF THE LINE STORED IN X AND Y 11 | C INPUT PARAMETERS: 12 | C (IX,IY) = POINT TO TEST 13 | C NPTS = NUMBER OF X,Y COORDINATES 14 | C ATOL = SEARCH TOLERENCE 15 | C I = LINE SEGMENT NUMBER, IF POINT (IX,YI) WITHIN 16 | C ATOL UNITS OF THIS LINE SEGMENT. 17 | C ******************************************************* 18 | C 19 | fline = .FALSE. 20 | n = npts - 1 21 | DO i = 1 , n 22 | CALL spoints('X ',x,x1,i,1) 23 | CALL spoints('Y ',y,y1,i,1) 24 | CALL spoints('X ',x,x2,i+1,1) 25 | CALL spoints('Y ',y,y2,i+1,1) 26 | c X1=X(I) 27 | c Y1=Y(I) 28 | c X2=X(I+1) 29 | c Y2=Y(I+1) 30 | CALL poise(ix,iy,x1,y1,x2,y2,dsq) 31 | C 32 | C NOW DETERMINE IF POINT WITHIN ATOL UNITS OF THIS LINE SEGMENT 33 | C 34 | IF ( dsq.LE.atol ) THEN 35 | fline = .TRUE. 36 | RETURN 37 | ENDIF 38 | ENDDO 39 | C 40 | RETURN 41 | END 42 | -------------------------------------------------------------------------------- /PC-MOSS/src/FONTBLK.FOR: -------------------------------------------------------------------------------- 1 | Block data fonts 2 | C 3 | common/pwindo/xmin,ymin,xmax,ymax,xlast,ylast,lastfg 4 | common/mdevice/idev 5 | common/thick1/dfltpn,ntim,pnwd 6 | common/ththht/iflag,inipen,initim,pdown,pi,pup,x1,y1 7 | C 8 | data xmin,ymin,xmax,ymax/-9.e10,-9.e10,9.e10,9.e10/ 9 | data idev/2/ 10 | data iflag,dfltpn,ntim,pdown/0,.005,1,2/ 11 | data pi,pup,x1,y1/3.14159,3,0.0,0.0/ 12 | end 13 |  -------------------------------------------------------------------------------- /PC-MOSS/src/FONTS.FOR: -------------------------------------------------------------------------------- 1 | BLOCKDATA fonts 2 | C 3 | COMMON /pwindo/ xmin , ymin , xmax , ymax , xlast , ylast , lastfg 4 | COMMON /mdevice/ idev 5 | COMMON /thick1/ dfltpn , ntim , pnwd 6 | COMMON /ththht/ iflag , inipen , initim , pdown , pi , pup , x1 , 7 | & y1 8 | C 9 | DATA xmin , ymin , xmax , ymax/ - 9.E10 , -9.E10 , 9.E10 , 9.E10/ 10 | DATA idev/2/ 11 | DATA iflag , dfltpn , ntim , pdown/0 , .005 , 1 , 2/ 12 | DATA pi , pup , x1 , y1/3.14159 , 3 , 0.0 , 0.0/ 13 | END 14 | -------------------------------------------------------------------------------- /PC-MOSS/src/FPOINT.FOR: -------------------------------------------------------------------------------- 1 | LOGICAL FUNCTION fpoint(x,y,xp,yp,atol) 2 | REAL atol , x , y , xp , yp 3 | DOUBLE PRECISION dist , xdist , ydist 4 | C 5 | C ************************************************************ 6 | C 7 | C L O G I C A L F U N C T I O N F P O I N T 8 | C 9 | C FUNCTION: DETERMINE IF A DATA POINT IS WITHIN THE 10 | C SEARCH TOLERENCE OF A SPECIFIED SEARCH POINT 11 | C PARAMETERS: 12 | C XP,YP - ARRAY CONTAINING TEST DATA COORDINATE 13 | C X,Y - SPECIFIED SEARCH COORDINATE 14 | C ATOL - SEARCH RADIUS 15 | C ROUTINES 16 | C CALLED: NONE. 17 | C ************************************************************ 18 | C 19 | fpoint = .FALSE. 20 | C 21 | C CALCULATE DISTANCE BETWEEN POINT 22 | C 23 | xdist = dble(x-xp) 24 | ydist = dble(y-yp) 25 | dist = xdist**2 + ydist**2 26 | C DIST=SQRT(DIST) 27 | IF ( dist.GT.atol**2 ) RETURN 28 | C IF(DIST.GT.ATOL) RETURN 29 | fpoint = .TRUE. 30 | C 31 | RETURN 32 | END 33 | -------------------------------------------------------------------------------- /PC-MOSS/src/FREQUENC.FOR: -------------------------------------------------------------------------------- 1 | C ***************************************************************************** 2 | C 3 | C P R O G R A M T A B L E 4 | C FUNCTION: 5 | C THIS ROUTINE RE-STATE MOSS RUNTIME PARAMETERS AND EXECUTE THE 6 | C AREA, PERIMETER, LENGTH, AND FREQUENCY COMMANDS 7 | C ***************************************************************************** 8 | PROGRAM frequenc 9 | C 10 | $Include:'dbchan.inc' 11 | $Include:'mfast.inc' 12 | COMMON /fls / iunit , ifile(5) 13 | $Include:'strng.inc' 14 | C 15 | C FIRST READ IN THE COMMON BLOCKS 16 | C 17 | CALL initl(ier) 18 | IF ( ier.NE.0 ) STOP 19 | C 20 | C OPEN POINTER FILE 21 | C 22 | CALL openf(icdcfa,idesfa,1,512,2,ier) 23 | IF ( ier.NE.0 ) THEN 24 | C 25 | C ERROR RETURNS 26 | C 27 | WRITE (*,*) ' Could not properly open file' 28 | ELSE 29 | C 30 | C SET WINDOW 31 | C 32 | CALL setwnd 33 | C 34 | C CALL TABLE GENERATION ROUTINE 35 | C 36 | icard(80) = -3 37 | CALL tabara(lines,icard(80)) 38 | ENDIF 39 | C 40 | lines = lines + 2 41 | CLOSE (icdcfa,IOSTAT=ier) 42 | END 43 | -------------------------------------------------------------------------------- /PC-MOSS/src/FSTCHR.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine FSTCHR locates the first filled position in a given array. 2 | 3 | SUBROUTINE fstchr(array,length,index) 4 | 5 | C# Length = the total length or the length of the portion to be checked. 6 | INTEGER length 7 | C# Array = the array to check. 8 | CHARACTER*80 array 9 | C# Index = the first non-blank byte in the array. 10 | INTEGER index 11 | 12 | C * While ( Array(Index:index) .eq. ' ' ) Repeat. 13 | 14 | 100 CONTINUE 15 | index = index + 1 16 | IF ( index.LE.length ) THEN 17 | IF ( array(index:index).EQ.' ' ) GOTO 100 18 | ENDIF 19 | 20 | RETURN 21 | END 22 | -------------------------------------------------------------------------------- /PC-MOSS/src/GENRAL.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE genral(x1,y1,x2,y2,a,b,c) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E G E N R A L 6 | C FUNCTION: 7 | C GENERATE THE PARAMETERS FOR THE EQUATION 8 | C OF THE LINE FROM (X1,Y1) TO (X2,Y2) 9 | C AND RETURN THE PARAMETERS IN (A,B,C) 10 | C PARAMETERS: 11 | C (X1,Y1),(X2,Y2) IN - THE TWO POINTS NEEDED FOR THE 12 | C LINE EQUATION. 13 | C A,B,C OUT - THE PARAMETERS FOR THE LINE EQUATION OF THE 14 | C FORM: AX+BY+C=0. 15 | C ROUTINES 16 | C CALLED: NONE. 17 | C ***************************************************************************** 18 | C 19 | DOUBLE PRECISION a , b , c , dx2 , dy2 20 | dx2 = dble(x2) 21 | dy2 = dble(y2) 22 | a = dble(y1) - dy2 23 | b = dx2 - dble(x1) 24 | c = -a*dx2 - b*dy2 25 | C 26 | RETURN 27 | END 28 | -------------------------------------------------------------------------------- /PC-MOSS/src/GETDATE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE getdate(id) 2 | C*** PLACES CURRENT DATE IN MO/DA/YR IN CHARACTER*8 VARIABLE 3 | C*** CODED BY W.D. GRUNDY JANUARY 1985 4 | C*** 5 | CHARACTER*8 id 6 | CHARACTER*1 slash 7 | INTEGER*2 mo , iday , iyr 8 | DATA slash/'/'/ 9 | CALL mdyhms(mo,iday,iyr,ihr,min,isec,ih100) 10 | CSKG CALL GETDAT(IYR,MO,IDAY) 11 | iyr = iyr - 1900 12 | WRITE (id,99001,ERR=100) mo , slash , iday , slash , iyr 13 | 99001 FORMAT (I2,A1,I2,A1,I2) 14 | C*** CHANGE EMBEDDED BLANKS TO ZEROES. 15 | CALL remblk(id) 16 | 100 CONTINUE 17 | RETURN 18 | END 19 | -------------------------------------------------------------------------------- /PC-MOSS/src/GETPTS.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE getpts(nxy,k,n,uv,isw) 2 | COMMON /ippy / ipp(3) , iofx , iofy , iofp , iofq 3 | $Include:'xypnts.inc' 4 | $Include:'pqpnts.inc' 5 | C 6 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7 | C 8 | C GIVEN A BOUNDARY IN XY CONSISTING OF NXY POINTS, WE EXTRACT N POINTS 9 | C IN SEQUENCE STARTING WITH POINT NUMBER K, AND STORE THESE N POINTS IN 10 | C THE FIRST N POSITION S OF UV. SINCE XY IS A CLOSED BOUNDARY, THE N 11 | C SEQUENTIAL POINTS MAY PASS THROUGH THE LAST POSITION IN XY AND 12 | C CONTINUE IN THE BEGINNING OF XY. THIS WE HANDLE AUTOMATICALLY. 13 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 14 | C 15 | DIMENSION uv(2,1) 16 | IF ( n.LE.0 ) RETURN 17 | l = k 18 | IF ( l.EQ.0 ) l = nxy - 1 19 | DO j = 1 , n 20 | IF ( l.EQ.nxy ) l = 1 21 | IF ( isw.EQ.2 ) THEN 22 | CALL spoints('P ',p,pliofp,l+iofp,1) 23 | CALL spoints('Q ',q,qliofq,l+iofq,1) 24 | uv(1,j) = pliofp 25 | uv(2,j) = qliofq 26 | ELSE 27 | CALL spoints('X ',x,xliofx,l+iofx,1) 28 | CALL spoints('Y ',y,yliofy,l+iofy,1) 29 | uv(1,j) = xliofx 30 | uv(2,j) = yliofy 31 | ENDIF 32 | l = l + 1 33 | ENDDO 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/GETSUB.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE getsub(ichan,nrec,ibuff,isub,items) 2 | DIMENSION ibuff(128) 3 | DIMENSION isub(15) 4 | C 5 | C **************************************************************** 6 | C 7 | C S U B R O U T I N E G E T S U B 8 | C 9 | C 10 | C FUNCTION: GIVEN A SUBJECT RECORD NUMBER, RETURN THE 11 | C ACTUAL SUBJECT (DESCRIPTOR) AND THE NUMBER 12 | C OF ENTRIES FOR THIS SUBJECT 13 | C 14 | C INPUT PARAMETERS: 15 | C 16 | C ICHAN - DATA CHANNEL ON WHICH MAP MAY BE FOUND 17 | C NREC - SUBJECT RECORD NUMBER 18 | C ISUB - RETURNED 30 CHARACTER SUBJECT 19 | C ITEMS - NUMBER OF ITEMS IN THIS MAP WITH THIS 20 | C SUBJECT 21 | C IBUFF - THE ARRAY CONTAINING THE SUBJECT. 22 | C 23 | C ROUTINES 24 | C ************************************************************** 25 | C 26 | C READ SUBJECT RECORD 27 | C 28 | CALL rdblk(ichan,nrec,ibuff,1,ier) 29 | C 30 | C MOVE SUBJECT 31 | C 32 | DO i = 1 , 15 33 | isub(i) = ibuff(i) 34 | ENDDO 35 | C 36 | C GET NUMBER OF ITEMS 37 | C 38 | items = ibuff(17) 39 | C 40 | C AND RETURN 41 | C 42 | RETURN 43 | END 44 | -------------------------------------------------------------------------------- /PC-MOSS/src/GETWND.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE getwnd(index,wind,ichan) 2 | C 3 | C ********************************************************** 4 | C 5 | C S U B R O U T I N E G E T W N D 6 | C 7 | C FUNCTION: RETURN MBR FOR A DATA ITEM 8 | C 9 | C INPUT PARAMETERS: 10 | C INDEX - LOCATION OF RECORD 11 | C WIND - RETURNED MBR 12 | C ICHAN - DATA CHANNEL ON WHICH DATA IS LINKED 13 | C ROUTINES 14 | C CALLED: RDBLK. 15 | C 16 | C ******************************************************** 17 | COMMON /io / nprnt , ioin 18 | DIMENSION wind(4) 19 | $Include:'work.inc' 20 | EQUIVALENCE (xmin,ibuff(15)) , (xmax,ibuff(17)) 21 | EQUIVALENCE (ymin,ibuff(19)) , (ymax,ibuff(21)) 22 | C 23 | C READ CURRECT BLOCK 24 | C 25 | CALL rdblk(ichan,index,ibuff,1,ier) 26 | IF ( ier.NE.0 ) THEN 27 | C 28 | C ERROR RETURN 29 | C 30 | WRITE (nprnt,99001) index 31 | 99001 FORMAT (' *GETWND* ERROR FROM RDBLK OF RECORD',I5) 32 | ELSE 33 | C 34 | C TRANSFER WINDOW 35 | C 36 | wind(1) = xmin 37 | wind(2) = xmax 38 | wind(3) = ymin 39 | C 40 | wind(4) = ymax 41 | ENDIF 42 | C 43 | RETURN 44 | END 45 | -------------------------------------------------------------------------------- /PC-MOSS/src/GETXY.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE getxy(xm,alt) 2 | COMMON /parms / ps , psa(5) , lastm , lastalt , nextm , nextalt , 3 | & lastin , lastout 4 | COMMON /rundata/ xmmin , altmax , dmachc , daltc , nc , nrnosave , 5 | & itemid , idisp , ictsub 6 | LOGICAL nosave 7 | DATA smval/.00001/ 8 | fract = .5 9 | dps = psa(lastin+1) - psa(lastin) 10 | IF ( dps.NE.0.0 ) fract = (ps-psa(lastin))/dps 11 | IF ( lastin.EQ.2 ) THEN 12 | falt = fract 13 | fmach = 0. 14 | ELSEIF ( lastin.EQ.3 ) THEN 15 | falt = 1. 16 | fmach = fract 17 | ELSEIF ( lastin.EQ.4 ) THEN 18 | fmach = 1. 19 | falt = 1. - fract 20 | ELSE 21 | fmach = 1. - fract 22 | falt = 0. 23 | ENDIF 24 | alt = altmax - daltc*(falt+float(lastalt-1)) 25 | xm = xmmin + dmachc*(fmach+float(lastm-1)) 26 | IF ( abs(daltc).GT.smval ) alt = alt - daltc/2. 27 | xm = xm + dmachc/2. 28 | RETURN 29 | END 30 | -------------------------------------------------------------------------------- /PC-MOSS/src/GOFF.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE goff(ival,byte,iarray) 2 | c 3 | c get ival at the ipos (1 or 2) byte in iarray 4 | c 5 | c ival <=128 6 | c ipos 1 ot 2 7 | c 8 | c ccccccccccccccccccccccccccccccccccccccccccccc 9 | INTEGER iarray(1) , iword(2) , byte 10 | c 11 | ipos = 2 12 | jpos = byte/2 13 | IF ( mod(byte,2).NE.0 ) THEN 14 | ipos = 1 15 | jpos = jpos + 1 16 | ENDIF 17 | CALL byteit(iarray(jpos),iword) 18 | c 19 | ival = iword(ipos) 20 | c 21 | RETURN 22 | END 23 | -------------------------------------------------------------------------------- /PC-MOSS/src/GROPE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE grope(lg,boxg,nr,kgr,tgr,nlst,maxlst) 2 | COMMON /ippy / ippyy(3) , iofx , iofy , iofp , iofq 3 | $Include:'io.inc' 4 | $Include:'pqpnts.inc' 5 | C 6 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7 | C 8 | C SCANS A POLYGON LOOKING FOR CROSSINGS BY AN EDGE OF ANOTHER POLYGON. 9 | C CALLED BY INLIST. 10 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11 | C 12 | DIMENSION boxg(4) , kgr(2,1) 13 | REAL tgr(2,1) 14 | nnr = nr - 1 15 | DO l = 1 , nnr 16 | CALL spoints('P ',p,rl,(l+iofp),1) 17 | CALL spoints('P ',p,rl2,(l+1+iofp),1) 18 | CALL spoints('Q ',q,rl1,(l+iofq),1) 19 | CALL spoints('Q ',q,rl3,(l+1+iofq),1) 20 | c RL=P(L+IOFP) 21 | c RL2=P(L+1+IOFP) 22 | c RL1=Q(L+IOFQ) 23 | c RL3=Q(L+1+IOFQ) 24 | IF ( amin1(rl,rl2).LE.boxg(3) ) THEN 25 | IF ( amax1(rl,rl2).GE.boxg(1) ) THEN 26 | IF ( amin1(rl1,rl3).LE.boxg(4) ) THEN 27 | IF ( amax1(rl1,rl3).GE.boxg(2) ) THEN 28 | lr = l 29 | CALL criss(lg,lr,kgr,tgr,nlst,maxlst) 30 | ENDIF 31 | ENDIF 32 | ENDIF 33 | ENDIF 34 | ENDDO 35 | RETURN 36 | END 37 | -------------------------------------------------------------------------------- /PC-MOSS/src/GTB.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE gtb(ival,word,ipos) 2 | c 3 | c get ival at the ipos (1 or 2) byte in iword 4 | c 5 | c ival <=256 6 | c ipos 1 ot 2 7 | c 8 | c ccccccccccccccccccccccccccccccccccccccccccccc 9 | INTEGER word , iword(2) 10 | c 11 | CALL byteit(word,iword) 12 | c 13 | ival = iword(ipos) 14 | c 15 | RETURN 16 | END 17 | -------------------------------------------------------------------------------- /PC-MOSS/src/GTMAP.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE gtmap(icom,idd) 2 | C 3 | C RETURN MAPNAME FROM STRUCTURE TABEL 4 | C ************************************************************************ 5 | C FUNCTION: CHECK FOR VALID IDD 6 | C 7 | C PARAMETERS: ICOM - OUT - ACTIVE TABLE MAP NAME ASSOCIATED WITH IDD 8 | C IDD - IN - ACTIVE TABLE INDEX INTO ISTRCT 9 | C 10 | C************************************************************************* 11 | C 12 | $Include:'WHMAP.inc' 13 | C 14 | DIMENSION icom(10) 15 | C 16 | IF ( idd.GT.nstrct ) RETURN 17 | C 18 | C GET MAP NAME 19 | C 20 | kdd = idd 21 | DO i = 1 , 5 22 | icom(i) = 0 23 | icom(i+5) = 0 24 | icom(i) = istrct(kdd+2) 25 | kdd = kdd + 1 26 | ENDDO 27 | C 28 | RETURN 29 | END 30 | -------------------------------------------------------------------------------- /PC-MOSS/src/GWIND.INC: -------------------------------------------------------------------------------- 1 | COMMON /GWINDO/ BAND(3,50) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/HSTBARVL.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE hstbarvl(value,barbrk,barfrq,nbars,maptype,change) 2 | C********************************************************************** 3 | C 4 | C FIGURE OUT WHICH BAR CELL VALUE FALLS IN 5 | C LOGIC BRANCHES ON THE MAP TYPE 6 | C IF DESCRETE MAP INTERVALS HAVE BEEN ALTERED, FREQUENCY BIN CHECK 7 | C IS DIFFERENT 8 | C 9 | C********************************************************************** 10 | INTEGER nbars 11 | C 12 | REAL value 13 | REAL barfrq(100) 14 | REAL barbrk(100,2) 15 | C 16 | LOGICAL change 17 | C 18 | IF ( .NOT.((maptype.EQ.8) .OR. (change)) ) THEN 19 | C SO IF RANGES ARE INTEGERS, IE DESCRETE MAPS 20 | IF ( .NOT.(change) ) THEN 21 | index = aint(value-barbrk(1,1)+1) 22 | IF ( index.NE.0 ) THEN 23 | barfrq(index) = barfrq(index) + 1. 24 | ENDIF 25 | GOTO 100 26 | ENDIF 27 | ENDIF 28 | C 29 | C map is continuous or uneven interval 30 | DO i = 1 , nbars 31 | IF ( value.LE.barbrk(i,2) ) THEN 32 | IF ( value.GE.barbrk(i,1) ) THEN 33 | c WRITE(*,*) ' HBV2: MAX,MIN = ',BARBRK(I,1),BARBRK(I,2) 34 | barfrq(i) = barfrq(i) + 1. 35 | GOTO 100 36 | ENDIF 37 | ENDIF 38 | ENDDO 39 | C 40 | C 41 | C 42 | 100 CONTINUE 43 | RETURN 44 | END 45 | -------------------------------------------------------------------------------- /PC-MOSS/src/ICENTAR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE icentar(i,xcent,ycent,area1,island,nsland,iconv) 2 | DIMENSION island(*) 3 | $Include:'xypnts.500' 4 | DOUBLE PRECISION xj , xl , yj , yl 5 | DOUBLE PRECISION xmom , ymom , area2 6 | C 7 | xmom = 0.0 8 | ymom = 0.D0 9 | area2 = 0.D0 10 | C 11 | conv = 4046.856422 12 | IF ( iconv.EQ.1 ) conv = 43260. 13 | i = iabs(i) 14 | C 15 | ipoint = 1 16 | IF ( nsland.LT.1 ) ipoint = 0 17 | C 18 | DO j = 2 , i 19 | IF ( ipoint.NE.0 ) THEN 20 | IF ( j.EQ.island(ipoint) ) THEN 21 | ipoint = ipoint + 1 22 | IF ( ipoint.GT.nsland ) ipoint = 0 23 | GOTO 100 24 | ENDIF 25 | ENDIF 26 | l = j - 1 27 | CALL sspoints('X ',x,xll,l,1) 28 | CALL sspoints('X ',x,xjj,j,1) 29 | CALL sspoints('Y ',y,yll,l,1) 30 | CALL sspoints('Y ',y,yjj,j,1) 31 | xl = dble(xll) 32 | xj = dble(xjj) 33 | yl = dble(yll) 34 | yj = dble(yjj) 35 | xmom = xmom + (((xl*(xl+xj))+xj**2)*(yl-yj)) 36 | ymom = ymom + (((yl*(yl+yj))+yj**2)*(xl-xj)) 37 | area2 = area2 + ((xl+xj)*(yl-yj)) 38 | 100 ENDDO 39 | C 40 | xcent = sngl(xmom/(3.D0*area2)) 41 | ycent = sngl(ymom/(3.D0*area2)) 42 | ycent = abs(ycent) 43 | area2 = (dabs(area2/2.D0)) 44 | area1 = area2/dble(conv) 45 | C 46 | RETURN 47 | END 48 | -------------------------------------------------------------------------------- /PC-MOSS/src/IGETPTS.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE igetpts(nxy,k,n,uv,isw) 2 | COMMON /ippy / ipp(3) , iofx , iofy , iofp , iofq 3 | $Include:'xypnts.500' 4 | $Include:'pqpnts.500' 5 | C 6 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7 | C 8 | C GIVEN A BOUNDARY IN XY CONSISTING OF NXY POINTS, WE EXTRACT N POINTS 9 | C IN SEQUENCE STARTING WITH POINT NUMBER K, AND STORE THESE N POINTS IN 10 | C THE FIRST N POSITION S OF UV. SINCE XY IS A CLOSED BOUNDARY, THE N 11 | C SEQUENTIAL POINTS MAY PASS THROUGH THE LAST POSITION IN XY AND 12 | C CONTINUE IN THE BEGINNING OF XY. THIS WE HANDLE AUTOMATICALLY. 13 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 14 | C 15 | DIMENSION uv(2,1) 16 | IF ( n.LE.0 ) RETURN 17 | l = k 18 | IF ( l.EQ.0 ) l = nxy - 1 19 | DO j = 1 , n 20 | IF ( l.EQ.nxy ) l = 1 21 | IF ( isw.EQ.2 ) THEN 22 | CALL sspoints('P ',p,pliofp,l+iofp,1) 23 | CALL sspoints('Q ',q,qliofq,l+iofq,1) 24 | uv(1,j) = pliofp 25 | uv(2,j) = qliofq 26 | ELSE 27 | CALL sspoints('X ',x,xliofx,l+iofx,1) 28 | CALL sspoints('Y ',y,yliofy,l+iofy,1) 29 | uv(1,j) = xliofx 30 | uv(2,j) = yliofy 31 | ENDIF 32 | l = l + 1 33 | ENDDO 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/IGRIDF.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE igridf(icol,irow,ival) 2 | COMMON /io / nprnt , ioin 3 | COMMON /gridf / lugf , len , ibw 4 | COMMON /rundata/ xmin , ymin , dx , dy , ncols , nrows , nosave , 5 | & itemid , idisp , ictsub 6 | DIMENSION ival(1) 7 | C 8 | C READ 9 | C 10 | IF ( irow.GT.0 .AND. icol.GT.0 ) THEN 11 | C CELL = (FLOAT(IROW-1) * FLOAT(NCOLS)) + ICOL 12 | cell = ((irow-1)*ncols) + icol 13 | irecl = len*2 14 | CALL dsin(lugf,ival,cell,ier) 15 | C write(*,*) 'igridf: ival=',ival 16 | IF ( ier.NE.0 ) THEN 17 | C 18 | C ERROR RETURNS 19 | C 20 | C 21 | CALL anmode 22 | WRITE (nprnt,99001) irow , icol , ier 23 | 99001 FORMAT (' *IGRIDF* ERROR FROM DSIN ON ROW,COL',2I5, 24 | & ' ERROR',I5) 25 | STOP 26 | ENDIF 27 | ENDIF 28 | C 29 | RETURN 30 | END 31 | -------------------------------------------------------------------------------- /PC-MOSS/src/IGROPE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE igrope(lg,boxg,nr,kgr,tgr,nlst,maxlst) 2 | COMMON /ippy / ippyy(3) , iofx , iofy , iofp , iofq 3 | $Include:'io.inc' 4 | $Include:'pqpnts.500' 5 | C 6 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7 | C 8 | C SCANS A POLYGON LOOKING FOR CROSSINGS BY AN EDGE OF ANOTHER POLYGON. 9 | C CALLED BY INLIST. 10 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11 | C 12 | DIMENSION boxg(4) , kgr(2,1) 13 | REAL tgr(2,1) 14 | nnr = nr - 1 15 | DO l = 1 , nnr 16 | CALL sspoints('P ',p,rl,(l+iofp),1) 17 | CALL sspoints('P ',p,rl2,(l+1+iofp),1) 18 | CALL sspoints('Q ',q,rl1,(l+iofq),1) 19 | CALL sspoints('Q ',q,rl3,(l+1+iofq),1) 20 | c RL=P(L+IOFP) 21 | c RL2=P(L+1+IOFP) 22 | c RL1=Q(L+IOFQ) 23 | c RL3=Q(L+1+IOFQ) 24 | IF ( amin1(rl,rl2).LE.boxg(3) ) THEN 25 | IF ( amax1(rl,rl2).GE.boxg(1) ) THEN 26 | IF ( amin1(rl1,rl3).LE.boxg(4) ) THEN 27 | IF ( amax1(rl1,rl3).GE.boxg(2) ) THEN 28 | lr = l 29 | CALL icriss(lg,lr,kgr,tgr,nlst,maxlst) 30 | ENDIF 31 | ENDIF 32 | ENDIF 33 | ENDIF 34 | ENDDO 35 | RETURN 36 | END 37 | -------------------------------------------------------------------------------- /PC-MOSS/src/INGRD.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE ingrd(iparam,ner,widy,nec,widx,ymn,xmn) 2 | C*** THIS SUBROUTINE INPUTS DESCRIPTORS OF THE GRID OF POINTS 3 | C*** FROM TEMPORARY PARAMETER FILE CREATED BY MOSS ROUTINE KRIGIN1. 4 | C*** WRITTEN BY GEORGE HEINE, BLM DSC TO REPLACE ORIGINAL 5 | C*** STATPAC ROUTINE 'INGRID' BY W.D. GRUNDY 6 | INTEGER*2 name(16) 7 | REWIND (iparam) 8 | READ (iparam,IOSTAT=ier,ERR=100) (name(ii),ii=1,16) , nk , ner , 9 | & widy , nec , widx , ymn , xmn 10 | GOTO 200 11 | 100 CONTINUE 12 | WRITE (*,99001) ier 13 | 99001 FORMAT ('**ERROR*** COULD NOT READ FROM PARAMETER FILE ', 14 | & ' ERROR',I5) 15 | CLOSE (iparam) 16 | 200 CONTINUE 17 | RETURN 18 | END 19 | -------------------------------------------------------------------------------- /PC-MOSS/src/INITIAL.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE initial 2 | CC 3 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 4 | CC 5 | CC NAME : SUBROUTINE INITIAL 6 | CC 7 | CC FUNCTION : TO READ IN THE STATUS OF THE ASSOCIATED ATTRIBUTES DATA 8 | CC BASE. 9 | CC 10 | CC PARAMETERS : 11 | CC 12 | CC FILES : USES THE DATA BASE NAMED FILE.ATTRIBUTES. 13 | CC 14 | CC ROUTINES REQUIRED : SUBROUTINE WRBLK AND SUBROUTINE RDBLK 15 | CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 16 | COMMON /unit / chanel , atrbte , polygon , adress 17 | CC 18 | INTEGER chanel , atrbte , polygon , adress , record(128) 19 | CC 20 | adress = 203 21 | CC 22 | CC 23 | CC READ FROM LOCATION 1 OF THE DATA BASE TO RETRIVE THE NUMBER OF 24 | CC ATTRIBUTES( ATRBTE ) IN THE DATA BASE AND THE NUMBER OF 25 | CC POLYGONS( POLYGON ) IN EACH ATTRIBUTE SET. 26 | CC 27 | CALL rdblk(chanel,1,record,1,ier) 28 | CC 29 | atrbte = record(1) 30 | polygon = record(2) 31 | CC 32 | CC IF THE NUMBER OF ATTRIBUTES IS ZERO THEN RETURN, ELSE CALCULATE THE 33 | CC LOCATION( ADRESS ) IN THE DATA BASE WHERE THE NEXT SET OF POLYGON 34 | CC VALUES SHALL BE PLACED. 35 | CC 36 | IF ( atrbte.NE.0 ) THEN 37 | locate = atrbte + 1 38 | CALL rdblk(chanel,locate,record,1,ier) 39 | adress = record(86) + record(87) 40 | ENDIF 41 | CC 42 | RETURN 43 | END 44 | -------------------------------------------------------------------------------- /PC-MOSS/src/INTCHAR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE intchar(tval,ibuf,num) 2 | INTEGER jbuf(6) , ibuf(6) 3 | CHARACTER*6 cbuf 4 | WRITE (cbuf,'(f6.0)') tval 5 | k = 0 6 | DO l = 1 , 6 7 | IF ( cbuf(l:l).NE.' ' ) THEN 8 | k = k + 1 9 | jbuf(k) = ichar(cbuf(l:l)) 10 | ENDIF 11 | ENDDO 12 | num = k 13 | CALL packc(jbuf,ibuf,6) 14 | RETURN 15 | END 16 | -------------------------------------------------------------------------------- /PC-MOSS/src/INVWND.FOR: -------------------------------------------------------------------------------- 1 | FUNCTION invwnd(xpmin,xpmax,ypmin,ypmax,xwmin,xwmax,ywmin,ywmax) 2 | C 3 | C ************************************************************** 4 | C 5 | C I N T E G E R F U N C T I O N I N V W N D 6 | C FUNCTION: 7 | C POLYGON P IS CONTAINED IN THE MININUM 8 | C BOUNDING RECTANGLE DEFINED BY XPMIN,XPMAX,YPMIN,YPMAX 9 | C INSIDE THE VIEWING RECTANGLE DEFINED BY XWMIN,XWMAX, 10 | C YWMIN,YWMAX. INVWND IS RETURNED AS 1 11 | C IF THE POLYGON OR THE LINE IS INSIDE 12 | C THE VIEWING RECTANGLE AND AS 0 IF THE POLYGON OR THE 13 | C LINE IS OUTSIDE THE VIEWING RECTANGLE. 14 | C PARAMETERS: 15 | C XPMIN,YPMIN,XPMAX,YPMAX IN - MININUM BOUNDING 16 | C RECTANGLE VALUES. 17 | C XMIN,YMIN,XMAX,YMAX IN - VIEWING RECTANGLE 18 | C VALUES. 19 | C INVWND OUT - 1, IF POLYGON OR LINE IS INSIDE, 20 | C 0, IF POLYGON OR LINE IS OUTSIDE. 21 | C ROUTINES 22 | C CALLED: NONE. 23 | C **************************************************** 24 | C 25 | invwnd = 0 26 | IF ( xpmin.GT.xwmax ) RETURN 27 | IF ( xpmax.LT.xwmin ) RETURN 28 | IF ( ypmin.GT.ywmax ) RETURN 29 | IF ( ypmax.LT.ywmin ) RETURN 30 | C 31 | invwnd = 1 32 | C 33 | RETURN 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/IO.INC: -------------------------------------------------------------------------------- 1 | COMMON /IO/ NPRNT,IOIN 2 | C 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/JKGET.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkget(iunit,ir,chrid,loc,x,m,iy,n,iend,ierr) 2 | C 3 | C*** 4 | C*** THIS ROUTINE READS ONE STATPAC RECORD WITH THE QUALIFYING 5 | C*** CODES PACKED. 6 | C*** 7 | INTEGER*2 loc(4) 8 | INTEGER*2 ir , iy , iix , iiy 9 | DIMENSION x(99) , iy(99) 10 | CHARACTER*4 chrid(4) 11 | C 12 | iend = 0 13 | C write(*,*) 'jkget:' 14 | C write(*,*)IR,(CHRID(I),I=1,4),(LOC(I),I=1,4), 15 | C . X(1),X(2),X(3),IY(1) 16 | READ (iunit,ERR=100,END=100) ir , (chrid(i),i=1,4) , 17 | & (loc(i),i=1,4) , x(1) , x(2) , x(3) , 18 | & iy(1) 19 | GOTO 200 20 | 100 CONTINUE 21 | iend = 1 22 | 200 CONTINUE 23 | RETURN 24 | END 25 | -------------------------------------------------------------------------------- /PC-MOSS/src/JKPACK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkpack(chia,m,iy,n) 2 | C*** 3 | C*** THIS ROUTINE PACKS 5 QUALIFYING CODES INTO 1 4 | C*** TWO-BYTE WORD, OCCUPYING AS MANY AS NECESSARY TO 5 | C*** PACK M CODES. 6 | C*** CHIA - ARRAY OF UNPACKED CODES 7 | C*** M - NUMBER OF CODES CONTAINED IN ARRAY CHIA 8 | C*** IY - ARRAY OF PACKED CODES (N WORDS OF 5 CODES PER WORD) 9 | C*** N - NUMBER OF WORDS IN ARRAY IY CONTAINING PACKED CODES 10 | C*** 11 | DIMENSION iy(99) 12 | CHARACTER*1 chia(m) , ic(8) , icl(8) 13 | DATA ic/' ' , 'B' , 'L' , 'N' , 'G' , 'T' , 'H' , '*'/ 14 | DATA icl/' ' , 'b' , 'l' , 'n' , 'g' , 't' , 'h' , '*'/ 15 | n = (m+4)/5 16 | DO i = 1 , m 17 | DO j = 2 , 7 18 | IF ( chia(i).EQ.icl(j) ) THEN 19 | chia(i) = ic(j) 20 | GOTO 100 21 | ENDIF 22 | ENDDO 23 | 100 ENDDO 24 | n1 = 5 25 | DO i = 1 , n 26 | iy(i) = 0 27 | IF ( i.EQ.n ) THEN 28 | n1 = 5*(1-n) + m 29 | ENDIF 30 | DO j = 1 , n1 31 | kx = 0 32 | DO k = 1 , 8 33 | IF ( chia(5*(i-1)+j).EQ.ic(k) ) THEN 34 | kx = k 35 | ENDIF 36 | ENDDO 37 | iy(i) = 8*iy(i) + kx - 1 38 | ENDDO 39 | ENDDO 40 | RETURN 41 | END 42 | -------------------------------------------------------------------------------- /PC-MOSS/src/JKPTLS.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkptls(iunit,ir,chrid,loc,x,chia,m) 2 | C*** 3 | C*** THIS ROUTINE PACKS THE QUALIFYING CODES AND WRITES THE ONE 4 | C*** STATPAC RECORD. 5 | C*** 6 | INTEGER*4 loc 7 | DIMENSION loc(2) , x(m) , iy(99) 8 | CHARACTER*4 chrid(4) 9 | CHARACTER*1 chia(m) 10 | CALL jkpack(chia,m,iy,n) 11 | CALL jkput(iunit,ir,chrid,loc,x,m,iy,n) 12 | RETURN 13 | END 14 | -------------------------------------------------------------------------------- /PC-MOSS/src/JKPTUA.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkptua(iunit,ir,x,chia,m) 2 | C*** 3 | C*** THIS ROUTINE WRITES STATPAC RECORDs WITH THE QUALIFYING 4 | C*** CODES PACKED. this version is used by ss2dgrid for the 5 | c*** output of tempkrig.ugr. 6 | c*** 7 | c*** modified: s.k. goodman, autometric, apr 88, pc moss 8 | C*** 9 | C*** 10 | INTEGER*4 loc 11 | DIMENSION loc(2) , x(m) , iy(99) 12 | CHARACTER*4 chrid(4) 13 | CHARACTER*1 chia(m) 14 | CALL jkpack(chia,m,iy,n) 15 | CALL jkpua(iunit,ir,x,m,iy,n) 16 | RETURN 17 | END 18 | -------------------------------------------------------------------------------- /PC-MOSS/src/JKPUA.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkpua(iunit,ir,x,m,iy,n) 2 | C*** 3 | C*** THIS ROUTINE WRITES ONE STATPAC RECORD WITH THE QUALIFYING 4 | C*** CODES PACKED. this version is used by ss2dgrid for the 5 | c*** output of tempkrig.ugr. 6 | c*** 7 | c*** modified: s.k. goodman, autometric, apr 88, pc moss 8 | C*** 9 | INTEGER*4 loc 10 | DIMENSION x(m) , iy(99) , loc(2) 11 | CHARACTER*4 chrid(4) 12 | c WRITE(*,*) 'JKPUA: IR,M,N,X,IY= ',IR,M,N, (X(IZ),IZ=1,M), 13 | c . (IY(IZ),IZ=1,N) 14 | WRITE (iunit,ERR=100,IOSTAT=ier) ir , (x(i),i=1,m) , (iy(i),i=1,n) 15 | RETURN 16 | 100 CONTINUE 17 | WRITE (*,*) '*** JKPUA ERROR =' , ier 18 | RETURN 19 | END 20 | -------------------------------------------------------------------------------- /PC-MOSS/src/JKPUT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkput(iunit,ir,chrid,loc,x,m,iy,n) 2 | C MODIFIED: S.K. GOODMAN, AUTOMETRIC, APR 88 PC-MESS 3 | C*** 4 | C*** THIS ROUTINE WRITES ONE STATPAC RECORD WITH THE QUALIFYING 5 | C*** CODES PACKED. 6 | C*** 7 | INTEGER*2 loc(4) 8 | DIMENSION x(99) , iy(99) 9 | CHARACTER*4 chrid(4) 10 | C 11 | WRITE (iunit) ir , (chrid(i),i=1,4) , (loc(i),i=1,4) , x(1) , 12 | & x(2) , x(3) , iy(1) 13 | C write(*,*) 'jkput:' 14 | C write(*,*)IR,(CHRID(I),I=1,4),(LOC(I),I=1,4), 15 | C . X(1),X(2),X(3),IY(1) 16 | RETURN 17 | END 18 | -------------------------------------------------------------------------------- /PC-MOSS/src/JKUNPK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE jkunpk(chia,m,iy,n) 2 | C*** 3 | C*** THIS ROUTINE UNPACKS THE QUALIFYING CODES 4 | C*** CONTAINED IN ARRAY IY INTO ARRAY CHIA. 5 | C*** ARGUMENTS THE SAME AS IN SUBROUTINE JKPACK. 6 | C*** 7 | DIMENSION iy(99) 8 | CHARACTER*1 chia(m) , ic(8) 9 | DATA ic/' ' , 'B' , 'L' , 'N' , 'G' , 'T' , 'H' , '*'/ 10 | DO i = 1 , n 11 | n1 = 5 12 | IF ( i.EQ.n ) THEN 13 | n1 = 5*(1-n) + m 14 | ENDIF 15 | DO j = 1 , n1 16 | kx = mod(iy(i),8) + 1 17 | chia(5*(i-1)+(n1+1-j)) = ic(kx) 18 | iy(i) = iy(i)/8 19 | ENDDO 20 | ENDDO 21 | RETURN 22 | END 23 | -------------------------------------------------------------------------------- /PC-MOSS/src/KRIG4P.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE krig4p(b,ns,ier) 2 | C*** THIS SUBROUTINE OBTAINS THE KRIGING WEIGHTS FOR POINT-KRIGING 3 | C*** THIS SUBROUTINE IS A MODIFICATION OF ONE WRITTEN BY 4 | C*** J.A. SKRIVAN AND M.A. KARLINGER OF THE USGS. 5 | C*** SUBPROGRAMS REQUIRED: MAXCOR,PSET,COVAR4,TERM,DOLITL 6 | CHARACTER*8 iholid 7 | C CHARACTER*4 IVIB 8 | INTEGER*4 ivib 9 | INTEGER*2 ex , ey 10 | $INCLUDE: 'MYST.INC' 11 | COMMON /cov4 / p(1830) , id(60) , w(60) , ihol(51) , r(60) 12 | DIMENSION b(2) , p1(2) 13 | ntot = ns + nt 14 | C*** GET MAXIMUM COORDINATES OF DRILL HOLES FOR SCALING PURPOSES 15 | C*** IF NT=1, THERE IS NO NEED FOR CALLING MAXCOR 16 | xmax = 0. 17 | ymax = 0. 18 | IF ( nt.NE.1 ) THEN 19 | CALL maxcor(xmax,ymax,ns) 20 | ENDIF 21 | C*** SET UP LOWER TRIANGULAR MATRIX OF COVARIANCES AND DRIFT TERMS 22 | CALL pset4(ns,xmax,ymax) 23 | C*** SET UP RIGHT HAND SIDE 24 | DO i = 1 , ns 25 | j = ihol(i) 26 | p1(1) = xe(j) 27 | p1(2) = yn(j) 28 | r(i) = covar4(b,p1) 29 | ENDDO 30 | k = ns + 1 31 | DO i = k , ntot 32 | m = i - ns 33 | r(i) = term(b(1),ex(m),b(2),ey(m),xmax,ymax) 34 | ENDDO 35 | C*** GET WEIGHTS WHICH WILL BE STORED IN ARRAY W 36 | CALL dolitl(ntot,0,ier) 37 | RETURN 38 | END 39 | -------------------------------------------------------------------------------- /PC-MOSS/src/LASTC.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE lastc(iarray,last) 2 | c 3 | c finds the last character of an array 4 | c 5 | c input : last = number of words in iarray 6 | c 7 | ccccccccccccccccccccccccccccccccccccccccccccccccccccc 8 | c 9 | INTEGER iarray(1) , iword(2) 10 | c 11 | in = last 12 | last = last*2 13 | c 14 | DO l = in , 1 , -1 15 | CALL byteit(iarray(l),iword) 16 | DO k = 1 , 2 17 | IF ( iword(k).NE.32 .AND. iword(k).NE.0 ) GOTO 100 18 | last = last - 1 19 | ENDDO 20 | ENDDO 21 | c 22 | 100 CONTINUE 23 | RETURN 24 | END 25 | -------------------------------------------------------------------------------- /PC-MOSS/src/LDCMD.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE ldcmd 2 | 3 | $Include:'GLOBAL.inc' 4 | 5 | 6 | C * Add menu suffix to end of program name and find file. 7 | 8 | CALL addend(filenm,12,'MNU',3) 9 | C 10 | OPEN (srchio,STATUS='OLD',FILE=filenm,ERR=300) 11 | 12 | ionum = nulcmd 13 | 100 CONTINUE 14 | READ (srchio,99001,END=200) rvrsn(ionum+1) , ctype(ionum+1) , 15 | & imenu(ionum+1) 16 | 99001 FORMAT (F5.2,A1,A80) 17 | C 18 | C get length of that menue line 19 | C 20 | len1 = 0 21 | CALL lstchr(imenu(ionum+1),80,len1) 22 | imenu(ionum+1)(80:80) = char(len1) 23 | C * Get identity from first card. 24 | 25 | IF ( ctype(ionum+1).EQ.'W' ) THEN 26 | whoiam = imenu(ionum+1) 27 | vrsion = rvrsn(ionum+1) 28 | ENDIF 29 | IF ( ctype(ionum+1).NE.'W' ) THEN 30 | ionum = ionum + 1 31 | ENDIF 32 | C 33 | IF ( ionum.LT.128 ) GOTO 100 34 | 35 | C * Close file if found. 36 | 37 | 200 CONTINUE 38 | CLOSE (srchio) 39 | 40 | C * No file found. There is no warning given. 41 | 42 | 300 CONTINUE 43 | retlbl = 0 44 | RETURN 45 | END 46 | -------------------------------------------------------------------------------- /PC-MOSS/src/LENGTH.FOR: -------------------------------------------------------------------------------- 1 | C ***************************************************************************** 2 | C 3 | C P R O G R A M T A B L E 4 | C FUNCTION: 5 | C THIS ROUTINE RE-STATE MOSS RUNTIME PARAMETERS AND EXECUTE THE 6 | C AREA, PERIMETER, LENGTH, AND FREQUENCY COMMANDS 7 | C ***************************************************************************** 8 | PROGRAM length 9 | C 10 | $Include:'dbchan.inc' 11 | $Include:'mfast.inc' 12 | COMMON /fls / iunit , ifile(5) 13 | $Include:'strng.inc' 14 | C 15 | C FIRST READ IN THE COMMON BLOCKS 16 | C 17 | CALL initl(ier) 18 | IF ( ier.NE.0 ) STOP 19 | C 20 | C OPEN POINTER FILE 21 | C 22 | CALL openf(icdcfa,idesfa,1,512,2,ier) 23 | IF ( ier.NE.0 ) THEN 24 | C 25 | C ERROR RETURNS 26 | C 27 | WRITE (*,*) ' Could not properly open file' 28 | ELSE 29 | C 30 | C SET WINDOW 31 | C 32 | CALL setwnd 33 | C 34 | C CALL TABLE GENERATION ROUTINE 35 | C 36 | icard(80) = -2 37 | CALL tabara(lines,icard(80)) 38 | ENDIF 39 | C 40 | lines = lines + 2 41 | CLOSE (icdcfa,IOSTAT=ier) 42 | END 43 | -------------------------------------------------------------------------------- /PC-MOSS/src/LINKUP.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE linkup(ichan,index,nrecs,ibuff,ioff) 2 | C 3 | C *************************************************************** 4 | C 5 | C S U B R O U T I N E L I N K U P 6 | C 7 | C FUNCTION: FOLLOW A LINKED LIST TO COMPLETION 8 | C 9 | C PARAMETERS: 10 | C ICHAN IN - DATA CHANNEL ON WHICH MAP FILE RESIDES 11 | C INDEX IN - HEAD OF LINKED LIST 12 | C NRECS IN - NUMBER OF ENTRIES IN LIST 13 | C IBUFF IN - WORK SPACE 14 | C IOFF IN - LOCATION OF LINK FIELD IN RECORD 15 | C 16 | C **************************************************************** 17 | C 18 | COMMON /pntfet/ npoint 19 | COMMON /io / nprnt , ioin 20 | DIMENSION ibuff(128) 21 | C 22 | C STORE POINTER 23 | C 24 | ipoint = index 25 | DO i = 1 , nrecs 26 | CALL rdblk(ichan,ipoint,ibuff,1,ier) 27 | npoint = npoint + 1 28 | CALL putfast(npoint,ibuff(15),ipoint,ibuff(24),ipoint,ipoint, 29 | & ier) 30 | IF ( ier.NE.0 ) WRITE (nprnt,99001) npoint , ier 31 | ipoint = ibuff(ioff) 32 | ENDDO 33 | C 34 | C ERROR RETURN 35 | C 36 | 99001 FORMAT (' *LINKUP* ERROR FROM PUTFAST OF RECORD',I5,' ERROR',I5) 37 | C 85040 FORMAT(' *LINKUP* ERROR FROM OPEN OF POINT.DT ERROR',I5) 38 | RETURN 39 | END 40 | -------------------------------------------------------------------------------- /PC-MOSS/src/LODMNU.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine SetCmd gives the basic commands available to every program. 2 | 3 | SUBROUTINE lodmnu 4 | 5 | $Include:'GLOBAL.inc' 6 | 7 | 8 | C * The menu is given in it's full form unless SysLevel = .True., in which 9 | C case, only a simple prompt ('*') is given. 10 | 11 | C# Assign program file name. 12 | filenm = ' ' 13 | DO l = 1 , 8 14 | IF ( whoiam(l:l).NE.' ' ) THEN 15 | filenm(l:l) = whoiam(l:l) 16 | cstart = l 17 | ENDIF 18 | ENDDO 19 | C# Load user commands to memory. 20 | CALL ldcmd 21 | RETURN 22 | END 23 | -------------------------------------------------------------------------------- /PC-MOSS/src/LSTCHR.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine LSTCHR locates the last filled position in a given array. 2 | 3 | SUBROUTINE lstchr(array,length,index) 4 | 5 | C# Length = the total length or the length of the portion to be checked. 6 | INTEGER length 7 | C# Array = the array to check. 8 | CHARACTER*80 array 9 | C# Index = the first blank byte in the array. 10 | INTEGER index 11 | 12 | C * While ( Array(Index) .ne. ' ' ) Repeat. 13 | 14 | index = length 15 | 100 CONTINUE 16 | index = index - 1 17 | IF ( index.NE.1 ) THEN 18 | IF ( array(index:index).EQ.' ' ) GOTO 100 19 | index = index + 1 20 | ENDIF 21 | RETURN 22 | END 23 | -------------------------------------------------------------------------------- /PC-MOSS/src/MAPNAME.INC: -------------------------------------------------------------------------------- 1 | 2 | COMMON /MAPNAME/ NAME(25) 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/MATCH2.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE match2(iar1,iar2,nword,kword,iflag) 2 | C ********************************************************* 3 | C 4 | C ROUTINE SMATCH 5 | C 6 | C CHECK FOR MATCH OF TWO CHARACTER STRINGS 7 | C 8 | C INPUT PARAMTERS- 9 | C 10 | C (IAR1,IARR2) - ARRAYS CONTAINING TWO CHARACTER STRINGS 11 | C TO COMPARE 12 | C NWORD - NUMBER OF CHARACTERS IN IARR1 13 | C KWORD - NUMBER OF CHARACTERS IN IARR2 14 | C IFLAG - 0 IF NO MATCH, 1 IF MATCH 15 | C 16 | C ************************************************************ 17 | C 18 | DIMENSION iar1(nword) , iar2(kword) 19 | LOGICAL mcomp 20 | iflag = 0 21 | jword = kword - nword + 1 22 | DO i = 1 , jword 23 | IF ( .NOT.(mcomp(iar1(1),'+',1,ier)) ) THEN 24 | IF ( iar2(i).NE.iar1(1) ) GOTO 100 25 | ENDIF 26 | mn = i - 1 27 | DO kn = 1 , nword 28 | mn = mn + 1 29 | IF ( mn.GT.kword ) RETURN 30 | IF ( .NOT.(mcomp(iar1(kn),'+',1,ier)) ) THEN 31 | IF ( iar1(kn).NE.iar2(mn) ) GOTO 100 32 | ENDIF 33 | ENDDO 34 | iflag = 1 35 | GOTO 200 36 | 100 ENDDO 37 | C 38 | 200 CONTINUE 39 | RETURN 40 | END 41 | -------------------------------------------------------------------------------- /PC-MOSS/src/MAXCOR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE maxcor(xmax,ymax,ns) 2 | C*** COMPUTES MAXIMUM VALUES OF XE AND YN IN DATA SET 3 | C*** THIS SUBROUTINE WAS WRITTEN BY W.D. GRUNDY, JANUARY, 1980 4 | $INCLUDE: 'MYST.INC' 5 | CHARACTER*8 iholid 6 | C CHARACTER*4 IVIB 7 | INTEGER*4 ivib 8 | INTEGER*2 ex , ey 9 | COMMON /cov4 / p(1830) , id(60) , w(60) , ihol(51) , r(60) 10 | xmax = xe(ihol(1)) 11 | ymax = yn(ihol(1)) 12 | DO i = 2 , ns 13 | m = ihol(i) 14 | IF ( xmax.LT.xe(m) ) THEN 15 | xmax = xe(m) 16 | ENDIF 17 | IF ( ymax.LT.yn(m) ) THEN 18 | ymax = yn(m) 19 | ENDIF 20 | ENDDO 21 | RETURN 22 | END 23 | -------------------------------------------------------------------------------- /PC-MOSS/src/MCHEK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE mchek(icom,ifil,nents,itype,ier) 2 | C**************************************************************************** 3 | C FUNCTION: CHECK ALL OPEN .DT FILES FOR OCCURENCE OF A MAP NAME 4 | C 5 | C PARAMETERS: ICOM IN - THE MAP FILE NAME 6 | C IFIL OUT - 1 IF FILE FOUND IN MASTER.DT 7 | C 2 IF FILE FOUND IN POLYGON.DT 8 | C NENTS OUT - NUMBER OF ENTRIES 9 | C ITYPE OUT - TYPE OF MAP 10 | C IER OUT - 11 | C**************************************************************************** 12 | C 13 | C 14 | $Include:'DBCHAN.inc' 15 | $Include:'DNAMES.inc' 16 | C 17 | DIMENSION icom(12) 18 | LOGICAL scomp 19 | C 20 | ifil = 0 21 | C 22 | IF ( scomp(nmaps,icom,scale,nents,itype,ier,icwork) ) ifil = 2 23 | IF ( ifil.NE.2 ) THEN 24 | C 25 | IF ( mast(1).NE.0 ) THEN 26 | IF ( scomp(nmaps,icom,scale,nents,itype,ier,icmast) ) 27 | & ifil = 1 28 | ENDIF 29 | ENDIF 30 | C 31 | C Zero out any error that SCOMP might have returned 32 | ier = 0 33 | C 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/MCOMP.FOR: -------------------------------------------------------------------------------- 1 | LOGICAL FUNCTION mcomp(string,templat,nchars,ier) 2 | INTEGER string(nchars) 3 | CHARACTER*(*) templat 4 | C 5 | C FUNCTION - MOSS STRING COMPARE 6 | ier = 0 7 | C 8 | mcomp = .TRUE. 9 | C 10 | DO i = 1 , nchars 11 | IF ( string(i).NE.ichar(templat(i:i)) ) mcomp = .FALSE. 12 | ENDDO 13 | C 14 | RETURN 15 | END 16 | -------------------------------------------------------------------------------- /PC-MOSS/src/MCOMP1.FOR: -------------------------------------------------------------------------------- 1 | LOGICAL FUNCTION mcomp1(string,templat,nchars,ier) 2 | C************************************************************** 3 | C FUNCTION - MOSS STRING COMPARE (INCOMING IS PACKED) 4 | C ************************************************************* 5 | INTEGER string(*) , wrk(80) 6 | CHARACTER*20 templat 7 | C 8 | DO l = 1 , nchars 9 | wrk(l) = string(l) 10 | ENDDO 11 | CALL unpack(wrk,nchars) 12 | mcomp1 = .TRUE. 13 | C 14 | DO i = 1 , nchars 15 | IF ( wrk(i).NE.ichar(templat(i:i)) ) mcomp1 = .FALSE. 16 | ENDDO 17 | C 18 | RETURN 19 | END 20 | -------------------------------------------------------------------------------- /PC-MOSS/src/MCOMPH.FOR: -------------------------------------------------------------------------------- 1 | LOGICAL FUNCTION mcomph(string,templat,nchars,ier) 2 | INTEGER string(nchars) 3 | INTEGER templat(*) 4 | C 5 | C FUNCTION - MOSS STRING COMPARE 6 | C 7 | C PROGRAMMED BY CARL REED, AUTOMETRIC INC, JUNE 1982 8 | ier = 0 9 | C 10 | mcomph = .TRUE. 11 | C 12 | DO i = 1 , nchars 13 | IF ( string(i).NE.templat(i) ) mcomph = .FALSE. 14 | ENDDO 15 | C 16 | RETURN 17 | END 18 | -------------------------------------------------------------------------------- /PC-MOSS/src/MDYHMS.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE mdyhms(mon,iday,iyr,ihr,min,isec,i100) 2 | C Gets date and time from system routines 3 | INTEGER*2 mon , iday , iyr , ihr , min , isec , i100 4 | INTEGER*2 idate(3) , itime(3) 5 | CALL getdat(iyr,mon,iday) 6 | CALL gettim(ihr,min,isec,i100) 7 | C 8 | RETURN 9 | END 10 | -------------------------------------------------------------------------------- /PC-MOSS/src/MERSUB.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE mersub(title1,title2,isub) 2 | C 3 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 | C 5 | C NAME: M E R S U B 6 | C 7 | C FUNCTION: THIS ROUTINE CREATES A MERGED SUBJECT NAME FROM 8 | C THE EQUAL PORTIONS OF TWO TITLES 9 | C 10 | C PARAMETERS: 11 | C OUTPUT: 12 | C ISUB = ARRAY OF 15 WORDS OF PACKED CHAR. CREATED FROM 13 | C THE FIRST 7 WORDS FROM TITLE1 AND THE FIRST 8 14 | C WORDS FROM TITLE2 IN THAT RESPECTIVE ORDER 15 | C 16 | C LOCAL VARIABLES: 17 | C I = COUNTER FOR A LOOP 18 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 19 | C 20 | INTEGER title1(1) , title2(1) , isub(1) , i 21 | C 22 | DO i = 1 , 15 23 | isub(i) = (' ') 24 | ENDDO 25 | DO i = 1 , 7 26 | isub(i) = title1(i) 27 | isub(i+7) = title2(i) 28 | ENDDO 29 | C ENDDO 30 | C 31 | isub(15) = title2(8) 32 | C 33 | RETURN 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/MFAST.INC: -------------------------------------------------------------------------------- 1 | COMMON /MFAST/ IFBUFF(256),INCORE,IWTRN,IFCHAN 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/MNVAR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE mnvar(ns,blkvar,gr,varkg) 2 | C*** THIS SUBROUTINE COMPUTES THE KRIGING MEAN AND VARIANCE 3 | C*** OF A BLOCK OF GROUND OR OF A POINT. 4 | C*** IF CALL IS FROM SS2DXVAL OR SS2DGRID, THE VARIABLE BLKVAR IN THIS 5 | C*** SUBROUTINE REPRESENTS THE VARIOGRAM SILL VALUE. 6 | C*** THIS SUBROUTINE WAS WRITTEN BY W.D. GRUNDY, JANUARY, 1980 7 | $INCLUDE: 'MYST.INC' 8 | CHARACTER*8 iholid 9 | C CHARACTER*4 IVIB 10 | INTEGER*4 ivib 11 | INTEGER*2 ex , ey 12 | COMMON /cov4 / p(1830) , id(60) , w(60) , ihol(51) , r(60) 13 | C*** KRIGED VALUE WILL BE STORED IN GR 14 | ag = 0. 15 | gr = 0. 16 | ersum = 0. 17 | DO l = 1 , ns 18 | ll = ihol(l) 19 | ag = ag + r(l)*w(l) 20 | gr = gr + gd(ll)*w(l) 21 | C IF(ERMEAS(LL)) 10,20,10 22 | C 10 ERSUM=ERSUM+ERMEAS(LL)*W(L)**2 23 | ENDDO 24 | C*** GET PART OF KRIGING VARIANCE DUE TO DRIFT 25 | drfsum = 0. 26 | ns1 = ns + 1 27 | ntot = ns + nt 28 | DO l = ns1 , ntot 29 | drfsum = drfsum + r(l)*w(l) 30 | ENDDO 31 | C*** KRIGING VARIANCE IS : 32 | varkg = blkvar - ag - drfsum + ersum 33 | RETURN 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/MOVXR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE movxr(ires,ii,ngg,iofx,isw) 2 | COMMON /vals / tgr(2,200) 3 | $Include:'xypnts.500' 4 | $Include:'rspnts.500' 5 | $Include:'xrxr.500' 6 | $Include:'xyxy.500' 7 | DIMENSION ires(1) 8 | ic = 2839 9 | kc = 0 10 | istar = ires(ii) 11 | istop = ires(ii+1) - 1 12 | istar = iabs(istar) 13 | istop = iabs(istop) 14 | DO i = istar , istop 15 | kc = kc + 1 16 | CALL sspoints('XR',xr,xrici21,(ic+i*2-1),1) 17 | CALL sspoints('XR',xr,xrici2,(ic+i*2),1) 18 | IF ( isw.EQ.3 ) THEN 19 | ngg = ngg + 1 20 | c xy1(ngg)=xr(ic+i*2-1) 21 | c xy2(ngg)=xr(ic+i*2) 22 | CALL sspoints('X1',xy1,xrici21,ngg,2) 23 | CALL sspoints('X2',xy2,xrici2,ngg,2) 24 | ELSEIF ( isw.EQ.2 ) THEN 25 | c r(kc)=xr(ic+i*2-1) 26 | c s(kc)=xr(ic+i*2) 27 | CALL sspoints('R ',r,xrici21,kc,2) 28 | CALL sspoints('S ',s,xrici2,kc,2) 29 | ELSE 30 | c x(iofx+kc)=xr(ic+i*2-1) 31 | c y(iofx+kc)=xr(ic+i*2) 32 | CALL sspoints('X ',x,xrici21,(iofx+kc),2) 33 | CALL sspoints('Y ',y,xrici2,(iofx+kc),2) 34 | ENDIF 35 | ENDDO 36 | C 37 | IF ( isw.EQ.3 ) RETURN 38 | ngg = istop - istar + 1 39 | C 40 | RETURN 41 | END 42 | -------------------------------------------------------------------------------- /PC-MOSS/src/MYST.INC: -------------------------------------------------------------------------------- 1 | COMMON /MYST/ NEST,C0,C(5),AVALU(5),ANGLE(5),AFH(5), 2 | 1SILL,ITYPE(5),SLOPE(5),AISI (5),BISI(5),CISI(5), 3 | 2NT,EX(10),EY(10),COEF(10), 4 | 3YN(5000),XE(5000),GD(5000), 5 | 4IPT,IOUT,IPR,NHOL,MAXH,IVIB(2,99),ILIST 6 |  -------------------------------------------------------------------------------- /PC-MOSS/src/OPEN.FOR: -------------------------------------------------------------------------------- 1 | PROGRAM open 2 | c 3 | c function = to open an alternative master project directory and 4 | c master database, and store the name and path in mast() 5 | c 6 | c 7 | c get initial settings 8 | c 9 | $Include:'SPAWN.INC' 10 | INTEGER*2 system 11 | OPEN (UNIT=69,FILE='ZZ000000.DT',STATUS='UNKNOWN') 12 | WRITE (69,*) 'scratch' 13 | CLOSE (UNIT=69,IOSTAT=ier) 14 | i = system('DIR *.DT >ZZ000000.DT'//char(0)) 15 | ier = 99 16 | CALL initl(ier) 17 | IF ( ier.NE.0 ) THEN 18 | j = system('DEL ZZ000000.DT'//char(0)) 19 | STOP ' ' 20 | ENDIF 21 | c 22 | CALL outcm 23 | j = system('DEL ZZ000000.DT'//char(0)) 24 | END 25 | -------------------------------------------------------------------------------- /PC-MOSS/src/PACKC.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE packc(in,iout,nwords) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E P A C K C 6 | C FUNCTION: 7 | C THIS ROUTINE PACKS TWO CHARACTERS PER VARIABLE. 8 | C PARAMETERS: 9 | C IN IN - THE ARRAY OF CHARACTERS TO BE PACKED. 10 | C IOUT OUT - THE ARRAY OF PACKED CHARACTERS. 11 | C NWORDS IN - THE IN ARRAY SIZE. 12 | C ROUTINES 13 | C CALLED: ISHFT. 14 | C 15 | C ***************************************************************************** 16 | C 17 | DIMENSION in(nwords) , iout(1) 18 | LOGICAL master 19 | C 20 | C FUNCTION - PACK TWO CHARS PER WORD 21 | C 22 | iword = 0 23 | C 24 | C test if first char neg. if yes may be a master dir filename 25 | IF ( in(1).LT.0 ) master = .TRUE. 26 | C 27 | DO i = 1 , nwords , 2 28 | iword = iword + 1 29 | iout(iword) = 0 30 | ilch = iabs(in(i)) 31 | irch = ishft(in(i+1),8) 32 | iout(iword) = ilch + irch 33 | 34 | ENDDO 35 | C 36 | IF ( master ) THEN 37 | iout(1) = (-iout(1)) 38 | master = .FALSE. 39 | ENDIF 40 | RETURN 41 | END 42 | -------------------------------------------------------------------------------- /PC-MOSS/src/PARAMS.INC: -------------------------------------------------------------------------------- 1 | PARAMETER ( NAMELEN = 10 ) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/PARSE.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine PARSE parses a line of text, moving the pointer to the initial 2 | C position for the "next" word on each successive call, until there are no 3 | C new words. 4 | 5 | SUBROUTINE parse(answer,length,pointer,error) 6 | 7 | C# Length = maximum length of response array to be searched. 8 | INTEGER length 9 | C# Answer = The text line to be parsed. 10 | CHARACTER*80 answer 11 | C# Pointer = Initial position of current word to be processed. 12 | INTEGER pointer 13 | C# Error = Variable to hold logical error status on return (.True./.False.). 14 | LOGICAL error 15 | 16 | C * Initialize entry conditions. 17 | 18 | error = .FALSE. 19 | 20 | C * Now do something with the text line passed in. 21 | 22 | IF ( length.GT.0 ) THEN 23 | CALL fstchr(answer,length,pointer) 24 | ENDIF 25 | 26 | IF ( pointer.EQ.0 ) error = .TRUE. 27 | 28 | RETURN 29 | END 30 | -------------------------------------------------------------------------------- /PC-MOSS/src/PEN.FOR: -------------------------------------------------------------------------------- 1 | BLOCKDATA pen 2 | COMMON /select/ imaps , isub(31) , iact(5,11) 3 | COMMON /pthkpp/ xnew1 , ynew1 , xnew2 , ynew2 , kpmap 4 | COMMON /dimen / x1 , y1 , x2 , y2 , xln , yln , scale , fact , 5 | & x0 , y0 6 | DATA iact/'AL' , 'L ' , ' ' , ' ' , ' ' , 'SU' , 'BJ' , 'EC' , 7 | & 'TS' , ' ' , 'IT' , 'EM' , 'S ' , ' ' , ' ' , 'AT' , 8 | & 'TR' , 'IB' , 'UT' , 'E ' , 'EL' , 'EV' , 'AT' , 'IO' , 9 | & 'N ' , 'FR' , 'OM' , ' ' , ' ' , ' ' , 'SI' , 'ZE' , 10 | & ' ' , ' ' , ' ' , 'CO' , 'NT' , 'IG' , 'UI' , 'TY' , 11 | & 'SA' , 'MP' , 'LE' , ' ' , ' ' , 'PI' , 'P ' , ' ' , 12 | & ' ' , ' ' , '??' , '??' , '??' , '??' , '? '/ 13 | C 14 | 15 | C 16 | DATA kpmap/0/ 17 | DATA fact/1.0/ 18 | END 19 | -------------------------------------------------------------------------------- /PC-MOSS/src/PENASS.FOR: -------------------------------------------------------------------------------- 1 | C*********************************************************************** 2 | C NAME = CONTAINS 10 CHARACTERS (5 WORDS) OF NAME FOR QUESTION 3 | C IPEN = RETURNED PEN TYPE (0,1,2,3...8) 4 | C*********************************************************************** 5 | SUBROUTINE penass(name,ipen) 6 | C COMMON /CHANL/ IO(40) 7 | DIMENSION name(5) 8 | C 9 | 100 CONTINUE 10 | WRITE (*,99001) (name(k),k=1,5) 11 | 99001 FORMAT (' Enter pen position to plot the ',5A2,' [0,1,2,...8] '\) 12 | CALL readin(ipenn,1,is,ie) 13 | CALL inum(ipenn,ipen,is) 14 | IF ( ipen.GE.0 .AND. ipen.LE.8 ) RETURN 15 | WRITE (*,99002) 16 | 99002 FORMAT ('ILLEGAL PEN TYPE -- TRY AGAIN') 17 | GOTO 100 18 | END 19 | -------------------------------------------------------------------------------- /PC-MOSS/src/PENBLK.FOR: -------------------------------------------------------------------------------- 1 | Block data pen 2 | COMMON /SELECT/ IMAPS,ISUB(31),IACT(5,11) 3 | common /pthkpp/xnew1,ynew1,xnew2,ynew2,kpmap 4 | common /dimen/x1,y1,x2,y2,xln,yln,scale,fact,x0,y0 5 | DATA IACT/2HAL,2HL ,2H ,2H ,2H , 6 | 2 2HSU,2HBJ,2HEC,2HTS,2H , 7 | 3 2HIT,2HEM,2HS ,2H ,2H , 8 | 4 2HAT,2HTR,2HIB,2HUT,2HE , 9 | 5 2HEL,2HEV,2HAT,2HIO,2HN , 10 | 6 2HFR,2HOM,2H ,2H ,2H , 11 | 7 2HSI,2HZE,2H ,2H ,2H , 12 | 8 2HCO,2HNT,2HIG,2HUI,2HTY, 13 | + 2HSA,2HMP,2HLE,2H ,2H , 14 | + 2HPI,2HP ,2H ,2H ,2H , 15 | + 2H??,2H??,2H??,2H??,2H? / 16 | C 17 | 18 | C 19 | data kpmap/0/ 20 | data fact/1.0/ 21 | end 22 |  -------------------------------------------------------------------------------- /PC-MOSS/src/PERIMETE.FOR: -------------------------------------------------------------------------------- 1 | C ***************************************************************************** 2 | C 3 | C P R O G R A M T A B L E 4 | C FUNCTION: 5 | C THIS ROUTINE RE-STATE MOSS RUNTIME PARAMETERS AND EXECUTE THE 6 | C AREA, PERIMETER, LENGTH, AND FREQUENCY COMMANDS 7 | C ***************************************************************************** 8 | PROGRAM perimete 9 | C 10 | $Include:'dbchan.inc' 11 | $Include:'mfast.inc' 12 | COMMON /fls / iunit , ifile(5) 13 | $Include:'strng.inc' 14 | C 15 | C FIRST READ IN THE COMMON BLOCKS 16 | C 17 | CALL initl(ier) 18 | IF ( ier.NE.0 ) STOP 19 | C 20 | C OPEN POINTER FILE 21 | C 22 | CALL openf(icdcfa,idesfa,1,512,2,ier) 23 | IF ( ier.NE.0 ) THEN 24 | C 25 | C ERROR RETURNS 26 | C 27 | WRITE (*,*) ' Could not properly open file' 28 | ELSE 29 | C 30 | C SET WINDOW 31 | C 32 | CALL setwnd 33 | C 34 | C CALL TABLE GENERATION ROUTINE 35 | C 36 | icard(80) = -4 37 | CALL tabara(lines,icard(80)) 38 | ENDIF 39 | C 40 | lines = lines + 2 41 | CLOSE (icdcfa,IOSTAT=ier) 42 | END 43 | -------------------------------------------------------------------------------- /PC-MOSS/src/PLOTBLK.FOR: -------------------------------------------------------------------------------- 1 | block data plotbloc 2 | C 3 | C Common initialization required for the PLOT command 4 | C 5 | Common/blmldsh/xt,yt,ds,iseg,ipen,dlseg(4,4) 6 | common/mdevice/idev 7 | common/ththtt/iflag,inipen,initim,pdown,pi,pup,x1,y1 8 | common /thick1/dfltpn,ntim,pnwd 9 | common/hcurr/ichan,ifnum,ircur,icbuf(256),x,y 10 | C 11 | integer pdown,pup 12 | real inipen 13 | data dlseg/.04,.05,.04,.05, 14 | + .04,.10,.25,.10, 15 | + .10,.07,.10,.07, 16 | + .25,.10,.25,.10/ 17 | data iflag/0/,pdown/2/,pi/3.1415926/,pup/3/,x1/0/,y1/0/ 18 | data idev/1/ 19 | data dfltpn/.005/,ntim/1/ 20 | data ifnum/-32767/ 21 | end 22 | -------------------------------------------------------------------------------- /PC-MOSS/src/PLOTBLOC.FOR: -------------------------------------------------------------------------------- 1 | BLOCKDATA plotbloc 2 | C 3 | C Common initialization required for the PLOT command 4 | C 5 | COMMON /blmldsh/ xt , yt , ds , iseg , ipen , dlseg(4,4) 6 | COMMON /mdevice/ idev 7 | COMMON /ththtt/ iflag , inipen , initim , pdown , pi , pup , x1 , 8 | & y1 9 | COMMON /thick1/ dfltpn , ntim , pnwd 10 | COMMON /hcurr / ichan , ifnum , ircur , icbuf(256) , x , y 11 | C 12 | INTEGER pdown , pup 13 | REAL inipen 14 | DATA dlseg/.04 , .05 , .04 , .05 , .04 , .10 , .25 , .10 , .10 , 15 | & .07 , .10 , .07 , .25 , .10 , .25 , .10/ 16 | DATA iflag/0/ , pdown/2/ , pi/3.1415926/ , pup/3/ , x1/0/ , y1/0/ 17 | DATA idev/1/ 18 | DATA dfltpn/.005/ , ntim/1/ 19 | DATA ifnum/ - 32767/ 20 | END 21 | -------------------------------------------------------------------------------- /PC-MOSS/src/PLOTDV.FOR: -------------------------------------------------------------------------------- 1 | 2 | SUBROUTINE plotdv(xx,yy,np,idevic) 3 | C 4 | C *********************************************************** 5 | C 6 | C S U B R O U T I N E P L O T D V 7 | C FUNCTION: 8 | C A DEVICE INDEPENDENT GRAPHICS DRIVER FOR VECTOR 9 | C DISPLAY. THE DEVICE TO BE USED IS CONTAINED IN 10 | C IDEVIC. 11 | C PARAMETERS: 12 | C (X,Y) IN - THE POINT TO MOVE OR DRAW TO. 13 | C D2 14 | C NP IN - THE PEN NUMBER, 2 FOR DOWN, 3 FOR UP. 15 | C D4 16 | C IDEVIC OUT - THE DEVICE TO BE USED, 17 | C 1,IF TEKTRONIX CRT, 18 | C 2,IF CALCOMP PLOTTER, 19 | C 3,IF VERSATEC PLOTTER. 20 | C DUMMY VARIABLE FOR THE CURRENT TIME. 21 | C ROUTINES 22 | C CALLED: tkPLOT. 23 | C 24 | C *************************************************************** 25 | C 26 | C CALL DEVICE ROUTINE CALLED 'PLOT' 27 | C 28 | CALL tkplot(xx,yy,np) 29 | RETURN 30 | END 31 | -------------------------------------------------------------------------------- /PC-MOSS/src/PLOTW.FOR: -------------------------------------------------------------------------------- 1 | 2 | SUBROUTINE plotw(x,y,ipen) 3 | C 4 | COMMON /plwrk / xl , yl , x1 , y1 , x2 , y2 , kgnflg 5 | C 6 | COMMON /pwindo/ xmin , ymin , xmax , ymax , xlast , ylast , lastfg 7 | COMMON /mdevice/ idev 8 | C 9 | C DATA XMIN,YMIN,XMAX,YMAX/-9.E10,-9.E10,9.E10,9.E10/ 10 | 11 | C 12 | IF ( ipen.LT.0 .OR. ipen.EQ.999 ) CALL pendv(x,y,ipen,idev) 13 | IF ( ipen.LT.0 .OR. ipen.EQ.999 ) RETURN 14 | IF ( ipen.NE.3 ) THEN 15 | xl = xlast 16 | yl = ylast 17 | CALL zclipt(xl,yl,x,y,x1,y1,x2,y2,kgnflg) 18 | IF ( kgnflg.NE.1 ) THEN 19 | C/* LINE OUTSIDE WINDOW 20 | IF ( x1.NE.xlast .OR. y1.NE.ylast .OR. lastfg.EQ.0 ) 21 | & CALL pendv(x1,y1,3,idev) 22 | CALL pendv(x2,y2,ipen,idev) 23 | xlast = x 24 | ylast = y 25 | lastfg = 1 26 | RETURN 27 | ENDIF 28 | ENDIF 29 | xlast = x 30 | ylast = y 31 | lastfg = 0 32 | RETURN 33 | END 34 | -------------------------------------------------------------------------------- /PC-MOSS/src/PNUMBER.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE pnumber(xpage,ypage,height,fpn,angle,ndec) 2 | C 3 | C..... XPAGE,YPAGE COORDINATES OF LOWER LEFT CORNER OF NUMBER. 4 | C..... HEIGHT HEIGHT OF PLOTTED NUMBER. 5 | C..... FPN FLOATING POINT NUMBER TO BE PLOTTED. 6 | C..... ANGLE ANGLE AT WHICH NUMBER IS PLOTTED, IN DEGREES. 7 | C..... NDEC NUMBER OF DECIMAL PLACES TO BE DRAWN. 8 | C 9 | C 10 | CHARACTER*20 anum , fmt 11 | INTEGER*2 ivar(10) , ipar(20) 12 | EQUIVALENCE (anum(1:1),ivar(1)) 13 | C 14 | nd = max(ndec,0) 15 | nnx = 19 - nd 16 | WRITE (fmt,99001) nnx , nd 17 | 99001 FORMAT ('(F',I2,'.',I2,')') 18 | WRITE (anum,fmt) fpn 19 | CALL chrjst(anum,-1) 20 | C 21 | ididy = 0 22 | DO i = 20 , 1 , -1 23 | IF ( anum(i:i).NE.' ' ) THEN 24 | js = i 25 | IF ( ididy.EQ.0 ) THEN 26 | l = i 27 | ididy = 1 28 | ENDIF 29 | ENDIF 30 | ENDDO 31 | C L=20-JS 32 | C 33 | IF ( ndec.LT.0 ) l = l - 1 34 | C 35 | DO il = 1 , 10 36 | ipar(il) = ivar(il) 37 | ENDDO 38 | c 39 | CALL plotsym(0,1,xpage,ypage,height,height,ipar(1),angle,0.0, 40 | & angle,0,l,ier) 41 | C 42 | RETURN 43 | END 44 | -------------------------------------------------------------------------------- /PC-MOSS/src/POFF.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE poff(iarry,byte,ival,ipos) 2 | c 3 | c put ival at the ipos (1 or 2) byte in iarry 4 | c 5 | c ival <=256 6 | c ipos 1 ot 2 7 | c 8 | c ccccccccccccccccccccccccccccccccccccccccccccc 9 | INTEGER iarray(1) , iword(2) , byte 10 | c 11 | ipos = 2 12 | jpos = byte/2 13 | IF ( mod(byte,2).NE.0 ) THEN 14 | ipos = 1 15 | jpos = jpos + 1 16 | ENDIF 17 | CALL byteit(iarray(jpos),iword) 18 | c 19 | iword(ipos) = ival 20 | c 21 | c put back together 22 | c 23 | iarray(jpos) = iword(1)*256 + iword(2) 24 | c 25 | RETURN 26 | END 27 | -------------------------------------------------------------------------------- /PC-MOSS/src/POISE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE poise(ixp,iyp,x1,y1,x2,y2,dsq) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E P O I S E 6 | C FUNCTION: 7 | C COMPUTES THE SQUARE OF THE DISTANCE FROM A POINT TO A LINE SEGMENT. 8 | C P IS THE POINT AND XY CONTAINS THE END-POINTS OF THE LINE SEGMENT. 9 | C RETURNS THE SQUARED DISTANCE IN DSQ. 10 | C PARAMETERS: 11 | C (IXP,IYP) IN - POINT P. 12 | C ((X1,Y1),(X2,Y2)) IN - THE END POINTS OF THE LINE SEGMENTS. 13 | C DSQ OUT - THE SQUARED DISTANCE FROM THE POINT P 14 | C TO THE LINE SEGMENT. 15 | C ROUTINES 16 | C CALLED: NONE. 17 | C 18 | C ***************************************************************************** 19 | C 20 | REAL x1 , y1 , x2 , y2 , ixp , iyp 21 | DOUBLE PRECISION u , v , xx , yy , m , t , dd , dsqr 22 | u = dble(ixp-x1) 23 | v = dble(iyp-y1) 24 | xx = dble(x2-x1) 25 | yy = dble(y2-y1) 26 | dd = xx*xx + yy*yy 27 | IF ( dd.EQ.0.D0 ) THEN 28 | dsqr = dmin1(u*u+v*v,(u-xx)**2+(v-yy)**2) 29 | ELSE 30 | m = u*xx + v*yy 31 | IF ( m.LT.0.D0 .OR. m.GT.dd ) THEN 32 | dsqr = dmin1(u*u+v*v,(u-xx)**2+(v-yy)**2) 33 | ELSE 34 | t = u*yy - v*xx 35 | dsqr = (t/dd)*t 36 | ENDIF 37 | ENDIF 38 | dsq = dsqrt(dsqr) 39 | RETURN 40 | END 41 | -------------------------------------------------------------------------------- /PC-MOSS/src/POSHFT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE poshft(ipasses,ipsign,jj,istar,istop,item2) 2 | $Include:'io.inc' 3 | $Include:'pqpnts.500' 4 | C 5 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 6 | C 7 | C 8 | C S U B R O U T I N E P O S H F T 9 | C 10 | C FUNCTION: SLIGHTLY SHIFT MINOR POLYGON IN POLYGON OVERLAY. REQUIRED 11 | C TO SOMETIMES RESOLVE OVERLAY PROBLEMS 12 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 13 | C 14 | WRITE (nprnt,99001) ipasses + 1 , item2 15 | 99001 FORMAT (3X,I5,' ADJUSTING MINOR POLYGON - ITEM',I5) 16 | C 17 | ipasses = ipasses + 1 18 | ipsign = -ipsign 19 | poff = float(ipsign)*float(ipasses) 20 | DO jkl = istar , istop 21 | CALL sspoints('P ',p,xt,jkl,1) 22 | C XT=P(JKL) 23 | xt = xt + poff 24 | CALL sspoints('P ',p,xt,jkl,2) 25 | C p(jkl)=xt 26 | CALL sspoints('Q ',q,xt,jkl,1) 27 | C XT=Q(JKL) 28 | xt = xt + poff 29 | CALL sspoints('Q ',q,xt,jkl,2) 30 | c q(jkl)=xt 31 | ENDDO 32 | C 33 | RETURN 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/POV1.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE pov1(ipromt,merlab,iud,map,jcom,mlpnt,nchars,irec) 2 | $Include:'strng.inc' 3 | COMMON /osave / idum(19) , ictsub 4 | $Include:'io.inc' 5 | DIMENSION map(10) , jcom(10) , icom(25) 6 | C 7 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8 | C 9 | C S U B R O U T I N E P O V 1 10 | C 11 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 12 | C 13 | C 14 | C 15 | C SET CHANNEL FOR SUBJECT FILE 16 | C 17 | ictsub = 57 18 | C 19 | C GET ATTRIBUTE MERGE TYPE FROM USER 20 | C 21 | CALL asksub(ipromt,merlab,mlpnt,nchars,irec,ier) 22 | C 23 | C GET OVERLAY TYPE 24 | C 25 | iud = 1 26 | C WRITE(NPRNT,1000) 27 | C 1000 FORMAT(' Enter: 1 for Intersection, 2 for Union, 3 for Not'\) 28 | C CALL READIN(ICARD,lenicd,icardp,istop) 29 | C CALL INUM(ICARD,IUD,icardp) 30 | C IF(IUD.LT.0.OR.IUD.GT.3) GO TO 20 31 | C 32 | C PACK FILE NAME 33 | C 34 | CALL packc(map,jcom,10) 35 | C 36 | C OPEN LINK TO TEMP & TEMP1 37 | icom(1) = 'B ' 38 | CALL openf(ictsub,icom,3,256,2,ier) 39 | IF ( ier.NE.0 ) CALL perr(9) 40 | icom(1) = 'C ' 41 | CALL openf(56,icom,3,0,1,ier) 42 | IF ( ier.NE.0 ) CALL perr(12) 43 | C 44 | C 45 | C 46 | RETURN 47 | END 48 | -------------------------------------------------------------------------------- /PC-MOSS/src/POV2.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE pov2(map,itp3,ichan3) 2 | $Include:'io.inc' 3 | $Include:'strng.inc' 4 | COMMON /table / itable(40) 5 | $Include:'whmap.inc' 6 | DIMENSION map(10) 7 | C 8 | C ERASE THE SCREEN 9 | C 10 | C CALL FLASH 11 | C GET ACTIVE DATA SETS 12 | C 13 | CALL daget(icard,icardp,itable,40,macts) 14 | IF ( macts.LE.1 ) THEN 15 | C 16 | C PROMPT USER FOR ACTIVE DATA SETS 17 | C 18 | 50 CONTINUE 19 | WRITE (nprnt,99001) 20 | 99001 FORMAT (' Enter active data set I.D.s to INTERSECT '\) 21 | CALL readin(icard,lenicd,icardp,istop) 22 | CALL daget(icard,icardp,itable,40,macts) 23 | lines = lines + 3 24 | IF ( macts.LT.2 ) GOTO 50 25 | ENDIF 26 | C 27 | C ASK WHAT TO CALL IT 28 | C 29 | CALL decip(icard,map,icardp) 30 | IF ( map(1).EQ.0 ) THEN 31 | CALL whtcal(map,ier) 32 | ENDIF 33 | C 34 | IF ( ier.NE.0 ) STOP 35 | C 36 | C INPUT IS FINISHED 37 | C 38 | C 39 | RETURN 40 | END 41 | -------------------------------------------------------------------------------- /PC-MOSS/src/PQPNTS.500: -------------------------------------------------------------------------------- 1 | common/pqpnts/p(500),q(500) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/PQPNTS.INC: -------------------------------------------------------------------------------- 1 | common/pqpnts/p(5000),q(5000) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/PRECHK.FOR: -------------------------------------------------------------------------------- 1 | 2 | SUBROUTINE prechk(yn,xe,nhol) 3 | C*** THIS SUBROUTINE IS USED BY SS2DGRID AND BY SS2DDRES. IT 4 | C*** CHECKS THE NORTH COORDINATES FOR ARRANGEMENT IN A SORTED 5 | C*** ASCENDING ORDER. 6 | C*** 7 | DIMENSION yn(1) , xe(1) 8 | DO i = 2 , nhol 9 | IF ( yn(i).LT.yn(i-1) ) THEN 10 | WRITE (*,*) 'INPUT FILE WAS NOT PREPROCESSED' 11 | RETURN 12 | ENDIF 13 | ENDDO 14 | RETURN 15 | END 16 | -------------------------------------------------------------------------------- /PC-MOSS/src/PRHEAD.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE prhead(rptname,lines,npages) 2 | C****************************************************************************** 3 | C Print a header for reports 4 | C 5 | C****************************************************************************** 6 | $Include:'IO.inc' 7 | CHARACTER*20 rptname 8 | C 9 | lines = lines + 4 10 | C 11 | WRITE (nprnt,99001) rptname , npages 12 | 99001 FORMAT (/,2X,A20,21X,'PAGE',I4,/) 13 | C 14 | C 15 | RETURN 16 | END 17 | -------------------------------------------------------------------------------- /PC-MOSS/src/PROFLIP.FOR: -------------------------------------------------------------------------------- 1 | 2 | C********************************************************************** 3 | C 4 | C SUBROUTINE PROFLIP 5 | C 6 | C FUNCTION: FLIP-FLOP XDATA,YDATA ARRAYS 7 | C 8 | C CALLED BY: PROFIT 9 | C 10 | C********************************************************************* 11 | C 12 | SUBROUTINE proflip 13 | COMMON /pvalss/ xdata(512) , ydata(512) , zdata(512) , nvals , 14 | & mxvals 15 | REAL xdata , ydata , zdata , temp 16 | INTEGER nvals , mxvals 17 | C 18 | DO i = 1 , nvals 19 | temp = xdata(i) 20 | xdata(i) = ydata(i) 21 | ydata(i) = temp 22 | ENDDO 23 | C 24 | RETURN 25 | END 26 | -------------------------------------------------------------------------------- /PC-MOSS/src/PTBOOLE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE ptboole(npts1,ind) 2 | COMMON /dot / nslands , jh , ids(1) 3 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 | C NAME: P T B O O L E 5 | C 6 | C FUNCTION: FINDS THE INTERSECTION OF A POINT WITHIN A POLYGON 7 | C 8 | C PARAMETER: NPTS1 = NO. OF COORD. PAIRS IN THE POLYGON 9 | C 10 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 11 | $Include:'pqpnts.inc' 12 | $Include:'rspnts.inc' 13 | CALL spoints('P ',p,p1,1,1) 14 | CALL spoints('Q ',q,q1,1,1) 15 | ind = inpoly(nslands,ids,p1,q1) 16 | C POINT NOT INSIDE POLYGON 17 | IF ( ind.NE.1 ) RETURN 18 | C point inside 19 | CALL spoints('R ',r,p1,1,2) 20 | C r(1)= p(1) 21 | CALL spoints('S ',s,q1,1,2) 22 | C s(1)= q(1) 23 | CALL inout(1,ipx,1) 24 | RETURN 25 | END 26 | -------------------------------------------------------------------------------- /PC-MOSS/src/RDBLK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE rdblk(ichan,ipoint,ibuff,nrecs,ier) 2 | C 3 | C *************************************************************** 4 | C 5 | C S U B R O U T I N E R D B L K 6 | C FUNCTION: 7 | C THIS ROUTINE READS A BLOCK FROM DISK FILE. 8 | C PARAMETERS: 9 | C ICHAN IN - THE FILE CHANNEL. 10 | C IPOINT IN - THE RECORD TO READ. 11 | C IBUFF IN - THE RETURNED ARRAY. 12 | C IRECS IN - THE NUMBER OF RECORDS TO READ. 13 | C IER OUT - THE ERROR RETURN FOR WRITING TO, READING, 14 | C OPENNING, OR CLOSING A FILE, 15 | C IER = 0, IF NO ERROR, 16 | C IER > 1, IF AN ERROR. 17 | C ROUTINES IER = -1 IF EOF W/O ERROR 18 | C CALLED: NONE. 19 | C 20 | C ************************************************************** 21 | C 22 | COMMON /io / nprnt , ioin 23 | DIMENSION ibuff(128) 24 | ier = 0 25 | IF ( ipoint.GT.0 ) THEN 26 | READ (ichan,REC=ipoint,IOSTAT=ier,ERR=100) ibuff 27 | GOTO 200 28 | ENDIF 29 | C 30 | C ERROR RETURN 31 | C 32 | 100 CONTINUE 33 | WRITE (nprnt,99001) ier , ipoint , ichan 34 | 99001 FORMAT (' *RDBLK* ERROR',I5,' READING RECORD',I5, 35 | & ' FROM CHANNEL ',I5) 36 | C 37 | 200 CONTINUE 38 | RETURN 39 | END 40 | -------------------------------------------------------------------------------- /PC-MOSS/src/RDXYZ.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE rdxyz(infil,xd,yd,zd,nndp,ier) 2 | C Initializes arrays XD, YD, ZD from data in disk files 3 | C 4 | IMPLICIT INTEGER*4(i-n) 5 | INTEGER*2 idummy(20) , ndp , m , i , j , ier 6 | C 7 | DIMENSION xd(500) , yd(500) , zd(500) 8 | C 9 | C Open STATPAC file and read header record 10 | C convert NDP to integer*4 for return to calling program 11 | C 12 | ier = 0 13 | READ (infil,IOSTAT=ier,ERR=100) (idummy(j),j=1,4) , ndp , m , 14 | & (idummy(j),j=1,12) 15 | C READ (INFIL,IOSTAT=IER,ERR=9900) (IDUMMY(J),J=1,12) 16 | nndp = ndp 17 | C 18 | C Read data records and fill arrays 19 | C 20 | DO i = 1 , ndp 21 | READ (infil,IOSTAT=ier,ERR=200) (idummy(j),j=1,9) , nloc1 , 22 | & nloc2 , xd(i) , yd(i) , zd(i) , idummy(14) 23 | ENDDO 24 | GOTO 300 25 | C 26 | C Error exit 27 | C 28 | 100 CONTINUE 29 | WRITE (*,*) ' error reading TEMPKRIG.STP ERROR ' , ier 30 | 200 CONTINUE 31 | WRITE (*,*) 'error' , ier , 32 | & ' while trying to read TEMPKRIG.STP,' , ' record ' , i 33 | 300 CONTINUE 34 | RETURN 35 | END 36 | -------------------------------------------------------------------------------- /PC-MOSS/src/READ_F77.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE read_f77(funit,recnum,buffer,length,ierror) 2 | C----------------------------------------------------------------------- 3 | C 4 | CN ROUTINE READ-F77-BINARY-RECORD 5 | C 6 | C::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 7 | C 8 | CP Purpose: 9 | C 10 | C This routine uses PRIME primitive I/O to read a FORTRAN 77 style 11 | C binary record. 12 | CE 13 | C::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 14 | C 15 | CA Parameters: 16 | C 17 | C FUNIT == (Integer) Fortran unit number. 18 | C RECNUM == (Integer*4) Record number to read. 19 | C BUFFER == (Array) Buffer read in. 20 | C LENGTH == (Integer) Length of buffer in words. 21 | C IERROR == (Integer) Error code. 22 | CE 23 | C::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 24 | C 25 | CH History: 26 | C 27 | C Abdul Alhazred 03/11/87 Original coding. 28 | CE 29 | C----------------------------------------------------------------------- 30 | INTEGER funit , length , buffer(length) , ierror 31 | INTEGER*4 recnum , ipos 32 | C 33 | C 34 | C IPOS = (RECNUM - 1) * (LENGTH ) + 1 35 | ipos = recnum 36 | CALL mx(2,funit,ipos,buffer,length,ierror) 37 | RETURN 38 | END 39 | -------------------------------------------------------------------------------- /PC-MOSS/src/RECEIVE.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE receive(key,length) 2 | C************************************************************************** 3 | C 4 | C NAME : SUBROUTINE RECEIVE 5 | C 6 | C FUNCTION : READ IN A CHARACTER STRING OF NO MORE THAN 10 CHARACTERS LONG 7 | C 8 | C PARAMETERS : KEY : ( ARRAY DEMENSION 10, OUTPUT ) WILL RETURN THE 9 | C CHARACTER STRING 10 | C LENGTH : ( INTEGER, INPUT ) IS THE NUMBER OF CHARACTERS 11 | C LONG THE KEY IS EXPECTED TO BE 12 | C 13 | C ROUTINES REQUIRED : SUBROUTINE READIN, SUBROUTINE DECIP 14 | C 15 | C************************************************************************** 16 | C 17 | $Include:'IO.inc' 18 | C 19 | COMMON /string/ input(80) , inputp 20 | INTEGER key(80) 21 | C 22 | CALL readin(input,80,inputp,istop) 23 | CALL decip(input,key,inputp) 24 | inputp = inputp - 1 25 | C 26 | C RETURN THE SPECIFIED NUMBER OF CHARACTERS( LENGTH ) 27 | C 28 | IF ( inputp.LT.length ) THEN 29 | istrt = inputp + 1 30 | C 31 | C IF THE CHARACTER STRING IS LESS THEN THE SPECIFIED NUMBER OF 32 | C CHARACTERS THEN ZERO OUT THE UNUSED WORDDS. 33 | C 34 | DO limit = istrt , length 35 | key(limit) = 0 36 | ENDDO 37 | ENDIF 38 | C 39 | RETURN 40 | END 41 | -------------------------------------------------------------------------------- /PC-MOSS/src/REMBLK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE remblk(id) 2 | CHARACTER*1 id(8) 3 | DO i = 1 , 8 4 | IF ( id(i).EQ.' ' ) id(i) = '0' 5 | ENDDO 6 | RETURN 7 | END 8 | -------------------------------------------------------------------------------- /PC-MOSS/src/RESET.FOR: -------------------------------------------------------------------------------- 1 | PROGRAM reset 2 | C 3 | COMMON /vwnd / xorgin , yorgin , xalen , yalen , xstart , 4 | & ystart , xlen , ylen , ibw 5 | C 6 | CALL initl(ier) 7 | IF ( ier.NE.0 ) STOP 8 | C 9 | C 10 | C RESET DISPLAY AREA TO ORIGINAL WINDOW 11 | C 12 | ibw = 0 13 | CALL setwnd 14 | CALL outcm 15 | C 16 | END 17 | -------------------------------------------------------------------------------- /PC-MOSS/src/RESTRT.INC: -------------------------------------------------------------------------------- 1 | COMMON/RESTRT/IRESTL 2 | 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/RLNCLN.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE rlncln(n,dum1,dum2) 2 | $Include:'rspnts.inc' 3 | C DIMENSION R(1),S(1) 4 | C 5 | C REMOVE DUPLICATE POINTS FROM A LINE 6 | C 7 | kount = 1 8 | DO i = 2 , n 9 | CALL spoints('R ',r,r1,i,1) 10 | CALL spoints('R ',r,r2,kount,1) 11 | CALL spoints('S ',s,s1,i,1) 12 | CALL spoints('S ',s,s2,kount,1) 13 | c R1=R(I) 14 | c R2=R(KOUNT) 15 | c S1=S(I) 16 | c S2=S(KOUNT) 17 | IF ( r1.NE.r2 .OR. s1.NE.s2 ) THEN 18 | kount = kount + 1 19 | CALL spoints('R ',r,r1,kount,2) 20 | CALL spoints('S ',s,s1,kount,2) 21 | ENDIF 22 | c R(KOUNT)=R1 23 | c S(KOUNT)=S1 24 | ENDDO 25 | C 26 | n = kount 27 | C 28 | RETURN 29 | END 30 | -------------------------------------------------------------------------------- /PC-MOSS/src/RLNLEN.FOR: -------------------------------------------------------------------------------- 1 | REAL FUNCTION rlnlen(npts) 2 | $Include:'xypnts.inc' 3 | C 4 | C ************************************************************** 5 | C 6 | C F U N C T I O N R L N L E N 7 | C FUNCTION: 8 | C THIS ROUTINE CALCULATES THE LENGTH OF A LINE DEFINED BY AN 9 | C ARRAY OF REAL NUMBERS. 10 | C PARAMETERS: 11 | C NPTS IN - THE NUMBER OF POINTS. 12 | C ************************************************************** 13 | C 14 | rlnlen = 0.0 15 | C 16 | C DECREMENT NPTS BY ONE 17 | C 18 | n = npts - 1 19 | C 20 | C ENTER CALCULATION LOOP 21 | C 22 | DO i = 1 , n 23 | CALL spoints('X ',x,xi,i,1) 24 | CALL spoints('Y ',y,yi,i,1) 25 | CALL spoints('X ',x,xi1,i+1,1) 26 | CALL spoints('Y ',y,yi1,i+1,1) 27 | tlen = (sqrt((xi-xi1)**2+(yi-yi1)**2))/1605.0 28 | rlnlen = rlnlen + tlen 29 | ENDDO 30 | C 31 | RETURN 32 | END 33 | -------------------------------------------------------------------------------- /PC-MOSS/src/RRLNLEN.FOR: -------------------------------------------------------------------------------- 1 | REAL FUNCTION rrlnlen(npts) 2 | $Include:'xypnts.inc' 3 | C 4 | C ************************************************************** 5 | C 6 | C F U N C T I O N R L N L E N 7 | C FUNCTION: 8 | C THIS ROUTINE CALCULATES THE LENGTH OF A LINE DEFINED BY AN 9 | C ARRAY OF REAL NUMBERS. 10 | C PARAMETERS: 11 | C NPTS IN - THE NUMBER OF POINTS. 12 | C ************************************************************** 13 | C 14 | rrlnlen = 0.0 15 | C 16 | C DECREMENT NPTS BY ONE 17 | C 18 | n = npts - 1 19 | C 20 | C ENTER CALCULATION LOOP 21 | C 22 | DO i = 1 , n 23 | CALL sspoints('X ',x,xi,i,1) 24 | CALL sspoints('Y ',y,y1,i,1) 25 | CALL sspoints('X ',x,xi1,i+1,1) 26 | CALL sspoints('Y ',y,yi1,i+1,1) 27 | tlen = (sqrt((xi-xi1)**2+(yi-yi1)**2))/1605.0 28 | rrlnlen = rrlnlen + tlen 29 | ENDDO 30 | C 31 | RETURN 32 | END 33 | -------------------------------------------------------------------------------- /PC-MOSS/src/RSPNTS.500: -------------------------------------------------------------------------------- 1 | common/rspnts/r(500),s(500) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/RSPNTS.INC: -------------------------------------------------------------------------------- 1 | common/rspnts/r(5000),s(5000) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/SCAGET.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE scaget(ibuff,scale) 2 | C************************************************************** 3 | C EXTRACTS SCALE VALUE FROM FEATURE HEADER 4 | C************************************************************** 5 | C 6 | DIMENSION ibuff(128) , ir(2) 7 | EQUIVALENCE (st,ir(1)) 8 | C 9 | ir(1) = ibuff(127) 10 | ir(2) = ibuff(128) 11 | scale = st 12 | IF ( scale.LE.0 ) scale = 1.0 13 | RETURN 14 | END 15 | -------------------------------------------------------------------------------- /PC-MOSS/src/SCALIT.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE scalit(xorg,yorg,xxlen,yylen,xinc,yinc,xr,yr,dimen) 2 | REAL ix1 , iy1 , ix2 , iy2 3 | C 4 | C SET SCALE FACTORS FOR DATABASE TO VIRTUAL COORDINATES 5 | C 6 | CALL whwnd(ix1,iy1,ix2,iy2) 7 | C 8 | xr = ix2 - ix1 9 | yr = iy2 - iy1 10 | xorg = ix1 11 | yorg = iy1 12 | IF ( xr.GT.yr ) THEN 13 | yylen = dimen 14 | xxlen = xr/yr 15 | xxlen = xxlen*dimen 16 | ELSE 17 | xxlen = dimen 18 | yylen = yr/xr 19 | yylen = yylen*dimen 20 | ENDIF 21 | xinc = xxlen/xr 22 | yinc = yylen/yr 23 | C 24 | RETURN 25 | END 26 | -------------------------------------------------------------------------------- /PC-MOSS/src/SETPTR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE setptr(ihh,ids,ih) 2 | C 3 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 | C 5 | C NAME: S E T P T R 6 | C 7 | C FUNCTION: THIS ROUTINE SETS UP THE POINTER TABLE FOR THE POLYGON 8 | C 9 | C PARAMETERS: 10 | C INPUT: IHH = NO. OF ENTRIES IN TABLE OF POINTERS 11 | C IDS = TABLE OF ENTRIES ( THE POINTERS ) 12 | C OUTPUT: IDS = READJUSTED TABLE OF ENTRIES (POINTERS) 13 | C IH = NO. OF ENTRIES IN THE TABLE 14 | C 15 | C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 16 | C 17 | INTEGER ids(1) , jkl 18 | C 19 | ih = 1 20 | IF ( ihh.GT.0 ) THEN 21 | loop = ihh + 1 22 | DO i = 1 , ihh 23 | ids(loop) = ids(loop-1) 24 | loop = loop - 1 25 | ENDDO 26 | DO jkl = 1 , ihh , 1 27 | ih = ih + 1 28 | ids(ih) = ids(ih) - 1 29 | ENDDO 30 | ENDIF 31 | RETURN 32 | END 33 | -------------------------------------------------------------------------------- /PC-MOSS/src/SETW.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE setw(x1,y1,x2,y2) 2 | C SET SCISSOR WINDOW FOR PLOTW 3 | COMMON /pwindo/ xmin , ymin , xmax , ymax , xlast , ylast , lastfg 4 | IF ( x1.EQ.x2 .AND. y1.EQ.y2 ) THEN 5 | C SET WINDOW TO NOT CLIPT ANY DATA 6 | xmin = -9.E10 7 | ymin = -9.E10 8 | xmax = 9.E10 9 | ymax = 9.E10 10 | RETURN 11 | ELSE 12 | C/* SET ORIGINAL WINDOW 13 | xmin = x1 14 | ymin = y1 15 | xmax = x2 16 | ymax = y2 17 | RETURN 18 | ENDIF 19 | END 20 | -------------------------------------------------------------------------------- /PC-MOSS/src/SETWND.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE setwnd 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E S E T W N D 6 | C FUNCTION: 7 | C THIS ROUTINE SETS VIRTUAL AND SCREEN WINDOWS. 8 | C PARAMETERS: 9 | C NONE. 10 | C ROUTINES 11 | C CALLED: WINDO,SCRSET. 12 | C 13 | C ***************************************************************************** 14 | C 15 | $Include:'vwnd.inc' 16 | IF ( ibw.EQ.1 ) THEN 17 | c if(xstart+ystart.le..001.or.xlen+ylen.le..001)then 18 | c write(*,*)'You must SELECT and WINDOW a map first' 19 | c stop 20 | c endif 21 | CALL vwindo(xstart,xlen,ystart,ylen) 22 | CALL scrset(xstart,xlen,ystart,ylen) 23 | RETURN 24 | ELSE 25 | IF ( xorgin+xalen.LE..001 .OR. yorgin+yalen.LE..001 ) THEN 26 | WRITE (*,*) 27 | WRITE (*,*) 'You must WINDOW a map first' 28 | STOP 29 | ENDIF 30 | CALL vwindo(xorgin,xalen,yorgin,yalen) 31 | CALL scrset(xorgin,xalen,yorgin,yalen) 32 | RETURN 33 | ENDIF 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/SPAWN.INC: -------------------------------------------------------------------------------- 1 | $LIST 2 | c FOREXEC.INC - interface file for C library routines 3 | c This file has been included 4 | c with your FORTRAN 4.0 to show you how easy it is to call routines 5 | c written in Microsoft C (version 3.0 or higher). 6 | c 7 | c The Microsoft FORTRAN 4.0, and C 4.0 releases 8 | c have been designed so that libraries or subprograms can be written 9 | c and used in either one of these languages. 10 | c 11 | c Try compiling and running the demonstration program DEMOEXEC.FOR 12 | c to s -------------------------------------------------------------------------------- /PC-MOSS/src/STRNG.INC: -------------------------------------------------------------------------------- 1 | COMMON /STRNG/ ICARD(80),ICARDP,LENICD 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/SYMDRW.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE symdrw(xcirc,ycirc,ndim,xcen,ycen) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E S Y M D R W 6 | C FUNCTION: 7 | C THIS ROUTINE DRAWS A CIRCLE ABOUT POINT XCE, YCEN 8 | C PARAMETERS: 9 | C XCIRC = X COORDINATE STRING OF CIRCLE 10 | C YCIRC = Y COORDINATE STRING OF CIRCLE 11 | C NDIM = DIMENSION OF XCIRC AND YCIRC 12 | C XCEN = X COORDINATE OF CIRCLE CENTER 13 | C YCEN = Y COORDINATE OF CIRCLE CENTER 14 | C ROUTINES 15 | C CALLED: DRAWA,MOVEA. 16 | C ***************************************************************************** 17 | C 18 | C COMMON /IO/ NPRNT,IOIN 19 | DIMENSION xcirc(ndim) , ycirc(ndim) 20 | CALL movea(xcirc(1)+xcen,ycirc(1)+ycen) 21 | C 22 | DO i = 2 , ndim 23 | CALL drawa(xcirc(i)+xcen,ycirc(i)+ycen) 24 | ENDDO 25 | C 26 | RETURN 27 | END 28 | -------------------------------------------------------------------------------- /PC-MOSS/src/TERM.FOR: -------------------------------------------------------------------------------- 1 | FUNCTION term(x,ex,y,ey,xmax,ymax) 2 | C*** THIS FUNCTION WAS WRITTEN BY SKRIVAN AND KARLINGER 3 | C*** CALCULATE MATRIX COEFFICIENTS BASED ON DRIFT TERMS. 4 | C*** SCALE X BY 1./XMAX AND Y BY 1./YMAX TO ALLOW MORE SIMILAR 5 | C*** COEFFICIENTS IN THE MATRIX. 6 | C*** CHECK FOR 0 EXPONENT AND SET THAT PORTION OF TERM TO 1. 7 | INTEGER*2 ex , ey 8 | scalex = 1. 9 | scaley = 1. 10 | IF ( xmax.NE.0. ) scalex = 1./xmax 11 | IF ( ymax.NE.0. ) scaley = 1./ymax 12 | IF ( ex.NE.0 ) THEN 13 | tx = (x*scalex)**ex 14 | ELSE 15 | tx = 1. 16 | ENDIF 17 | IF ( ey.NE.0 ) THEN 18 | ty = (y*scaley)**ey 19 | ELSE 20 | ty = 1. 21 | ENDIF 22 | term = tx*ty 23 | RETURN 24 | END 25 | -------------------------------------------------------------------------------- /PC-MOSS/src/TREDIR.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE tredir(first,last,nmaps,ichan,jcom,ier) 2 | COMMON /dirsy / lastc , lastbk , iwtrn , kdir(256) 3 | COMMON /io / nprnt , ioin 4 | DIMENSION name(16) , irec(16) , ifile(10) , ihead(256) , jcom(25) 5 | INTEGER first 6 | C 7 | C MAKE SURE WE READ THE BLOCK 8 | C 9 | lastc = -1 10 | iwtrn = -1 11 | C 12 | C** READ THE # OF MAPS & CHECK FOR ERROR 13 | C 14 | CALL getmap(ichan,1,irec,ier) 15 | IF ( ier.NE.0 ) THEN 16 | C 17 | C** NEW FILE 18 | C 19 | WRITE (nprnt,99001) (jcom(i),i=1,25) 20 | 99001 FORMAT (' INITIALIZING Project File: ',25A1) 21 | ier = 0 22 | nmaps = 0 23 | first = 2 24 | last = 1 25 | CALL clear(irec,16) 26 | irec(16) = last 27 | CALL putmap(ichan,1,irec,ier) 28 | IF ( ier.NE.0 ) THEN 29 | WRITE (nprnt,99002) ier 30 | 99002 FORMAT (' *TREDIR* ERROR FROM PUTMAP ',I5) 31 | ELSE 32 | WRITE (ichan,REC=1) kdir 33 | ENDIF 34 | ELSE 35 | C 36 | C** CHECK FOR REFORMAT OR REGULAR OPEN 37 | C 38 | first = 2 39 | last = irec(16) 40 | nmaps = last - 1 41 | ENDIF 42 | C 43 | RETURN 44 | END 45 | -------------------------------------------------------------------------------- /PC-MOSS/src/TYPE.INC: -------------------------------------------------------------------------------- 1 | COMMON /TYPE/ IDATYP(40),NACTS 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/TYPESC.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE typesc 2 | C***************************************************************************** 3 | C Determine what screen accessing and how to handle 4 | C pass indicators for action? ie: 1 = erase screen 5 | C 2 = stop scroll at 32 lines 6 | C 7 | C***************************************************************************** 8 | RETURN 9 | END 10 | -------------------------------------------------------------------------------- /PC-MOSS/src/UNPACK.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE unpack(ibuff,ndim) 2 | C 3 | C *********************************************************** 4 | C 5 | C S U B R O U T I N E U N P A C K 6 | C FUNCTION: 7 | C THIS ROUTINE UNPACKS AN ARRAY IN S2 FORMAT AND PUT IT IN 8 | C R1 FORMAT. THE ARRAY IS UNPACKED FROM TWO CHARACTER PER 9 | C WORD TO ONE CHARACTER PER WORD BLANK FILLED AND RIGHT 10 | C JUSTIFIED. 11 | C PARAMETERS: 12 | C IBUFF IO - THE ARRAY TO UNPACK. 13 | C NDIM IN - THE IBUFF SIZE. 14 | C ROUTINES 15 | C CALLED: NONE. 16 | C 17 | C 18 | C ********************************************************* 19 | C 20 | DIMENSION ibuff(ndim) 21 | LOGICAL master 22 | C 23 | istart = ((ndim+1)/2) + 1 24 | npoint = ndim + 1 25 | C 26 | IF ( ibuff(1).LT.0 ) master = .TRUE. 27 | C 28 | 100 CONTINUE 29 | istart = istart - 1 30 | IF ( istart.LE.0 ) THEN 31 | C 32 | C 33 | IF ( master ) THEN 34 | ibuff(1) = (-ibuff(1)) 35 | master = .FALSE. 36 | ENDIF 37 | RETURN 38 | ELSE 39 | C 40 | ihold = ishft(iabs(ibuff(istart)),8) 41 | irhgt = ishft(ihold,-8) 42 | ileft = ishft(iabs(ibuff(istart)),-8) 43 | npoint = npoint - 1 44 | ibuff(npoint) = ileft 45 | npoint = npoint - 1 46 | ibuff(npoint) = irhgt 47 | GOTO 100 48 | ENDIF 49 | END 50 | -------------------------------------------------------------------------------- /PC-MOSS/src/VWND.INC: -------------------------------------------------------------------------------- 1 | COMMON/VWND/XORGIN,YORGIN,XALEN,YALEN,XSTART,YSTART,XLEN,YLEN,IBW 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/WHMAP.INC: -------------------------------------------------------------------------------- 1 | C Information about selected maps. 2 | COMMON /WHMAP/ ISTRCT(300),NSTRCT 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/WHTTRM.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE whttrm 2 | c 3 | c 4 | c to handle screen clearing, scrolling, and other minipulations 5 | c for the different terminals moss may run on. 6 | c 7 | c kterm = type of terminal = 0 = 4010/4014 (non scrolling) 8 | c 1 = other (scrolling) 9 | c 10 | c 11 | COMMON /termnl/ kterm 12 | RETURN 13 | END 14 | -------------------------------------------------------------------------------- /PC-MOSS/src/WHWND.FOR: -------------------------------------------------------------------------------- 1 | SUBROUTINE whwnd(vx1,vy1,vx2,vy2) 2 | C 3 | C ***************************************************************************** 4 | C 5 | C S U B R O U T I N E W H W N D 6 | C FUNCTION: 7 | C THIS ROUTINE RETURNS THE CURRENT DIMENSIONS OF THE WINDOW 8 | C TO THE CALLING PROGRAM IN VX1,VY1,VX2,VY2 9 | C PARAMETERS: 10 | C VX1 OUT - THE X MINIMUN VALUE. 11 | C VY1 OUT - THE Y MINIMUN VALUE. 12 | C VX2 OUT - THE X MAXIMUN VALUE. 13 | C VY2 OUT - THE Y MAXIMUN VALUE. 14 | C ROUTINES 15 | C CALLED: NONE. 16 | C 17 | C ***************************************************************************** 18 | C 19 | COMMON /vwnd / xorgin , yorgin , xalen , yalen , xstart , 20 | & ystart , xlen , ylen , ibw 21 | IF ( ibw.EQ.1 ) THEN 22 | vx1 = xstart 23 | vy1 = ystart 24 | vx2 = vx1 + xlen 25 | vy2 = vy1 + ylen 26 | ELSE 27 | vx1 = xorgin 28 | vy1 = yorgin 29 | vx2 = vx1 + xalen 30 | vy2 = vy1 + yalen 31 | ENDIF 32 | C 33 | RETURN 34 | END 35 | -------------------------------------------------------------------------------- /PC-MOSS/src/WRTMNU.FOR: -------------------------------------------------------------------------------- 1 | C * Subroutine WrtMnu presents those commands to the user that were in the 2 | C .cmd file (if one existed). 3 | 4 | SUBROUTINE wrtmnu 5 | 6 | $Include:'GLOBAL.inc' 7 | CHARACTER*1 jj 8 | C 9 | IF ( display ) CALL banner 10 | IF ( display .OR. help ) THEN 11 | numlin = 0 12 | DO i = 1 , ionum 13 | len1 = ichar(imenu(i)(80:80)) 14 | WRITE (usrout,99002) i , imenu(i)(1:len1) 15 | numlin = numlin + 1 16 | C 17 | IF ( numlin.EQ.22 ) THEN 18 | WRITE (usrout,99001) 19 | 99001 FORMAT (' Continue ? ',\) 20 | READ (*,'(a)') jj 21 | IF ( jj.GT.char(32) ) GOTO 100 22 | numlin = 0 23 | ENDIF 24 | C 25 | ENDDO 26 | ENDIF 27 | C flip switch back off, if on 28 | 100 CONTINUE 29 | display = .FALSE. 30 | 99002 FORMAT (I3,'. ',A) 31 | 32 | RETURN 33 | END 34 | -------------------------------------------------------------------------------- /PC-MOSS/src/XI.FOR: -------------------------------------------------------------------------------- 1 | FUNCTION xi(i) 2 | C 3 | C Given the numeric order of the x-coordinate of a grid point, 4 | C calculates the actual x-coordinate. Based on computation of 5 | C XCELL in MOSS GRID as of September 1985. 6 | C George Heine, BLM Denver Service Center, Oct. 1985 7 | C 8 | INTEGER*4 i 9 | COMMON /gridpts/ xmin , xside , ymin , yside 10 | xi = xmin + float(i-1)*xside + (0.5)*xside 11 | RETURN 12 | END 13 | -------------------------------------------------------------------------------- /PC-MOSS/src/XRXR.500: -------------------------------------------------------------------------------- 1 | common/xrxr/xr(500) 2 | 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/XRXR.INC: -------------------------------------------------------------------------------- 1 | common/xrxr/xr(5000) 2 | 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/XSIGN.FOR: -------------------------------------------------------------------------------- 1 | 2 | REAL FUNCTION xsign(x) 3 | C 4 | C IF X.LT.0, XSIGN=-1 5 | C IF Q.EQ.0, XSIGN=0 6 | C IF Q.GT.0, XSIGN=1 7 | C 8 | IF ( x.LT.0 ) THEN 9 | xsign = -1.0 10 | RETURN 11 | ELSEIF ( x.EQ.0 ) THEN 12 | xsign = 0.0 13 | RETURN 14 | ELSE 15 | xsign = 1.0 16 | C 17 | RETURN 18 | ENDIF 19 | END 20 | -------------------------------------------------------------------------------- /PC-MOSS/src/XXX.FOR: -------------------------------------------------------------------------------- 1 | 2 | 3 | SUBROUTINE xxx(xc,yc) 4 | C 5 | C DRAW A X AT A SPECIFIED VIRTUAL SCREEN LOCATION 6 | C 7 | CALL movea(xc,yc) 8 | CALL movrel(-4,-8) 9 | CALL drwrel(8,16) 10 | CALL movrel(-8,0) 11 | CALL drwrel(8,-16) 12 | C 13 | RETURN 14 | END 15 | -------------------------------------------------------------------------------- /PC-MOSS/src/XYPNTS.500: -------------------------------------------------------------------------------- 1 | common/xypnts/x(500),y(500) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/XYPNTS.INC: -------------------------------------------------------------------------------- 1 | common/xypnts/x(5000),y(5000) 2 |  -------------------------------------------------------------------------------- /PC-MOSS/src/XYXY.500: -------------------------------------------------------------------------------- 1 | common/xyxy/xy1(500),xy2(500) 2 | 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/XYXY.INC: -------------------------------------------------------------------------------- 1 | common/xyxy/xy1(5000),xy2(5000) 2 | 3 |  -------------------------------------------------------------------------------- /PC-MOSS/src/YI.FOR: -------------------------------------------------------------------------------- 1 | FUNCTION yi(i) 2 | C 3 | C Given the numeric order of the Y-coordinate of a grid point, 4 | C calculates the actual y-coordinate. Based on computation of 5 | C YCELL in MOSS GRID as of September 1985. 6 | C George Heine, BLM Denver Service Center, Oct. 1985 7 | C 8 | INTEGER*4 i 9 | COMMON /gridpts/ xmin , xside , ymax , yside 10 | yi = ymax - float(i)*yside + (0.5)*yside 11 | RETURN 12 | END 13 | -------------------------------------------------------------------------------- /PC-MOSS/src/YRYR.INC: -------------------------------------------------------------------------------- 1 | common/yryr/yr(5000) 2 |  --------------------------------------------------------------------------------