! MOVDWN.TEC ! 0JZKERJALEXEC:ASCNUM.TECA0JZXUZK0JZKER IN2MO.TTTA0JX4MU(Q5)UN0JZKER IN3MO.TTTA0JX4MU(Q5)UM0JZKER IN4MO.TTTA0JX4MU(Q5)UP0JHK0JZKER IN1MO.TTTA0JXAZK0JZKGA0J0JZKGA0JXZ0JIEBZJ27I27I0JXDZKMD^A MOVDWN.TEC - Please Be Patient As This May Take A While. 0UJ0UH1U9(QN-QM)"L@O/OK0/'(QN-QM)"E@O/OK0/' !BADD! ^A The User Has Entered A Bad Input ??? "n" = QN="m" = QM="p" = QP= The Following Relationships Must Hold: IN MOVING COULMN n THRU COLUMN m TO AFTER COLUMN p ON ALL LINES: [ m > or = n & ( p > or = m or p < n ) ] !OK0! (QP-QM)"E@O/OK01/'(QP-QM)"G@O/OK01/'2U9(QN-QP)"G@O/OK02/'@O/BADD/ !OK01! 1:A0JZXL@O/0K01/ !OK1! 1:A0JZXW!0K01! ZU2Q2-0"E@O/DONE1/'0U1(QP-Q2)"L@O/OK00/'@O/SLLL/ !OK00! (QN-1)C0XA0K(QM-QN+1)C0XR0K(QP-QM)CGB0LGA0LXWZKGR0LXBZKGWZVZU20J0,ZPWZK@O/OK1/ !DONE1! QH-3"L1%H@O/OK1/'EC@O/ENNND/!OK02! 1:A0JZXL@O/0K02/!OK2! 1:A0JZXW!0K02! ZU2Q2-0"E@O/DONE2/'0U1(QM-Q2)"L@O/OK11/'@O/SLLL/ !OK11! (QP)C0XA0K(QN-QP-1)C0XB0K(QM-QN+1)C0XR0KGB0LGAGC0LXWZKGR0LXCZKGWZV ZU20J0,ZPWZK@O/OK2/ !DONE2! QH-3"L1%H@O/OK1/'EC!ENNND! ^A Now The Last lines "n" Thru "m" Portion Are Going To Be Placed In The First Line's "p" Position. NOTE: If You're Quick Enough & You Dont Want This To Take Place You Can Type In Several Control C's And The Top Line Will Be Just Left Without The Last Lines n->m Portion. 0JZKGZ0J0JIERZJ27I27I0JXYZKMY1:A0JZKGL0JQ9-2"E@O/CAS2/' (QN-1)C0XA0K(QM-QN+1)C0XR0K(QP-QM)CGB0LGA@O/ENDD/ !CAS2! (QP)C0XA0K(QN-QP-1)C0XB0K(QM-QN+1)C0XR0KGB0LGAGC !ENDD! 0LZXTZV0JZKGZ0J0JIEWZJ27I27I0JXYZKMYGTEG@ZZZZZZ.ZZZ!SLLL!  1234567890 2345678901 3456789012 4567890123 5678901234 6789012345 7890123456 "n" = QN="m" = QM="p" = QP=This Line Length In Characters = Q2= The Current Line Is Too Short For the Specified Move 0JZT ! MOVDWN.TEC ! ! THIS COMMAND LINE WILL ALLOW THE USER TO MOVE ! ! MOVE COULMN n THRU COLUMN m TO COLUMN p ON ALL LINES ! ! OF A FILE. LIKE "MOVEIT" BUT ! ! PLACES THE m thru n PORTION DOWN TO THE NEXT LINE IN ! ! THE p POSITION. LIKE A GOOD ROTATE ROUTINE THE LAST ! ! LINE IN THE FILE'S m thru n IS PLACED IN THE FIRST ! ! LINES p POSITION. ! ! ! ! necessary conditions: ! ! ! ![ m > or = n & ( p > or = m or p < n ) ] ! ! ! ! THE ORIGIONAL FILE('S) WILL BE RENAMED "FILENAME.BAK" ! ! THE RESULTING FILE('S) WILL BE NAMED "FILENAME.FILETYPE" ! ! ! ! GET THE MACRO FOR DOING THE ASCII NUMBER TO TECO NUMBER CONVERSION ! ! PUT IT IN BUFFER "U" ! ! THE NUMBER IT CONVERTS TO IS IN BUFFER "5" ! ! THE NUMBER IT CONVERTS FROM IS IN BUFFER "4" ! 0JZKERJALEXEC:ASCNUM.TECA0JZXUZK ! MOVE COULMN n THRU COLUMN m TO COLUMN p ON ALL LINES ! 0JZKER IN2.! GET "n" THE USER DESIRES TO USE ! ! ELIMINATE ANY CARRIAGE RETURNS! A ! CONVERT THE NUMBER FROM ASCII TO THE TECO EQIVALENT ! 0JX4MU! LOAD BUFFER "N" WITH THE VALUE OF THE CHARACTER ! (Q5)UN 0JZKER IN3MO.TTT! GET "m" THE USER DESIRES TO USE ! ! ELIMINATE ANY CARRIAGE RETURNS! A ! CONVERT THE NUMBER FROM ASCII TO THE TECO EQIVALENT ! 0JX4MU! LOAD BUFFER "M" WITH THE VALUE OF THE CHARACTER ! (Q5)UM 0JZKER IN4MO.TTT! GET "p" THE USER DESIRES TO USE ! ! ELIMINATE ANY CARRIAGE RETURNS! A ! CONVERT THE NUMBER FROM ASCII TO THE TECO EQIVALENT ! 0JX4MU! LOAD BUFFER "P" WITH THE VALUE OF THE CHARACTER ! (Q5)UP 0JHK 0JZKER IN1MO.TTT! GET THE FILENAME THE USER DESIRES TO PREPROCESS ! ! ELIMINATE ANY CARRIAGE RETURNS! A ! SAVE IT IN "A" BUFFER! 0JXAZK ! READ THE INPUT FILE FROM BUFFER "D" ! 0JZKGA0J ! SAVE BUFFER A'S FILE NAME IN BUFFER "Z" ! 0JZKGA0JXZ0JIEBZJ27I27I0JXDZKMD ! NOW GET A PAGE AT A TIME AND CONVERT THE TABS INTO THE APPROPRIATE ! ! NUMBER OF SPACES TO THE COLUMNS STILL LINE UP ! ^A MOVDWN.TEC - Please Be Patient As This May Take A While.  ! INITALIZE REGS ! 0UJ 0UH ! PERFORM A TEST SO THE FOLLOWING COMDITIONS ARE MET ! ! MOVE COULMN n THRU COLUMN m TO COLUMN p ON ALL LINES ! ! [ m > or = n & ( p > m or p < n ) ] ! ! SET THE CASE FLAG TO DEFAULT CASE 1 ! ! CASE 1 MEANS MOVING N->M PART TOWARD END OF LINE ! ! CASE 2 MEANS MOVING N->M PART TOWARD FRONT OF LINE ! 1U9 (QN-QM)"L@O/OK0/' (QN-QM)"E@O/OK0/' ! HERE IF ITS BAD ! !BADD! ^A The User Has Entered A Bad Input ??? "n" = QN="m" = QM="p" = QP= The Following Relationships Must Hold: IN MOVING COULMN n THRU COLUMN m TO AFTER COLUMN p ON ALL LINES: [ m > or = n & ( p > or = m or p < n ) ] ZJC! JUST KILL THE WHOLE MACRO HERE FOR NOW ! !OK0! ! MOVE COULMN n THRU COLUMN m TO COLUMN p ON ALL LINES ! (QP-QM)"E ! P=M SO DO CASE 1 ! @O/ (QP-QM)"G ! P>M SO DO CASE 1 ! @O/OK01/' ! SET THE CASE FLAG TO CASE 2 ! 2U9 (QN-QP)"G ! PM PART TOWARD END OF LINE ! 1:A0JZXW!0K01! !PUT BUFFER LENGTH IN BUFFER 2 ! ZU2 Q2-0"E@O/DONE1/' 0U1 ! SEPERATE THE COLUMNS A DESIRED ! ! CASE 1 ! ! FIRST A TEST ! (QP-Q2)"L@O/OK00/'@O/SLLL/ ! CASE 1 MEANS MOVING N->M PART TOWARD END OF LINE ! ! CASE 2 MEANS MOVING N->M PART TOWARD FRONT OF LINE ! !OK00! ! SAVE FRONT OF LINE IN "A" ! (QN-1)C0XA0K ! SAVE N-> PART IN "R" ! (QM-QN+1)C0XR0K ! GO THE REST OF WAY FORWARD SO TO PLACE THE N->M PART ! (QP-QM)C ! PLACE THE N->M PART FROM PREVIOUS LINE FROM "B" ! GB ! BACK TO FRONT TO GET REST OF THE FRONT OF THE LINE ! 0LGA ! SAVE THE WHOLE LINE SO CAN SAVE THIS N->M PART FOR NEXT LINE IN "B" ! 0LXWZKGR0LXBZKGW ! SHOW THE USER THE RESULT OF THE MOVE ! ZV !PUT BUFFER LENGTH IN BUFFER 2 ! ZU2 ! WRITE THIS PAGES'S WORTH INTO THE OUTPUT BUFFER & GET ANOTHER ! 0J0,ZPWZK!********************************! @O/OK1/ ! ALL DONE CONVERTING FILE THIS COPY ! !DONE1! ! NOT 3 EMPTY BUFFERS YET SO NOT DONE ! QH-3"L1%H@O/OK1/' EC@O/ENNND/ !OK02! ! SAVE THE FIRST LINE SO WE CAN PLACE THE LAST LINES N THRU M PORTION IN IT ! 1:A0JZXL@O/0K02/ !OK2! !************ SECOND CASE'S LOOP ********************! ! CASE 2 MEANS MOVING N->M PART TOWARD FRONT OF LINE ! 1:A0JZXW!0K02! !PUT BUFFER LENGTH IN BUFFER 2 ! ZU2 Q2-0"E@O/DONE2/' 0U1 ! SEPERATE THE COLUMNS A DESIRED ! ! CASE 2 ! ! FIRST A TEST ! (QM-Q2)"L@O/OK11/'@O/SLLL/ ! CASE 1 MEANS MOVING N->M PART TOWARD END OF LINE ! ! CASE 2 MEANS MOVING N->M PART TOWARD FRONT OF LINE ! !OK11! ! SAVE FRONT OF LINE IN "A" ! (QP)C0XA0K ! SAVE 2ND PART OF FRONT OF LINE IN "B" (STUFF THAT'LL COME AFTER N->M PART) ! (QN-QP-1)C0XB0K ! SAVE N->M PART IN "R" ! (QM-QN+1)C0XR0K ! BACK TO FRONT TO GET REST OF THE FRONT OF THE LINE ! ! GET THE 2ND PART OF FRONT OF LINE ! GB ! NOW GO TO THE FRONT & GET VERY FRONT PART THEN N->M PART FROM LAST LINE ! ! FROM "C" ! 0LGAGC ! SAVE THE WHOLE LINE SO CAN SAVE THIS N->M PART FOR NEXT LINE IN "C" ! 0LXWZKGR0LXCZKGW ! SHOW THE USER THE RESULT OF THE MOVE ! ZV !PUT BUFFER LENGTH IN BUFFER 2 ! ZU2 ! WRITE THIS PAGES'S WORTH INTO THE OUTPUT BUFFER & GET ANOTHER ! 0J0,ZPWZK!********************************! @O/OK2/ ! ALL DONE CONVERTING FILE THIS COPY ! !DONE2! ! NOT 3 EMPTY BUFFERS YET SO NOT DONE ! QH-3"L1%H@O/OK1/' EC!ENNND! ^A Now The Last lines "n" Thru "m" Portion Are Going To Be Placed In The First Line's "p" Position. NOTE: If You're Quick Enough & You Dont Want This To Take Place You Can Type In Several Control C's And The Top Line Will Be Just Left Without The Last Lines n->m Portion.  ! READ THE INPUT FILE AGAIN FROM BUFFER "Y" ! 0JZKGZ0J 0JIERZJ27I27I0JXYZKMY ! GET THE FIRST LINE FROM "L" SO WE CAN PLACE THE ! ! LAST LINES N THRU M PORTION IN IT ! ! THROW AWAY THE FILES FIRST LINE ! 1:A0JZKGL0J ! PLACE N THRU M ! ! TEST THE CASE FLAG ! Q9-2"E@O/CAS2/' ! DO CASE 1 ! ! SAVE FRONT OF LINE IN "A" ! (QN-1)C0XA0K ! SAVE N-> PART IN "R" ! (QM-QN+1)C0XR0K ! GO THE REST OF WAY FORWARD SO TO PLACE THE N->M PART ! (QP-QM)C ! PLACE THE N->M PART FROM PREVIOUS LINE FROM "B" ! GB ! BACK TO FRONT TO GET REST OF THE FRONT OF THE LINE ! 0LGA ! DONE CASE 1 ! @O/ENDD/ !CAS2! ! DO CASE 2 ! ! SAVE FRONT OF LINE IN "A" ! (QP)C0XA0K ! SAVE 2ND PART OF FRONT OF LINE IN "B" (STUFF THAT'LL COME AFTER N->M PART) ! (QN-QP-1)C0XB0K ! SAVE N->M PART IN "R" ! (QM-QN+1)C0XR0K ! BACK TO FRONT TO GET REST OF THE FRONT OF THE LINE ! ! GET THE 2ND PART OF FRONT OF LINE ! GB ! NOW GO TO THE FRONT & GET VERY FRONT PART THEN N->M PART FROM LAST LINE ! ! FROM "C" ! 0LGAGC !ENDD! ! SAVE THE MODIFIED LINE ! 0LZXT ! SHOW THE USER THE MODIFIED FIRST LINE ! ZV ! WRITE THE OUTPUT FILE FROM BUFFER "Y" ! 0JZKGZ0J 0JIEWZJ27I27I0JXYZKMY! GET THE SAVED LINE ! GT EG@ZZZZZZ.ZZZ!SLLL!  1234567890 2345678901 3456789012 4567890123 5678901234 6789012345 7890123456 "n" = QN="m" = QM="p" = QP=This Line Length In Characters = Q2= The Current Line Is Too Short For the Specified Move 0JZT