[0+8+FQ(+4)[1 0FO10F"G+Q1' +FQ()+4U1 FQ1"L0' ,Q1:M(Q1+4(]1]0)) 9R+ 4y"ODg S#Wi&da  `!2["f: 4M H]pz}Yw9K  v ^'(;/@I7\a7C<9(W)#e::0w45&6.q7K9Q*!(,K3-#4,0C_-+*+!i)A;+P(Z(Fa>9& Fix Fortran Label Field& Page Tab OFF& Page Tab ON& Read Word& Setup FORTRAN LibraryExpand for FortranFormat FORTRAN OutputFortran Data ModeFortran ModeFortran TabifyFortran UntabifyInsert Identification FieldRemove Identification Field^R Date Line Modified^R Eliminate Fortran Comment Field^R Fill Tab Field With Spaces^R Fortran Continuation Line Next^R Fortran Merge Continuation With Previous^R Fortran Newline and Maybe Continuation^R Fortran Read Hollerith^R Indent for Fortran^R Move to Fortran Comment Field^R Move to Next Fortran Comment Field^R Move to Previous Fortran Comment Field^R Show Columns^R Show Data Columns~DIRECTORY~~DOC~ & Fix Fortran Label Field~DOC~ & Page Tab OFF~DOC~ & Page Tab ON~DOC~ & Read Word~DOC~ & Setup FORTRAN Library~DOC~ Expand for Fortran~DOC~ Format FORTRAN Output~DOC~ Fortran Data Mode~DOC~ Fortran Mode~DOC~ Fortran Tabify~DOC~ Fortran Untabify~DOC~ Insert Identification Field~DOC~ Remove Identification Field~DOC~ ^R Date Line Modified~DOC~ ^R Eliminate Fortran Comment Field~DOC~ ^R Fill Tab Field With Spaces~DOC~ ^R Fortran Continuation Line Next~DOC~ ^R Fortran Merge Continuation With Previous~DOC~ ^R Fortran Newline and Maybe Continuation~DOC~ ^R Fortran Read Hollerith~DOC~ ^R Indent for Fortran~DOC~ ^R Move to Fortran Comment Field~DOC~ ^R Move to Next Fortran Comment Field~DOC~ ^R Move to Previous Fortran Comment Field~DOC~ ^R Show Columns~DOC~ ^R Show Data Columns~DOC~ ~Filename~~Filename~~INVERT~0FO..QFortran Indent With Tabs"E 0M.CFortran Indent With Tabs* 0= Spaces, 1= Tabs' 041400000000.,fsdate:fsfdconvert( )M.CIdentification Field Text* Text to be insert in ID field .[0 fsshpos[1 q1/8+1*8-q1 q0,.fsz"E' z"E' [sfstoplineus [a[b[c[d :iaqaud .(0l:fb "L z-."E:ic..... ' "#1a"D32:ia46:id9:ic'"#:ic..... '' 9:ib' "#6,32:ib:ic.....  0l5:cW0,1a-32"N:ic .'')j :i*Ba7 72[0 :i*cd|--------------------------Program Text--------------------------|...[1 FSRGETTY"n @VFS^RVPOS-qs-3f"g+qsfstopline WFT 0 1qsfstopline' "#+4+qsfstopline WFT1 0 qsfstopline'' "# FT1 0 ' [0[1 J<:S;rd1a-32f(wd)> J<.-z; 1f .u1 :lq1+66-."lq1+66,.k' l>> J<.-z;:l M(M.M^R Delete Horizontal Space) l>J .[0FF"e0l' "#l' (-1,1a-C)*(-1,1a-c)*(-1,1a-*)"e :K.-1,q0' "#q0j0'.-z"eiC13i10i2r.-1,.+2' l.-z"efsshpos"n13i10iiC13i10i2r.-3,.+2' "#iC13i10i2r.-1,.+1'' "# (-1,1a-C)*(-1,1a-c)*(-1,1a-*)"niC13i10i2r.-1,.+2' "#1M(M.M^R Move to Fortran Comment Field)''0l.-b"eiC13i10i2r.-1,.+2' -l(-1,1a-C)*(-1,1a-c)*(-1,1a-*)"nliC13i10i2r.-1,.+2' "#1M(M.M^R Move to Fortran Comment Field)'[9 0l(-1,1a-C)*(-1,1a-c)*(-1,1a-*)"e q9-1u9' q9:"gc0' .[0 q9<-l.-q0"e13i10i2r' (-1,1a-C)*(-1,1a-c)*(-1,1a-*)"n -1,1a-13"eiCr' "#liC13i10i3r''> c.-1,q0.[0m(m.m^R CRLF) 1m(m.m^R Indent for Fortran)wq0,..[0@m(m.m^R Delete Horizontal Space)q0-."g.[0' (-1,1a-13)*(-1,1a+1)"nm(m.m^R Fortran Continuation Line Next)' "#m(m.m^R CRLF)wFm(M.M^R Indent for Fortran)' q0,.0l.-b"e0'.+7u0 -1m(m.m^R Indent for Fortran) -2d z-q0"g.,q0'"#.,z'FF-2"e0' 0fo..QFortran Insert Tabs in Text"n fsshpos-5"gf@m(qA)'' z[9 .[0 :l.-q0u0 0l .[2 FM(M.M& Fix Fortran Label Field) .[1 :l.-q0-q1"lq1j'"#.-q0j' q2,q1m.m^R Delete Horizontal Space[9 qFortran Indent With Tabs[8 +fo..qFortran Continuation Character[7 m9 FF"n F"loUndent' "#oContin'' -1,1a-q7"ed' 1[0<-1,1a-71."g0;' -1,1a-60."l0;' c%0> m9 fshposition"E -1,1a-67"E2u01c0,1A-13"C1U01R'' "#-1,1a-99"E2u01c0,1A-13"C1U01R''' M9' q8"e' "#i '  !Contin! 0l Q8"N 9i -1,1a-q7"E1d' q7"Dq7i'"#i9'' "#i  -1,1a-q7"nq7i''  !Undent! m9 q8"N 0,1a"'d"Ld'' "#-1,1a-q7"ed'' 1,m(m.m& Read Line)Hollerith: [1 fq1:"g0' 12.[..E .(fq1\iHg1),. M(M.M& Init Buffer Locals) M(M.MMake Local Q-Register)..D M.M^R Indent for FortranM.QI M.M^R Fill Tab Field with SpacesM.Q..I M.M^R Date Line ModifiedM.Q..M ff"N[0' "#z-b"n.(J:S  [0)J' "#0FO..QFortran Indent With Tabs[0'' 1,Q0M.LFortran Indent With Tabs qFortran Indent with Tabs"E QQ..QW)M.Q.' M.M^R Fortran Continuation Line NextM.Q..J M.M^R Fortran Continuation Line NextM.Q...J M.M^R Fortran Merge Continuation with PreviousM.Q..^ M.M^R Fortran Newline and Maybe ContinuationM.QJ M.M^R Move to Fortran comment fieldM.Q..; M.M^R Move to Next Fortran comment fieldM.Q..N M.M^R Up Comment LineU0 (Q..P-Q0)"EM.M^R Move to Previous Fortran comment fieldM.Q..P' M.M^R Eliminate Fortran commentM.Q...; M.M^R Show ColumnsM.Q..= 1,72M.LComment Column 1,(:I*!)M.LComment Start qfortran Indent with Tabs"N:i*TabsM.LSubmode' 1,1M.LDisplay Matching ParenW 1,(M.M^R INDENT FOR COMMENT)M.Q..| 1,(M.M^R DOWN COMMENT LINE)M.Q...N 1,(M.M^R UP COMMENT LINE)M.Q...P 1,32M.LComment Column 1,(:i*!)M.LComment Start f[bbind [yW9:iywqfortran Indent with tabs"E6,32:iy' 12i 15IIyISUBROUTINE 15iIyIFUNCTION 15IIyIINTEGER FUNCTION 15IIyIREAL FUNCTION 15IIyILOGICAL FUNCTION 15IIyICOMPLEX FUNCTION 15IIyIDOUBLE PRECISION FUNCTION HFX*M.LPAGE DELIMITER ]YF]BBIND Q.0,1M(M.M& Set Mode Line)Fortran :I*[0 fq0"G0,fszM(m.M& Save For Undo)Fortran Tabify' ]0 [0[1[2[3[4[5[6[7[8[9 [..0[..1[..2 F~(QMODE)FORTRAN"N0' J -1M(M.M& PAGE TAB ON) M(M.MFortran Mode) J:I*[0 fq0"G0,fszM(m.M& Save For Undo)Fortran Untabify' ]0 [0[1[2[3[4[5[6[7[8[9 F~(QMODE)FORTRAN"N0' J -1M(M.M& PAGE TAB OFF) M(M.MFortran Mode) J :I*[0 fq0"G0,fszM(m.M& Save For Undo)Inserting Identification Fields' ]0 [0[1[2[3[4[5[6[7[8[9 [..0[..1[..2[E[F[G[Q[R[S-UE F~(QMODE)FORTRAN"N0' 7uC FF"G4UC' F[BBIND QBuffer Filenamesf"nfsdfile' FSDFN1F6 .-QCF"G*(-1)D' 7-.F"G,48I' 0uQ1uR10uSHFXQ f]bbind JM(M.MFortran Untabify) J<.-Z; QE"L1:FBPROGRAMSUBROUTINEOVERLAYBLOCKFUNCTIONUF QF"NQF+4"G0LM(M.M& READ WORD)UG WF~GPROGRAM"EOHAVEIT' WF~GSUBROUTINE"EOHAVEIT' WF~GOVERLAY"EOHAVEIT' OOUT' "#0LM(M.M& READ WORD)UG WF~GFUNCTION"EOHAVEIT' WF~GBLOCK"EM(M.M& READ WORD)UG WF~GDATA"EOHAVEIT' OOUT' WF~GINTEGER"EM(M.M& READ WORD)UG WF~GFUNCTION"EOHAVEIT' OOUT' WF~GREAL"EM(M.M& READ WORD)UG WF~GFUNCTION"EOHAVEIT' OOUT' WF~GCOMPLEX"EM(M.M& READ WORD)UG WF~GFUNCTION"EOHAVEIT' OOUT' WF~GLOGICAL"EM(M.M& READ WORD)UG WF~GFUNCTION"EOHAVEIT' OOUT' WF~GDOUBLE"EM(M.M& READ WORD)UG WF~GPRECISION"EM(M.M& READ WORD)UG WF~GFUNCTION"EOHAVEIT''' OOUT' !HAVEIT! 1M(M.M& READ WORD)U6 F~(FSDFN1)6"N F[BBIND G6.-QCF"G*(-1)D' 7-.F"G,48I' 0uQ1uR10uSHFXQ f]bbind' !OUT!'' 0L .U0:L.-Q0U0 72-Q0F"G,32I' "#W0L72CW:K' GQWQR\ %R-QS+1"G QS*10US .,(GQ-D.)FXQ' L> J1fsechoflush J[E :S "L@FT****Please run the command (MM Tab OFF) @FT to remove the TABS in the file  0fsechoactivew' J<.-Z; I/ .U0:L QE"L .-Q0-72F"G*(-1)D -S C 0A-72"E -1A"D:L'' :K'' "#:L-S C:K' .U10LC (Q1-Q0)/8U4 Q4"NQE"L1U4'' 8U5 Q4"G QE"L 6U51A-67"E8U5'' Q4< Q5C8U5.U2 Q2-8U6-S C Q6-.F"GC' Q2-.U3 Q3F"GD9I' Q3-1"EC'>' 0LDL> QE"LJ <.-Z; .U0S  RW.-Q0U1 Q1-5"E0K9I 1A"DONEXT1' DWI9ONEXT1' Q1"EONEXT1' Q1-5"L0K 1A-67"EONEXT1' \W.U2 :S "EONEXT1' RW0A-32"E-D9IR' Q2,.K' !NEXT1! L>'J[E <:S ;-D> 0U00U10U2 J<:S ; 0L.U0 0U71A-67"E1U7' S  -D.-Q0U3 QE"L Q7"E Q3-5F"G-1U3''' 8-(Q3-((Q3/8)*8))F"G,32I' QE"L .-Q0-9"L Q7"E-2D 1A"D-D''''> :I*[0 fq0"G0,fszM(m.M& Save For Undo)Removing Identification Fields' ]0 [a[b FF-2F"Euaub' "#+1"E8uauB' "#8ua80ub'' qb-qa:"G :I*CGoal Column is less than or equal to number of chars to delete. fsechodisp 0fsechoact' j<.-z; :lfshpos-qb"E-qad' 0l.(:l.,):fb "E0l'"#1c' :k 1l> j[A[B FF"E1UA'"#UA' QAFWLW-QAFWXB QBF~(QMode)FORTRAN"N F~(fsdfn2)FOR"N'' [a[B[c (:I*)FO..QIdentification Field Textuc QB"L-1@l' QB< FQC"G 0ua 0l:FB "L 1R6-FShposition"G2ua'' :L72+qa-FshpositionF"G,32i'"#D' gc' qB"L-'1l> -QB@FFJM(M.MStrip SOS Line Number) 0[L60[P FF&1"N -5F"G+5UP'W' [C J<.-z; 0l1:C;0AUC -1D %L-QP"G1UL12I' QC-13"E13I1l!' QC-12"E1UL1l!' QC-32"E1l!' QC-48"E %L-QP"G1UL12I' "#13I10I' 1l!' QC-49"E QL"G1UL12I' 1l!' QC-43"E 0,0A-10"E-1D' 0,0A-13"N13I' QL-1UL1l!' QC-42"E QL-1UL 1l!' QC-45"E %LW%L-QP"G1UL12I' "#13I10I13I10I' 1l!' QC-46"E %L-QP"G1UL12I' "#13I10I' 1l!' QC-44"E %LW%L-QP"G1UL12I' "#13I10I13I10I' 1l!' QC-50"E QL+(QP+1/2)"G1UL12I1l!' QP+1/2-QLF(+QLUL)F"G<13i10I>' 1l!' QC-51"E QL+(QP+2/3)"G1UL12I1l!' QL/3+1*(QP+2/3)-QLF(+QLUL)F"G<13i10I>' 1l!' QC-47"E QL+(QP+5/6)"G1UL12I1l!' QL/6+1*(QP+5/6)-QLF(+QLUL)F"G<13i10I>' 1l!' 1L> JM(M.M& Init Buffer Locals) M(M.MMake Local Q-Register)..D 1,(W377.@FS^RINIT)M.Q 1,(W177.@FS^RINIT)M.Q. M.M^R Show Data ColumnsM.Q..= 1M(M.M& Set Mode Line)Fortran Data fsz"E' z"E' [a[b[c[d[0[1fstopline f[bbind 0uafswidth/10F"Gua' 0ubqa<10,32i%B\fk(w-fwlw)d1fwl>0fx0 qa0ubfswidth-(qa*10)f"G<%B\W>0fx1 f]bbind FSRGETTY"n @VFS^RVPOS-qs-3f"g+qsfstopline WFT 0 1qsfstopline' "#+4+qsfstopline WFT1 0 qsfstopline'' "# FT1 0 ' FORTRANWinning macros for editing FortranS Define Initial Parameters for this library^R Look like Tab, but use spaces^R Show Current Line with column numbers above it|S Expand RLBs compressed fortran format to be readable For use locally on MC only. ^S is a space efficiency hack. This routine will search for Control-S, delete it and next char, using next chars ascii val minus 32 as number of spaces to insert.^R If on comment line, delete its text. Comment lines have a C in column 1^R Move to next comment field Moves to next Comment field. If there is no other comment field before the end of buffer or the next statement, creates one on the next line.^R Move to prev comment field Moves to previous Comment field. If there is no other comment field between point and head of buffer or previous statement, creates one on the next line.^R Move to a Fortran comment line If on a comment line, move to the head of it. If not on one, use preceding line if it is one, else create one. ^R Get new line, make it a continuation^R Newline plus tab. If at end of line, tab for a new statement. Else tab for a continuation.^R Kill CRLF and indentation Appends current line to previous. Removes the conttinuation char.y^R Indent correctly for Fortran With no arg, indent to column 7, removing contin char if found With positive arg, indent to column 6, putting a contin char there With negative arg, remove indentation and contin char Fortran Continuation Character may be set to a fixnum corresponding to the ascii value of continuation character to be used. Default = 43 (Char. = +)) Fortran Indent With Tabs not 0 means use a tab to fill out the label field instead of spaces (Default = Spaces)S Arrange label field correctly Expects to be run at start of line and will format the next 6 chars if on line as necessary... With an arg, this is a continuation line, without it is not.Read a hollerith string to insert from echo areaS Set up for Fortran editting An argument specifies the value of the variable Fortran Indent with Tabs. Otherwise checks to see if any lines start with a tab and sets the mode for working with tabs. Fortran Mode defines the following Tab does Indent for Fortran (arg>1 = continuation, arg<=0 remove indent) M-I does Like normal M-I but fills with spaces Linefeed makes a CRLF and indents correctly M-^ removes indentation and leading CRLF and attaches to previous line C-M-J M-J makes a CRLF and indents for a continuation Rubout deletes backwards changing tabs to spaces M-; moves to head of comment line, making one if needed M-N moves to next fortran comment line, making one if needed M-P moves to previous fortran comment line, making one if needed (If M-P is already define no key redefinition is made. C-M-; eliminates the comment text on a comment line M-= displays a helpful column chart showing where columns 6 and 72 are M-M inserts the current date in the identification field.C Places TABS at the correct places in a file. This will replace spaces at the beginning of a line by tabs in a file, allowed only in Fortran mode. A string argument says to save the original text for M-X Undo.C Replaces TABS by SPACES in a file or the buffer. This will replace spaces at the beginning of a line by tabs in a file allowed only in Fortran mode. A string argument says to save the original text for M-X Undo.C Creates Card Image Identification Fields. The indentification field is made up of the file name and a sequential card count. Given an argument, this macro uses the first FOUR letters of the filename to make of the id field. A string argument says to save the original text for M-X Undo.S Replaces SPACES by TABS in the current page.S Replaces TABS by SPACES in the pageC Removes the identification field number in columns 72 to 80, and any trailing blanks on the line. The arguments specify the Number of characters to remove (Precomma, default=8), and the goal column (Postcomma, default=80). A string argument implies that the undo buffer will be used.S Read the following word and return. Negative Arguments make sense.^R Inserts todays date in the identification field. An argument is a repeat count. A flag called identification field text defines what is inserted with todays date as the default.C Replaces the FORTRAN Carriage Control. This macro changes the carriage control in first column to its corresponding control character sequence. The single argument is the page length desired with the default being 60 linesS Set up for Data editing Makes Rubout the Tab-hacking Rubout. M-= runs ^R Show Data Columns.^R Show Current Line with column numbers above it& Setup FORTRAN Library ^R Fill Tab Field With Spaces ^R Show Columns Expand for Fortran ^R Eliminate Fortran Comment Field ^R Move to Next Fortran Comment Field ^R Move to Previous Fortran Comment Field ^R Move to Fortran Comment Field ^R Fortran Continuation Line Next ^R Fortran Newline and Maybe Continuation ^R Fortran Merge Continuation With Previous ^R Indent for Fortran & Fix Fortran Label Field ^R Fortran Read Hollerith Fortran Mode Fortran Tabify Fortran Untabify Insert Identification Field & Page Tab ON & Page Tab OFF Remove Identification Field & Read Word ^R Date Line Modified Format FORTRAN Output Fortran Data Mode ^R Show Data Columns +8+fq(+4)[20[3 <%3,-q2f2u3q3&1@;q3"l0'> f[BBindq3-1*5,q3*5g2q:..o(0)+q2