It does work to an extent, but it won't return to the part in the script where it was SIGNALed. I guess this is some kind of emergency switch.
Anyway, it doesn't do exactly what i want it to do.
I want to call a recurring conversion which is called at least two times with the exact same lines and after processing return to the script after that "macro" was called.
Opps, I'm not really into arexx and mess it up frequently which is why I do most scripts in dos or python (which is far easier to learn for the simple stuff I do).
I've never used ^ or even ** in a rexx script, I was mangling basic code as a basis for that example and it shows
Amiga user since 1985 AOS4, A-EON, IBrowse & Alinea Betatester
@Raziel Sorry. I interpreted your request for a "jump" command to mean that you were looking for a "goto" command that would jump to another section of code without returning. I think the "CALL" command that others suggested it what you're looking for.
Amiga X1000 with 2GB memory & OS 4.1FE + Radeon HD 5450
Ok gang, here is a new problem: (Comments greatly appreciated)
I wrote myself a script which can display the temperatures and actual condition of my heatpump by polling the respective html page from it's firmware and ripping out the stuff i need.
- The script below works - It has a 10 second polling timer for testing purposes (i want to put it into network startup once it's stable and set the polling to a minute) - The Ringhio display works fine (abeit 160 chars with Notification is rather limited)
Problems: The first run is silent with no errors or output EVERY rerun in the loop however produces these errors
28 *-* READLN(WP_read);
+++ Command returned 20
... as many as READLN() commands are performed
38 *-* READLN(WP_read);
+++ Command returned 20
...
49 *-* READLN(WP_read);
+++ Command returned 20
...
58 *-* READLN(WP_read);
+++ Command returned 20
...
73 *-* READLN(WP_read);
+++ Command returned 20
...
84 *-* READLN(WP_read);
+++ Command returned 20
...
93 *-* READLN(WP_read);
+++ Command returned 20
and i don't understand why?
Why does it work the first run, but not the following? Do i have an error on the file handling somewhere? Did i forget to initialize something properly?
For now i have set OPTION FAILAT 21 to silence the warnings, but i fear they might bite me later on.
DO WHILE i < 500
DO WHILE i < 136
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line
SAY "Wärmepumpe Dimplex WI 14 TE"
SAY "Die Außentemperatur beträgt:" COMPRESS(SUBSTR(working_line,20,4),"<>") "°C" */
ATemp=COMPRESS(SUBSTR(working_line,20,4),"<>")
DO WHILE i < 156
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line
SAY " "
SAY "Heizung"
SAY "Die Rücklaufsolltemperatur beträgt:" COMPRESS(SUBSTR(working_line,20,4),"<>") "°C" */
HSTemp=COMPRESS(SUBSTR(working_line,20,4),"<>")
DO WHILE i < 162
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line
SAY "Die Vorlauftemperatur beträgt:" COMPRESS(SUBSTR(working_line,20,4),"<>") "°C" */
HVTemp=COMPRESS(SUBSTR(working_line,20,4),"<>")
DO WHILE i < 245
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line */
IF SUBSTR(working_line,48,1) = 0 THEN DO
/* SAY "Aktuell läuft die Heizung NICHT!" */
HRun="NICHT!"
END
ELSE DO
/* SAY "Aktuell läuft die Heizung!" */
HRun="!"
END
DO WHILE i < 457
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line
SAY " "
SAY "Warmwasser"
SAY "Die Solltemperatur des Warmwassers beträgt:" COMPRESS(SUBSTR(working_line,20,4),"<>") "°C" */
WSTemp=COMPRESS(SUBSTR(working_line,20,4),"<>")
DO WHILE i < 471
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line
SAY "Die aktuelle Temperatur des Warmwassers beträgt:" COMPRESS(SUBSTR(working_line,20,4),"<>") "°C" */
WITemp=COMPRESS(SUBSTR(working_line,20,4),"<>")
DO WHILE i < 485
READLN(WP_read)
i=i+1
END
working_line=READLN(WP_read)
/* SAY working_line */
IF SUBSTR(working_line,48,1) = 0 THEN DO
/* SAY "Aktuell wird KEIN Warmwasser bereitet!" */
WHeat="NICHT"
END
ELSE DO
/* SAY "Aktuell wird Warmwasser bereitet!" */
WHeat=""
END
i = 501
END
Notification_Message="Außentemperatur: "ATemp" °C Heizung läuft "HRun" (Soll: "HSTemp" °C - Ist: "HVTemp" °C) Warmwasser wird "WHeat" bereitet! (Soll: "WSTemp" °C - Ist: "WITemp" °C) "
ADDRESS RINGHIO
'REGISTERAPP APP=DIMPLEXWI14TEINFO ICON="SYS:Documentation/Ringhio/rx_testringhio.rexx" Dimplex WI 14 TE Information'
'RINGHIO APP=DIMPLEXWI14TEINFO UPDATE PRI=10 IMG=SYS:Prefs/Presets/Ringhio/test.png IMGVALIGN=1 NOLOG TITLE="Dimplex WI 14 TE Information" BACKRXMSG="URL:http://192.168.178.81"' Notification_Message
ADDRESS COMMAND "wait 10"
END
EXIT 0
And finally a bonus question:
The reason why i break the loop without reading the file to the end is because on line 691 i ALWAYS get a requester telling me i have to assign or mount this to go on Quote:
I don't understand why the OS should jump in with this line?
I checked the source file and this is the ONLY place where a ":" exists between two "><". But if the OS tries to mount such, it is clearly a bug (Workbench or AREXX)
I also don't understand why it should happen on a simple READLN() (I do, to enhance the counter) (Yes, i had the main loop running with DO WHILE EOF(WP_Read) < 1 for a long time until this problem occured)
And finally, if anyone wants to check with original data, here is an example of the site:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- h12 27.03.2013 -->
<html>
<head>
<!--tagparser="/pcotagfilt"-->
<meta http-equiv="refresh" content="180;URL=h_operatingdata.html">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="SHORTCUT ICON" href="../index_img/favicon.ico">
<link rel="stylesheet" type="text/css" href="../style/styles.css">
<title>diagnostic</title>
<script type="text/javascript" src="../script/javascript_757c080409.js"></script>
<script type="text/javascript" src="../script/language.js"></script>
</head>
<body>
<script type="text/javascript" language="JavaScript" src="../script/pagefunctions.js"></script>
<a name="oben"></a>
<div class="logo"><a id="link" href=><img id="logo" src="../index_img/logo.gif" border="0" height= width= alt=></a>
<script type="text/javascript">
document.getElementById('link').href=Linkadresse;
document.getElementById('logo').alt=Logo;
document.getElementById('logo').height=LogoH;
document.getElementById('logo').width=LogoW;
</script>
</div>
<!-- logo -->
<div class="sprachen">
<a>
<script>var date=new Array(3);
date[0]=9;
date[1]=3;
date[2]=18;
date[3]=("20");
for (i=0;i<3;i++) {if (date[i]<10) date[i]="0"+date[i]}
var date1=date[0]+"."+date[1]+"."+date[3]+date[2];
document.writeln(date1);</script>
<script>var time=new Array(2);
time[0]=10;
time[1]=6;
for (i=0;i<2;i++) {if (time[i]<10) time[i]="0"+time[i]}
var time1=time[0]+":"+time[1];
document.writeln(time1);</script>
<script>document.writeln(Uhr);</script>
</a>
</div>
<div class="weisserkasten">
<div class="suche">
<a id=hilfe class="oben" rel="nofollow" target="_blank" href=><script>document.write(Hilfe);</script></a>
<a id=mail class="oben" rel="nofollow" href=><script>document.write(emailkontakt);</script></a>
<script type="text/javascript">
document.getElementById('mail').href=Linkemailadresse;
document.getElementById('hilfe').href=Linkhilfe;
</script>
</div>
<br>
</div>
<div class="grauekaesten">
<div class="rotekaesten_unter">
<div class="hauptmenue">
<a href="h_index.html" id="startseite" title=><script>document.write(Startseite);</script></a>
<script type="text/javascript">
document.getElementById('startseite').title=Startseite;
</script>
<a href="h_clock.html" id="einstellungen" title=><script>document.write(Einstellungen);</script></a>
<script type="text/javascript">
document.getElementById('einstellungen').title=Einstellungen;
</script>
<a href="h_operatingdata.html" id="betriebsdaten" class="aktiv" title=><script>document.write(Betriebsdaten);</script><
<script type="text/javascript">
document.getElementById('betriebsdaten').title=Betriebsdaten;
</script>
<a href="h_history.html" id="historie" title=><script>document.write(Historie);</script></a>
<script type="text/javascript">
document.getElementById('historie').title=Historie;
</script>
<a href="h_service.html" id="service" title=><script>document.write(Service);</script></a>
<script type="text/javascript">
document.getElementById('service').title=Service;
</script>
<a href="h_contact.html" id="AZKontakt" title=><script>document.write(Kontakt);</script></a>
<script type="text/javascript">
document.getElementById('AZKontakt').title=Kontakt;
var anz = '1';
if (anz == 1)
document.getElementById('AZKontakt').value = "";
else
document.getElementById('AZKontakt').style.display = 'none';
</script>
</div>
<!-- hauptmenue -->
<div class="zentral_unter" xstyle="border: 1px solid #FF0000; width: 950px">
<div class="untermenue1">
</div>
<!-- untermenue1 -->
<div class="untermenue2">
<div class="untermenue2innen">
<ul class="eins">
</ul>
</div>
</div>
<!-- untermenue2 -->
<div class="inhalt">
<div class="csc-textpic csc-textpic-intext-right csc-textpic-border">
<div class="csc-textpic-imagewrap">
<dl class="csc-textpic-image csc-textpic-firstcol csc-textpic-lastcol" style="width: 252px;">
<dd class="csc-textpic-caption"></dd>
</dl>
</div>
<div class="csc-textpic-text">
<h1>
<script>document.writeln(Betriebsdaten);</script></h1>
</div>
</div>
<div class="produkt">
<div class="csc-frame csc-frame-invisible">
<div class="csc-textpic csc-textpic-intext-left-nowrap">
<div style="margin-left: 5px;">
<div class="csc-textpic-text">
<div class="div_terminologieliste">
<table cellpadding="1" cellspacing="0" width="680">
<tbody>
<tr class="header">
<td bgcolor="#dddddd" width="50%">
<h3>
<script>document.write(Beschreibung);</script></h3>
</td>
<td align="right" bgcolor="#dddddd" width="30%">
<h3>
<script>document.writeln(AktuellerWert);</script></h3>
</td>
<td bgcolor="#dddddd" width="15%"></td>
<td bgcolor="#dddddd" width="5%"></td>
</tr>
<!-- Aussentemperatur -->
<tr>
<td><script>document.write(Aussentemperatur);</script></td>
<td align='right'>5.3</td>
<td>°C</td>
<td></td>
</tr>
<!-- Ruecklaufsolltemperatur -->
<tr id=z_men_sollfrei>
<td><script>document.writeln(Ruecklaufsolltemperatur);document.write(HkEins);</script></td>
<td align='right'>30.6</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
if (Val == 1)
document.getElementById('z_men_sollfrei').value = "";
else
document.getElementById('z_men_sollfrei').style.display = 'none';
</script>
<!-- Ruecklauftemperatur -->
<tr>
<td><script>document.writeln(Ruecklauftemperatur);document.write(HkEins);</script></td>
<td align='right'>32.6</td>
<td>°C</td>
<td></td>
</tr>
<!-- Vorlauftemperatur -->
<tr id=z_frei_tfs>
<td><script>document.write(Vorlauftemperatur);</script></td>
<td align='right'>38.5</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
if (Val == 1)
document.getElementById('z_frei_tfs').value = "";
else
document.getElementById('z_frei_tfs').style.display = 'none';
</script>
<!-- Solltemperatur 2.HK -->
<tr id=z_hk2_anz_soll>
<td><script>document.writeln(Solltemperatur);document.write(HkZwei);</script></td>
<td align='right'>24.7</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('z_hk2_anz_soll').value = "";
else
document.getElementById('z_hk2_anz_soll').style.display = 'none';
</script>
<!-- Minimale Temperatur Gemischter Kreis -->
<tr id=z_hk2_anz_min>
<td><script>document.write(MiniTempGK);</script></td>
<td align='right'>3.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('z_hk2_anz_min').value = "";
else
document.getElementById('z_hk2_anz_min').style.display = 'none';
</script>
<!-- Temperatur 2.HK -->
<tr id=z_hk2_anz_ist>
<td><script>document.writeln(Temperatur);document.write(HkZwei);</script></td>
<td align='right'>24.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('z_hk2_anz_ist').value = "";
else
document.getElementById('z_hk2_anz_ist').style.display = 'none';
</script>
<!-- Solltemperatur 3.HK -->
<tr id=p_hk3>
<td><script>document.writeln(Solltemperatur);document.write(HkDrei);</script></td>
<td align='right'>24.7</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('p_hk3').value = "";
else
document.getElementById('p_hk3').style.display = 'none';
</script>
<!-- Temperatur 3.HK -->
<tr id=p_hk3_ist>
<td><script>document.writeln(Temperatur);document.write(HkDrei);</script></td>
<td align='right'>-999.9</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('p_hk3_ist').value = "";
else
document.getElementById('p_hk3_ist').style.display = 'none';
</script>
<!-- Heizung Anforderung -->
<tr id=z_wpah_anz>
<td><script>document.write(HeizungAnforderung);</script></td>
<td align='right'><script>var Val = parseInt("0");
if (Val == 0)
document.writeln(Nein);
if (Val == 1)
document.writeln(Ja);</script>
<script>var Val = parseInt("0");
if (Val == 0)
document.writeln();
if (Val == 1)
document.writeln(L11091);</script>
<script>var Val = parseInt("0");
if (Val == 0)
document.writeln();
if (Val == 1)
document.writeln(HeizungSpuelen);</script></td>
<td></td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
if (Val == 1)
document.getElementById('z_wpah_anz').value = "";
else
document.getElementById('z_wpa_h').style.display = 'none';
</script>
<!-- Leistungsstufe -->
<tr id=z_frei_hreg>
<td><script>document.write(Leistungsstufe);</script></td>
<td align='right'>
<script>var Val = parseInt("1");
if (Val == 0)
document.writeln();
if (Val == 1)
document.write("1");</script>
<script>var Val = parseInt("0");
if (Val == 0)
document.writeln();
if (Val == 1)
document.write("2");</script>
<script>var Val = parseInt("0");
if (Val == 0)
document.writeln();
if (Val == 1)
document.write("3");</script></td>
<td></td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
if (Val == 1)
document.getElementById('z_frei_hreg').value = "";
else
document.getElementById('z_frei_hreg').style.display = 'none';
</script>
<!-- Abtauendefühler -->
<tr id=p_hg_abt>
<td><script>document.write(Abtauendefuehler);</script></td>
<td align="right">9.1</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('p_hg_abt').value = "";
else
document.getElementById('p_hg_abt').style.display = 'none';
</script>
<!-- Temperatur Speicher Regenerativ -->
<tr id=z_biv_reg>
<td><script>document.write(TempSpeicherReg);</script></td>
<td align='right'>-999.9</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('z_biv_reg').value = "";
else
document.getElementById('z_biv_reg').style.display = 'none';
</script>
<!-- Rücklauftemperatur Kühlen passiv -->
<tr id=z_frei_kreg>
<td><script>document.write(RLTempKp);</script></td>
<td align='right'>0.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
Val1 = parseInt("0");
Val2 = parseInt("0");
if ((Val == 1)&&(Val1 == 1)&&(Val2 == 1))
document.getElementById('z_frei_kreg').value = "";
else
document.getElementById('z_frei_kreg').style.display = 'none';
</script>
<!-- Vorlauftemperatur Kühlen passiv -->
<tr id=z_frei_kreg1>
<td><script>document.write(VlTempKp);</script></td>
<td align='right'>0.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
Val1 = parseInt("0");
Val2 = parseInt("0");
if ((Val == 1)&&(Val1 == 1)&&(Val2 == 1))
document.getElementById('z_frei_kreg1').value = "";
else
document.getElementById('z_frei_kreg1').style.display = 'none';
</script>
<!-- Frostschutz Kälte Kühlen -->
<tr id=p_wpk>
<td><script>document.write(FrostschutzKKl);</script></td>
<td align='right'>-999.9</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
Val1 = parseInt("0");
if ((Val == 1)&&(Val1 == 1))
document.getElementById('p_wpk').value = "";
else
document.getElementById('p_wpk').style.display = 'none';
</script>
<!-- Raumtemperatur 1 -->
<tr id=z_rt1_anz_frei>
<td><script>document.write(Raumtemperatur);</script></td>
<td align='right'>-999.9</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
Val1 = parseInt("0");
if ((Val == 1)|(Val1 == 1))
document.getElementById('z_rt1_anz_frei').value = "";
else
document.getElementById('z_rt1_anz_frei').style.display = 'none';
</script>
<!-- Raumfeuchte 1 -->
<tr id=z_feuchte1>
<td><script>document.write(Raumfeuchte);</script></td>
<td align='right'>0.0</td>
<td><script>document.writeln(L02371);</script></td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
Val1 = parseInt("1");
if ((Val == 1)&&(Val1 == 1))
document.getElementById('z_feuchte1').value = "";
else
document.getElementById('z_feuchte1').style.display = 'none';
</script>
<!-- Raumtemperatur 2 -->
<tr id=e_rt2>
<td><script>document.write(Raumtemperatur);</script>2</td>
<td align='right'>0.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
Val1 = parseInt("1");
Val2 = parseInt("0");
if ((Val == 1)&&(Val1 == 1)&&(Val2 == 1))
document.getElementById('e_rt2').value = "";
else
document.getElementById('e_rt2').style.display = 'none';
</script>
<!-- Raumfeuchte 2 -->
<tr id=z_feuchte2>
<td><script>document.write(Raumfeuchte);</script>2</td>
<td align='right'>0.0</td>
<td><script>document.writeln(L02371);</script></td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
Val1 = parseInt("1");
Val2 = parseInt("0");
if ((Val == 1)&&(Val1 == 1)&&(Val2 == 1))
document.getElementById('z_feuchte2').value = "";
else
document.getElementById('z_feuchte2').style.display = 'none';
</script>
<!-- Anforderung Kühlung -->
<tr id=z_kuehl_anf1>
<td><script>document.write(AnforderungKuehlung);</script></td>
<td align='right'><script>var Val = parseInt("0");
if (Val == 0)
document.writeln(Nein);
if (Val == 1)
document.writeln(Ja)</script></td>
<td></td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
Val1 = parseInt("1");
if ((Val == 1)&&(Val1 == 1))
document.getElementById('z_kuehl_anf1').value = "";
else
document.getElementById('z_kuehl_anf1').style.display = 'none';
</script>
<!-- Solltemperatur Warmwasser -->
<tr id=z_ww_soll>
<td><script>document.writeln(Warmwasser);document.write(Solltemperatur);</script></td>
<td align='right'>43.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
Val1 = parseInt("1");
if ((Val == 1)&&(Val1 == 1))
document.getElementById('z_ww_soll').value = "";
else
document.getElementById('z_ww_soll').style.display = 'none';
</script>
<!-- Temperatur Warmwasser -->
<tr id=e_wanf>
<td><script>document.writeln(Temperatur);document.write(Warmwasser);</script></td>
<td align='right'>37.7</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
Val1 = parseInt("1");
if ((Val == 1)&&(Val1 == 1))
document.getElementById('e_wanf').value = "";
else
document.getElementById('e_wanf').style.display = 'none';
</script>
<!-- Warmwasser Anforderung-->
<tr id=z_wpa_w>
<td><script>document.write(WarmwasserAnforderung);</script></td>
<td align='right'><script>var Val = parseInt("0");
if (Val == 0)
document.writeln(Nein);
if (Val == 1)
document.writeln(Ja);</script>
<script>var Val = parseInt("0");
if (Val == 0)
document.writeln();
if (Val == 1)
document.writeln(T_Reg>Temp.WW);</script></td>
<td></td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
if (Val == 1)
document.getElementById('z_wpa_w').value = "";
else
document.getElementById('z_wpa_w').style.display = 'none';
</script>
<!-- Schwimmbad Anforderung -->
<tr id=z_wpa_s1>
<td><script>document.write(SchwimmbadAnforderung);</script></td>
<td align='right'><script>var Val = parseInt("0");
if (Val == 0)
document.writeln(Nein);
if (Val == 1)
document.writeln(Ja);</script>
<script>var Val = parseInt("0");
if (Val == 0)
document.writeln();
if (Val == 1)
document.writeln(1112);</script></td>
<td></td>
<td></td>
</tr>
<script>
var Val = parseInt("0");
if (Val == 1)
document.getElementById('z_wpa_s1').value = "";
else
document.getElementById('z_wpa_s1').style.display = 'none';
</script>
<!-- Eingefrierschutzfühler -->
<tr id=e_egsf>
<td><script>document.write(Eingefrierschutzfuehler);</script></td>
<td align='right'>9.1</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = parseInt("1");
Val1 = parseInt("1");
if ((Val == 1)&&(Val1 == 1))
document.getElementById('e_egsf').value = "";
else
document.getElementById('e_egsf').style.display = 'none';
</script>
<!-- Vorlauffühler Sole bei HK2-->
<tr id=anz_s_trnl>
<td><script>document.writeln(Vorlauftemperatur);document.write(Sole);</script></td>
<td align='right'>24.0</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = 0;
Val1 = parseInt("1");
Val2 = parseInt("0");
if ((Val == 1)&&(Val1 == 1)&&(Val2 == 0))
document.getElementById('anz_s_trnl').value = 'anz_s_trnl';
else
document.getElementById('anz_s_trnl').style.display = 'none';
</script>
<!-- Vorlauffühler Sole bei HK3-->
<tr id=anz_e_fsk>
<td><script>document.writeln(Vorlauftemperatur);document.write(Sole);</script></td>
<td align='right'>-999.9</td>
<td>°C</td>
<td></td>
</tr>
<script>
var Val = 0;
Val1 = parseInt("1");
Val2 = parseInt("0");
Val3 = parseInt("0");
if ((Val == 2)&&(Val1 == 1)&&(Val2 == 0)&&(Val3 == 0))
document.getElementById('anz_e_fsk').value = 'anz_e_fsk';
else
document.getElementById('anz_e_fsk').style.display = 'none';
</script>
<!-- Codierung -->
<tr>
<td><script>document.write(Codierung);</script></td>
<td align='right'><script>var codierung=0.3;
var codierung10=codierung*10;
if (codierung10 == 0)
document.writeln(T2530);
if (codierung10 == 1)
document.writeln(T2531);
if (codierung10 == 2)
document.writeln(T2532);
if (codierung10 == 3)
document.writeln(T2533);
if (codierung10 == 4)
document.writeln(T2534);
if (codierung10 == 5)
document.writeln(T2535);
if (codierung10 == 6)
document.writeln(T2536);
if (codierung10 == 7)
document.writeln(T2537);
if (codierung10 == 8)
document.writeln(T2538);
if (codierung10 == 9)
document.writeln(T2539);</script></td>
<td></td>
<td></td>
</tr>
<!-- Software H -->
<tr>
<td><strong><script>document.write(SoftwarestandHeizen);</script></strong></td>
<td><table width="100%" border="0">
<tr>
<td width="25%"><strong>BIOS</strong><br><script>var bios=41.0;
var bios10=bios/10;
document.write(bios10);</script></td>
<td width="25%"><strong>BOOT</strong><br><script>var boot=40.3;
var boot10=boot/10+0.000000000000001;
document.write(boot10);</script></td>
<td width="50%"><strong>SOFTWARE:</strong><br><script>var standh=0.1;
var standh10=standh*10;
if (standh10 == 1)
document.write("WPM_H");
if (standh10 == 2)
document.write("WPM_K");
if (standh10 == 3)
document.write("WPM_KP");
var stand1h=0.8;
var stand1h10=stand1h*10;
if (stand1h10 == 1)
document.write("_A");
if (stand1h10 == 2)
document.write("_B");
if (stand1h10 == 3)
document.write("_C");
if (stand1h10 == 4)
document.write("_D");
if (stand1h10 == 5)
document.write("_E");
if (stand1h10 == 6)
document.write("_F");
if (stand1h10 == 7)
document.write("_G");
if (stand1h10 == 8)
document.write("_H");
if (stand1h10 == 9)
document.write("_I");
if (stand1h10 == 10)
document.write("_J");
if (stand1h10 == 11)
document.write("_K");
if (stand1h10 == 12)
document.write("_L");
if (stand1h10 == 13)
document.write("_M");
if (stand1h10 == 14)
document.write("_N");
if (stand1h10 == 15)
document.write("_O");
if (stand1h10 == 16)
document.write("_P");
if (stand1h10 == 17)
document.write("_Q");
if (stand1h10 == 18)
document.write("_R");
if (stand1h10 == 19)
document.write("_S");
if (stand1h10 == 20)
document.write("_T");
if (stand1h10 == 21)
document.write("_U");
if (stand1h10 == 22)
document.write("_V");
if (stand1h10 == 23)
document.write("_W");
if (stand1h10 == 24)
document.write("_X");
if (stand1h10 == 25)
document.write("_Y");
if (stand1h10 == 26)
document.write("_Z");
var version=5.5;
var version10=version*10;
document.write(version10);</script></td>
</tr>
</table></td>
</tr>
<!-- Software K -->
<tr id=BIOS_RELEASE>
<td><strong><script>document.write(SoftwarestandKuehlen);</script>:</strong></td>
<td><table width="99%" border="0">
<tr>
<td width="25%"><strong>BIOS</strong></td>
<td width="25%"><strong>BOOT</strong></td>
<td width="45%"><strong>SOFTWARE:<script>var z_sw_gruppe_ka=0.0;
var z_sw_gruppe_ka10=z_sw_gruppe_ka*10;
if (z_sw_gruppe_ka10 == 1)
document.write("WPM_H");
if (z_sw_gruppe_ka10 == 2)
document.write("WPM_K");
if (z_sw_gruppe_ka10 == 3)
document.write("WPM_KP");</script>
<script>var z_sw_version=0.0;
var z_sw_version10=z_sw_version*10;
if (z_sw_version10 == 1)
document.write("_A");
if (z_sw_version10 == 2)
document.write("_B");
if (z_sw_version10 == 3)
document.write("_C");
if (z_sw_version10 == 4)
document.write("_D");
if (z_sw_version10 == 5)
document.write("_E");
if (z_sw_version10 == 6)
document.write("_F");
if (z_sw_version10 == 7)
document.write("_G");
if (z_sw_version10 == 8)
document.write("_H");
if (z_sw_version10 == 9)
document.write("_I");
if (z_sw_version10 == 10)
document.write("_J");
if (z_sw_version10 == 11)
document.write("_K");
if (z_sw_version10 == 12)
document.write("_L");
if (z_sw_version10 == 13)
document.write("_M");
if (z_sw_version10 == 14)
document.write("_N");
if (z_sw_version10 == 15)
document.write("_O");
if (z_sw_version10 == 16)
document.write("_P");
if (z_sw_version10 == 17)
document.write("_Q");
if (z_sw_version10 == 18)
document.write("_R");
if (z_sw_version10 == 19)
document.write("_S");
if (z_sw_version10 == 20)
document.write("_T");
if (z_sw_version10 == 21)
document.write("_U");
if (z_sw_version10 == 22)
document.write("_V");
if (z_sw_version10 == 23)
document.write("_W");
if (z_sw_version10 == 24)
document.write("_X");
if (z_sw_version10 == 25)
document.write("_Y");
if (z_sw_version10 == 26)
document.write("_Z");
else
document.write("");</script>
<script>var z_sw_nummer_ka=0.0;
var z_sw_nummer_ka10=z_sw_nummer_ka*10;
document.write(z_sw_nummer_ka10);</script></strong></td>
</tr>
</table></td>
</tr>
<script>
var Val = parseInt("");
if (Val == 1)
document.getElementById('BIOS_RELEASE').value = "";
else
document.getElementById('BIOS_RELEASE').style.display = 'none';
</script>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- inhalt -->
<div class="fusszeile">
<div style="float: left;"><a href="javascript:print();"><img src="../index_img/drucken.gif" id="seitedrucken" border="0
<script>document.writeln(Drucken);</script></a>
<script type="text/javascript">
document.getElementById('seitedrucken').title=seitedrucken;
</script>
</div>
<div style="float: right;"><a href="#oben"><img src="../index_img/pfeilnachoben.gif" alt="Nach Oben" border="0" height=
</div>
</div>
</div>
</div>
</div>
</body>
</html>
[quote]The reason why i break the loop without reading the file to the end is because on line 691 i ALWAYS get a requester telling me i have to assign or mount this to go on Quote:
I don't understand why the OS should jump in with this line?
I checked the source file and this is the ONLY place where a ":" exists between two "><". But if the OS tries to mount such, it is clearly a bug (Workbench or AREXX)[/qquote]
something is possibly pickingg up >: as a redirect to an impossible file.
Amiga user since 1985 AOS4, A-EON, IBrowse & Alinea Betatester
@Raziel I your copied your AREXX script & HTML file; then stripped all the $A0 characters and tested your script with the HTML file. Sometimes error messages (especially in AREXX) do not indicate the true cause of the error. My tests indicate that in a subsequent run of the script there is no input file present or it's not readable. When I added a test for successful opening of the file and exiting if the opening failed, I didn't get the "READLN(WP_read)" failure.
Try replacing the line:
OPEN(WP_read,'T:WP_Data.html','R')
with the lines:
IF ~OPEN(WP_read,'T:WP_Data.html','R') THEN DO SAY "File opening failed" LEAVE END
I'll take a look at your other problem tommorrow.
Amiga X1000 with 2GB memory & OS 4.1FE + Radeon HD 5450
The former will try to run the result as a command to whatever port AREXX is currently addressing.
The latter will just read a line, store it nowhere and not try to run it as a command or send it off as a command to an arexx port.
I don't know why it's working on the first run and not subsequent ones, but I suspect it can be solved by adding "Call" before ReadLn's that don't get stored into any variable.
For example, you can create a file, say RAM:test, with the word "time" in it. Then you can create a script:
and that will open the time preferences program. If you modify RAM:test to say "hello:hello2" instead of "time", it will ask you to insert hello:, and for some reason it'll still do that even if you remove "ADDRESS COMMAND" from the script.
@MickJT Your suggestion seems to be the solution to both of Raziel's problems. When I tested his script with his HTML example, replacing the bare "READLN(WP_read)" lines with "CALL READLN(WP_read)" seems to work. However, I still think he should check for a valid file opening even if it's an unlikely occurance.
Amiga X1000 with 2GB memory & OS 4.1FE + Radeon HD 5450
I agree. It's always worth the effort to add error handling to anything you're programming, also in ARexx. When things behave strangely, it will often show you that some assumption you made is not true, like in this case where you simply can't open the file the second time.
I'd also always code READLN as a true function call, complete with assignment of the return value, like "dummy = readln(myFile)". Even if the result is not ultimately needed, it makes it very easy to add a "say dummy" line after it whenever you're in doubt about what, if anything, it is actually reading.
@Raziel:
Did you get that ARexxGuide I recommended above? It has lots of good examples in addition to the formal definitions and descriptions of all the ARexx elements.
BTW, it also tells you how to single-step debug your code. Look up TCO in the COMMANDS section, and move on to the tutorial Debugging a script. There are several options described. What I usually prefer for not overly long scripts is to simply open the tracing console (TCO), then start tracing globally (TS), and then just start my script. The console will then single-step through the code, letting me know almost everything that happens in each line. Only for special needs or very long loops etc. do I need to actually put trace statements in the code. When I'm done, I just enter TE and TCC in the shell.
Doing this with your script would probably have given you lots of clues quickly about what was going on.
Thanks for all the answers, I'm not on my amiga right now, but will take all the hints to heart.
@nbache
Yes, but I haven't got time to read it yet.
I'm "normally" use all commands like your "dummy" example, just not this time, perfect timing
I'm already using TS and a normal shell for debugging, works great, one reason why I like scripting with arexx, it's nice and easy to find and fix mistakes. Perfect for auto didacts.
@MickJt
Wow, I didn't know about this "feature", I guess I also never read about it. I find it rather dangerous imo.
@xenic
I'll put your failure check in once I'm home. You are right, panic switches should also be built in. I think I'll put it into a loop to retry downloading and opening after some time if it fails.
FYI, it's not limited to ReadLn. It's the way REXX works (not just AREXX). Here is another example:
/**/
ADDRESS COMMAND /* Sets outgoing AREXX port to COMMAND */
'ECHO "test 1 2 3"' /* Sent to the COMMAND port */
Command='ECHO "test 4 5 6"'
Command /* Alternative method */
ProgList="date requestfile shownetstatus"
DO i=1 TO 3
SubWord(ProgList,i,1) /* Sends result to the COMMAND port */
End
Exit
Think about what you'd expect if you used:
ADDRESS COMMAND ReadLn(File)
Assuming no AREXX port had been manually set yet, that will temporarily switch to the COMMAND port, run the result, and switch back to the REXX port. In the script example above, COMMAND was already set as the AREXX port ahead of time.
When you use ReadLn() without anything proceeding it, by default it sends the result to the REXX port. That's what was happening in your script.
I remember when writing something for Regina REXX, I couldn't use "Call Function()" when I didn't need to store the result, so I just used "Null=Function()" instead, because Function() on its own would cause havoc.
Wrap your head around this one!
/**/
Word="'hello'"
Temp='"SAY 'Word'"'
Temp /* Prints hello */
Exit
The Word variable is set to 'hello' (single quotes included)
Temp is set to "SAY 'hello'" (both types of quotes included)
Then the contents of Temp is sent to the REXX port. Those contents direct it to say the word hello.
Edit: Removed stuff that may have caused confusion.
Edited by MickJT on 2018/10/4 1:57:24 Edited by MickJT on 2018/10/4 2:01:42 Edited by MickJT on 2018/10/4 2:02:32 Edited by MickJT on 2018/10/4 2:06:34 Edited by MickJT on 2018/10/4 2:10:39