Text processing/Max licenses in use: Difference between revisions

m
→‎{{header|Phix}}: syntax coloured, made p2js compatible
(Text processing/Max licenses in use en FreeBASIC)
m (→‎{{header|Phix}}: syntax coloured, made p2js compatible)
Line 1,813:
 
=={{header|Phix}}==
<!--<lang Phix>(phixonline)-->
Modified copy of [[[[Text_processing/Max_licenses_in_use#Euphoria|Euphoria]]]]
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Max_licences.exw</span>
<lang Phix>constant fn = open("mlijobs.txt", "r")
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span> <span style="color: #000080;font-style:italic;">-- (include version/first of next three lines only)</span>
integer maxout = 0, jobnumber
<span style="color: #008080;">include</span> <span style="color: #000000;">mlijobs</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span> <span style="color: #000080;font-style:italic;">-- global constant lines, or:
sequence jobs = {}, maxtime, scanres
--assert(write_lines("mlijobs.txt",lines)!=-1) -- first run, or get from link above, then:
string inout, jobtime
<lang Phix> --constant fnlines = openread_lines("mlijobs.txt", "r")</span>
object line
while 1 do
line = gets(fn)
if atom(line) then exit end if
scanres = scanf(line,"License %s @ %s for job %d\n")
if length(scanres)!=1 then
printf(1,"error scanning line: %s\n",{line})
{} = wait_key()
abort(0)
end if
{{inout,jobtime,jobnumber}} = scanres
if inout="OUT" then
jobs &= jobnumber
if length(jobs)>maxout then
maxout = length(jobs)
maxtime = {jobtime}
elsif length(jobs)=maxout then
maxtime = append(maxtime, jobtime)
end if
else
jobs[find(jobnumber,jobs)] = jobs[$]
jobs = jobs[1..$-1]
end if
end while
close(fn)
<span style="color: #004080;">integer</span> <span style="color: #000000;">maxout</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">jobnumber</span>
printf(1, "Maximum simultaneous license use is %d at the following times:\n", maxout)
<span style="color: #004080;">sequence</span> <span style="color: #000000;">jobs</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{},</span> <span style="color: #000000;">maxtime</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">scanres</span>
for i = 1 to length(maxtime) do
<span style="color: #004080;">string</span> <span style="color: #000000;">inout</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">jobtime</span>
printf(1, "%s\n", {maxtime[i]})
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">lines</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
end for</lang>
<span style="color: #004080;">string</span> <span style="color: #000000;">line</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">lines</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
<span style="color: #000000;">scanres</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">scanf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">line</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"License %s @ %s for job %d"</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">scanres</span><span style="color: #0000FF;">)!=</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"error scanning line: %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">line</span><span style="color: #0000FF;">})</span>
<span style="color: #0000FF;">{}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">wait_key</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">abort</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #0000FF;">{{</span><span style="color: #000000;">inout</span><span style="color: #0000FF;">,</span><span style="color: #000000;">jobtime</span><span style="color: #0000FF;">,</span><span style="color: #000000;">jobnumber</span><span style="color: #0000FF;">}}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">scanres</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">inout</span><span style="color: #0000FF;">=</span><span style="color: #008000;">"OUT"</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">jobs</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">jobnumber</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">jobs</span><span style="color: #0000FF;">)></span><span style="color: #000000;">maxout</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">maxout</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">jobs</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">maxtime</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">jobtime</span><span style="color: #0000FF;">}</span>
<span style="color: #008080;">elsif</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">jobs</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">maxout</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">maxtime</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">maxtime</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">jobtime</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">else</span>
<span style="color: #000000;">jobs</span><span style="color: #0000FF;">[</span><span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">jobnumber</span><span style="color: #0000FF;">,</span><span style="color: #000000;">jobs</span><span style="color: #0000FF;">)]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">jobs</span><span style="color: #0000FF;">[$]</span>
<span style="color: #000000;">jobs</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">jobs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..$-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Maximum simultaneous license use is %d at the following times:\n"</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">maxout</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">maxtime</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"%s\n"</span><span style="color: #0000FF;">,</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">maxtime</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #0000FF;">?</span><span style="color: #008000;">"done"</span>
<span style="color: #0000FF;">{}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">wait_key</span><span style="color: #0000FF;">()</span>
end for<!--</lang>-->
{{out}}
<pre>
Line 1,854 ⟶ 1,860:
2008/10/03_08:40:40
</pre>
<small>Note the version of mlijobs.e shipped in the distribution is cropped at 10 lines (not all 457K) and will need reconstructing from the above download to get matching results</small>
 
=={{header|PHP}}==
7,794

edits