Double Column Macro by Sherman Paddock Copyright (C) 1989 by MicroSPARC, Inc. Concord, MA 01742 START {010} E:< Msg " Double Column Macro by Sherman Paddock" + " - Copyright (C) 1988 by MicroSPARC, Inc. " : oa-K : Input : Rtn : oa-D : Esc : Clear : R = 127 : $9 = " " : {2 spaces} Zoom : E = Len $9 : D = Peek $10F1 : Insert : {020} oa-1 : BEGIN : {find start of double-columning} I = I + 1 : sa-B : IfNot $1 = "Right" then oa-Z : RPT : ElseOff : {030} I = L : B = B + 3 : K = K + 1 : $1 = Screen 24,I,3 : W = Val $1 - 1 : W = W * 10 : $1 = Right $1,1 : W = W + Val $1 : W = 72 - W : E = E + W + W - 3 : If W < 17 then $1 = 'RM may NOT be greater than 6.5' : GoTo sa-C : ElseOff : If E > 137 then E = 138 - Len $9 : E = E / 2 + 1 : E = 72 - E : W = E + 10 : W = W / 10 : E = E - W + 1 : $1 = 'RM may be set to ' + Str$ W + "." + Str$ E + ' thru 6.5 ONLY' : GoTo sa-C : ElseOff : {040} oa-N >D.< Rtn : A = 0 : Posn C,L : If L > 2 then {move non-double-column lines to clipboard} sa-F : ElseOff : {050} oa-O >LM< Rtn >0< Rtn >SM< Rtn >0< Rtn >CI< Rtn >10< Rtn : Esc : {060} oa-9 : Posn C,J : J = J - 2 : oa-Z : oa-1 : oa-Z : I = 6 : {070} BEGIN : sa-1 : IfNot L > J then RPT : ElseOff : { _ _ _ _ _ BEGIN DOUBLE-COLUMNING _ _ _ _ _ _} {080} BEGIN : up : $1 = Screen 42,24,4 : If $1 = "Stic" then {Clean off excess Returns} oa-D : down : left : Rtn : J = J - 1 : RPT : ElseOff : down : oa-O >NP< Rtn >SM< Rtn >254< Rtn : Esc : {last line is now set to Marker 254} {090} oa-1 : If A = 1 then oa-M >F< ElseOff : oa-F : right : right : Rtn >0< Rtn : Rtn : up : {100} {zero the right & left margins} oa-O >RM< Rtn >0< Rtn >LM< Rtn >0< Rtn >SM< Rtn >0< Rtn >CI< Rtn >17< Rtn >SM< Rtn >1< Rtn : Esc : {very first line is now set to Marker 1} {110} oa-Z : A = W - 2 : B = B + 1 : I = K + 1 : J = J - 3 : If I > 10 then I = 10 : ElseOff : sa-6 : oa-K : Rtn : {120} BEGIN : sa-3 : If J > 1 then : down : oa-Z : down : I = 13 : RPT : ElseOff : {130} oa-D : Rtn : down : oa-left : Posn M,L : If M > 1 then down : oa-D : Rtn : up : sa-8 : print $9 : left : A = A + A : sa-D : oa-Spc : right : If J = 0 then down : ElseOff : {140} oa-D : down : Rtn : oa-F : right : right : Rtn >0< Rtn : Rtn : down : oa-D : up : up : up : Rtn : {work settings are now deleted} {150} oa-Z : oa-1 : $1 = "Double-Columning Complete" : GoTo sa-C>! {_ _DETERMINE WHERE TO START DOUBLE-COLUMN _ _} {160} B:< BEGIN : Posn C,L : If L = I then I = I + 1 : down : RPT : ElseOff : If I > L then $1 = 'No Right-Margin MARKER has been set' : oa-1 : GoTo sa-C : ElseOff : B = L - I + B + 1 : K = L - B : L = L + 1 : If L > 21 then L = 21 : ElseOff : oa-Z : $1 = Screen 9,L,5 >! {_ _PRINT ERROR OR ENDING MESSAGE AND QUIT _ _} {170} C:< Bell : msg $1 + ' - Press any key' : Key : msg "" : If D = 1 then {reset to overstrike mode} oa-E : ctrl-x : ElseOff : Stop >! {_ _ _ INSERT SELECTED NUMBER OF SPACES _ _ _ } {180} D:< BEGIN : If M < A then Spc : M = M + 1 : RPT >! { _ _ _ _ MOVE TOP LINES TO CLIPBOARD _ _ _ _ } {190} F:< up : oa-left : oa-M >T< A = 1 : BEGIN : Posn C,L : If L > 1 then up : RPT : ElseOff : Rtn : down >! { _ _ _ _ _ _ BLOCK OFF ALL LINES _ _ _ _ _ _ } {200} 1:< BEGIN : IfNot I = 21 then I = I + 1 : ElseOff : down : $1 = Screen 1,I,8 : If $1 = "--------" then sa-2 : ElseOff : V = PEEK $10F5 : If L < J then If V = 160 then {in case of line of spaces} oa-Spc : right : del : oa-right : V = Peek $10F5 : oa-left : IfNot V = 160 then right : del : spc : left : ElseOff : {210} oa-left : Posn C,L : If C > W + 1 then left : del : right : left : C = C - 1 : ElseOff : IfNot C = 1 then left : C = C - 1 : Else : oa-Spc : C = C + 1 : ElseOff : V = Peek $10F5 : IfNot V = 160 then IfNot V = R + 128 then right : C = C + 1 : ElseOff : {220} BEGIN : IfNot C = W Then Spc : C = C + 1 : RPT : ElseOff : V = Peek $10F5 : IfNot V = R + 128 then sa-K : ElseOff : oa-Right >! { _ _ _ INSURE IT IS A PRINT STATEMENT _ _ _ _} {225} 2:< oa-Z : $1 = Screen 1,I,8 : oa-Z : IfNot $1 = "--------" then {reset end of file} up : Posn C,J : J = J - 2 : If I = 21 then I = I - 1 >! { _ _ _ _ GET RID OF EXCESSIVE SPACES _ _ _ _ } {230} K:< Rtn : down : up : BEGIN : V = Peek $10F5 : If V = 160 then right : del : RPT : Else : del >! { _ _ _ _ DETERMINE LENGTH OF PAGES _ _ _ _ _ } {240} 3:< P = 0 : L = 0 : BEGIN : L = L + 1 : If I < 22 then I = I + 1 : ElseOff : $1 = Screen 33,I,11 : IfNot $1 = "End of Page" then down : RPT : ElseOff : If L > J then {calculate because of odd page} P = L / 2 : L = L - P : ElseOff : L = L - 1 : If P = 0 then P = L : L = 0 : down : RPT : ElseOff : {260} Q = 0 : down : oa-D : Esc : {erase page No.} If P < L then Q = L - P : L = P : ElseOff : P = P + L : J = J - P : L = P / 2 : P = P - L : M = L + Q : {make length of both pages same} {_ _ _ _ _ GET TO TOP OF SECOND PAGE _ _ _ _ _} {270} BEGIN : up : M = M - 1 : IfNot M = 0 then {find beginning of second page} RPT : ElseOff : sa-6 : {clean off excess CR's on page brakes} oa-O >SM< Rtn >2< Rtn : Esc : {mark 2nd page} oa-Z : BEGIN : sa-N : If L > 0 then RPT : Else oa-F : right : right : Rtn >1< Rtn : Rtn : down : sa-6 : oa-K : Rtn : oa-F : {get to second page} right : right : Rtn >1< Rtn : Rtn >! { _ _ _ _ MOVE LINE UP TO FIRST PAGE _ _ _ _ _} {280} N:< oa-F : right : right : Rtn >2< Rtn : Rtn : down : sa-8 : N = F : right : del : $1 = Screen M,13,1 : S = 0 : If $1 = Chr$ 32 then left : oa-spc : S = 1 : ElseOff : {290} left : $2 = "" : oa-M >T< {move line to clip board} BEGIN : $2 = Screen M,13,1 + $2 : left : M = M - 1 : {find start of line} If M > 1 then RPT : ElseOff : $2 = $9 + Screen M,13,1 + $2 : Rtn : right : del : {line is now deleted} oa-F : right : right : Rtn >1< Rtn : Rtn : {find top marker} oa-D : Rtn : down : oa-O >SM< Rtn >1< Rtn : Esc : up : up : sa-8 : right : L = L - 1 : {print line and insert divider} If N > 0 then {move from clipboard to keep Ctrl chrs} N = 0 : oa-M >F< del : print $9 : Else : {print w/o Ctrl chrs} left : print $2 : If S = 1 then del : oa-spc >! { _ _ ERASE EXCESSIVE CR's ON PAGE BREAKS _ _ } {300} 6:< BEGIN : $1 = Screen 42,24,4 : If $1 = "Stic" then oa-D : down : left : Rtn : sa-U : RPT >! {310} U:< If J > 0 then {there are still more pages left} J = J - 1 : Else sa-V >! {320} V:< If L = P then {columns one & two are equal} L = L - 1 : Else P = P - 1 : {cols 1 & 2 are not equal, so add line} oa-O >SM< Rtn >10< Rtn : esc : oa-F : right : right : Rtn >254< Rtn : Rtn : up : Rtn : del : M = 0 : sa-D : oa-spc : oa-F : right : right : Rtn >10< Rtn : Rtn : oa-D : Rtn >! {_ _ _ _ ADD EXTRA SPACES IF CTRL CODE _ _ _ _} {330} 8:< M = 0 : C = 0 : F = 0 : BEGIN : M = M + 1 : $1 = Screen 42,24,4 : IfNot $1 = "Line" then sa-Z : Else V = Peek $10F5 : If V = 255 then F = 1 : ElseOff : right : If M < A then RPT : ElseOff : BEGIN : If C > 0 then Spc : C = C - 1 : M = M + 1 : RPT >! Z:< IfNot $1 = "Stic" then {increase line & mark for clipboard} C = C + 1 : F = 1 : Else : right : del : spc : left >!