Am 17.08.2019 um 02:23 schrieb Glenn Knickerbocker: > [...] > A way that's a little tricky but avoids messing with combining records > is to use DROP LAST to delay a copy of the file by one record, [...] > > (end /) ... > | dup: fanout > | strfind '_' > | all: faninany > | ... > / dup: > | drop last 1 > | strnfind '_' > | all: > [...]
Awesome tricky -- thank you for this idea. Once more I learned something from this list. (The 'if' Rob used in his suggestion was also new to me.) I will use RITA to find out the best solution. Even it's for hobby only I am not happy with the performance of my pipeline, for files of 50'000 lines and more I have to wait several seconds too much. > 0 * * * Top of File * * * > 1 /* RUSPIL EXEC: RedUce PIoneer trace Log */ > 2 "PIPE(end ?)<" arg(1), > 3 '! strlit conditional append', /* a broom for the runout cycle */ > 4 '! spec number 1 *-* nw', /* insert a line number */ > 5 '!a:lookup w2 autoadd master', /* stumbled we over it earlier? */ > 6 '! spec /see line/ 1 *-* 13', /* tag if YES */ > 7 '!b:faninany', /* gather with untagged */ > 8 '! notinside /see/ / /', /* keep only 1st line of rerun */ > 9 '!c:l w1 /see/', /* keep reference lines */ > 10 '!d:faninany', /* gather with treated rest */ > 11 '!e:if between /see/ 2', /* like Rob suggested: */ > 12 '! join x05', /* make it 1 line of 2 columns */ > 13 '! spec f2 1 write f1 1', /* write it swapped */ > 14 '!e:', /* end if */ > 15 '! >' arg(1), /* replace input file */ > 16 '?a:!b:', /* short through */ > 17 '?c:', /* from LOCATE */ > 18 '! spec stop anyeof a: w1 . select second b: w1 .', /* compute the */ > 19 'if ^eof() then print a-b 1 *-* nw fi', /* gap to next line */ > 20 '!d:' /* to FANINANY */ > 21 exit rc > 22 * * * End of File * * * Result may look like this: > SQRT LOG C1 V 80 Trunc=80 Size=902 Line=878 Col=1 Alt=0 > > > !...+....1....+....2....+....3....+....4....+....5....+....6....+....7... > 876 1112 3867 00033 C=C+1 A > > 877 see line 9 00035 CPEX 1 > > 878 29 4979 00312 P= 8 > > 879 see line 1120 00314 D1=(2) #46 > > 880 70 5008 004CA C=0 S > > 881 see line 1162 004CD P= 12 > > 882 1 5078 00D45 RTI > > 883 8909 5079 002BB ?ST=1 14, GOYES +00026 [002E1] > > 884 see line 1344 002E1 ST=0 14 > > 885 1 13988 002C0 C=C+1 B > > 886 2033 13989 002C3 GONC -0000C [002B7] > > 887 see line 3855 002B7 GOSUB +0018B [00442] > > 888 14 16022 002C6 GOSUB +0037E [00644] > > 889 see line 3841 00644 D1=(5) #20046 > > 890 1 16036 002CA GONC -00021 [002A9] > > 891 1 16037 002CD P= 12 > > 892 1 16038 002CF GOSUBL +003E3 [006B2] > > 893 1 16039 006B2 ST=0 15 > > 894 1 16040 006B5 D1=(5) #20047 > > 895 1 16041 006BC C=0 W > > 896 1 16042 006BF DAT1=C W > > 897 22 16043 006C3 D1=(5) #0074F > > 898 see line 1164 006CA D0=(5) #2005D > > 899 5 16065 002D5 GOSUB +0016D [00442] > > 900 see line 3856 00442 GOLONG +008FB [00D3D] > > 901 1 16070 002D9 ?ST=1 14, GOYES +00008 [002E1] > > 902 1 16071 002DE SHUTDN > > 903 * * * End of File * * * > > ====> X E D I T 1 File > > 00:59:05 Enter your response in vscreen > XEDIT My goal is to find out how functions return a result to the calculator's stack to enhance the emulator with a transfer from the clipboard. (Don't waste your time with it, it's is hobby only.) Ciao.....Mike -- www.Ok.de - die kostenlose E-Mail Adresse