MP3-Player für Android zum Abspielen von Verzeichnissen

Stand: 09.03.2017

Ich bin bei der Musik kein Freund von Wiedergabelisten (playlists), sondern möchte eigentlich nur CDs hören. Zu diesem Zweck habe ich jede CD in einen eigenen Ordner oder Verzeichnis gesteckt. Mehrere Ordner, die inhaltlich zusammengehören (etwa ein Interpret oder ein Komponist bei klassischer Musik), kommen dann in einen Überordner, die dann bei Bedarf wieder zusammengefasst sein können usw.

Zum Anhören von Musik steige ich dann von der obersten Ebene „Musik“ hinab zur CD meiner augenblicklichen Wahl, die ich dann so abspielen will, dass alle Stücke der CD der Reihe nach abgespielt werden und dass nach nach dem letzten Stück die Musikwiedergabe endet.

Von den überaus zahlreichen MP3-Spielern, die es gibt, erfüllen nur wenige die genannten Bedingungen, oder sie können es, aber ich weiß nicht so recht wie. Im folgenden möchte ich für einige MP3-Spieler beschreiben, was sie in dieser Hinsicht können oder nicht können und wie du es gegebenenfalls am besten machst. Hinzu kommen gelegentlich weitere Hinweise über Dinge, die mir aufgefallen sind. Da mein Vorhaben mit größerer Arbeit verbunden ist, fange ich erst mal klein an, Ergänzungen (die alle in diesen Text eingearbeitet werden) sollen aber folgen.

Wenn du in meinem Text etwas findest, was falsch oder verbesserungs- oder ergänzungsbedürftig ist: Kommentare sind erwünscht.

A: VLC

Den bekannten VLC media player gibt es auch als App VLC für Android. Ich beschreibe zuerst, wie du mit VLC Verzeichnisse abspielen kannst, und dann, wie es nicht geht.

1.
Starte VLC. Beim ersten Mal bittet dich das Programm, auf Fotos, Medien und Dateien auf deinem Gerät zugreifen zu dürfen. Sobald du dies zugelassen hast, erscheint die Seite „Lokales Netzwerk“. Der Inhalt dieser Seite kann von dreierlei Art sein.

Erster Fall: In deinem Handy ist WLAN aktiviert und du befindest dich damit in einem WLAN-Bereich, in welchem es Musikquellen gibt (etwa in deinem Heimnetz). Dann werden alle möglichen Musikquellen angezeigt.

Zweiter Fall: In deinem Handy ist WLAN deaktiviert. Dann erhältst du die Meldung „Keine Verbindung zum lokalen Netzwerk“.

Dritter Fall: In deinem Handy ist WLAN aktiviert, du befindest dich damit in einem WLAN-Bereich, aber es gibt dort keine Musikquellen. Dann versucht VLC endlos, eine Verbindung mit dem nicht vorhandenen lokalen Netzwerk herzustellen.

In allen drei Fällen klickst du links oben auf das Symbol mit den drei waagrechten Strichen und erhältst so die übergeordnete Seite:

Diese Seite hat eine besondere Bedeutung. Was du auf dieser Seite zuletzt ausgewählt hast, ist die Startseite, wenn du VLC erneut startest. Weil wir gerade von „Lokales Netzwerk“ kommen, ist dieser Eintrag hervorgehoben. Direkt darüber steht „Verzeichnisse“, was du jetzt anklicken solltest. Die dann gezeigte Seite sieht bei mir so aus:

Der zweite Eintrag ist meine externe SD-Karte im Handy, auf der ich meine Musik gespeichert habe. Ich gehe also den Verzeichnisbaum hinab, bis ich den Inhalt meiner gewünschten CD sehe, etwa:

Für das Abspielen der gesamten CD musst du dann nur noch auf den Pfeil rechts unten drücken.

Wenn du statt dessen auf einen der Titel klickst, wird genau dieser abgespielt, danach ist Stille. Wenn du die drei Punkte am Ende einer Titelzeile anklickst, erhältst du ein Menü, in welchem der erste Eintrag „Alle wiedergeben“ lautet. Wenn du dies anklickst, wird die CD, beginnend mit dem ausgewählten Stück, bis zum Ende abgespielt.

2.
Früher habe ich jahrelang, allerdings mit einem anderen Handy und einem anderen MP3-Spieler folgendes gemacht. Ich bin zuallerst über „Eigene Dateien“ usw. den Verzeichnisbaum bis zu meiner gewünschten CD hinabgestiegen, habe dann den ersten Titel angeklickt, dann einen bestimmten MP3-Player ausgewählt und konnte dann die gesamte CD anhören. Wenn ich dies mit VLC versuche, sieht die Seite mit der CD so aus:

Hier komme ich nicht recht weiter. Ich kann einen Titel anklicken, der dann auch (natürlich als einziger) abgespielt wird. Allerdings sehe ich auf der Seite weder, welcher Titel es ist, noch sehe ich eine Fortschrittsanzeige, noch habe ich die Möglichkeit für eine Pause oder Vorwärtsspringen im Titel. Ergebnis: Absolut unbrauchbar.

(Das ist nicht die ganze Wahrheit. Wenn ich den Fensterinhalt zweimal herunterschiebe, kann ich doch etwas sehen und auch weiterklicken und manchmal auch VLC zum Steckenbleiben bringen, also bitte Vorsicht).

Wird gelegentlich fortgesetzt!

 

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , , , , | Kommentar hinterlassen

Exotische Schriften

Aktualisiert am 20.03.2017

Es gibt viele Sprachen und viele Schriften auf der Welt. Je nachdem, was wir tun wollen, möchten wir einige davon auch auf unserem Computer sehen, auch wenn wir meist die zugehörigen Sprachen nicht (ausreichend) können. Trotz Globalisierung sind die Betriebssysteme immer noch darin recht restriktiv, welche Schriften sie als Voreinstellung anbieten. Wenn uns Schriften fehlen, können wir sie dem Betriebssystem meist hinzufügen. Wir müssen nur feststellen, welche Schrift fehlt und wo sie im Internet zum (kostenlosen) Herunterladen angeboten wird.

Glücklicherweise gibt es eine Quelle im Internet, wo (zumindest beabsichtigt) Schriften für alle Sprachen der Welt bereitstehen. Wenn du eine Webseite vor dir hast, siehst du etwa die Zeile „Gratuliere ဘို ဆန္း zum Geburtstag“.

[   EINSCHUB: Falls du zwischen „Gratuliere“ und „zum“ keine Kästchen, sondern einen (in einer vermutlich unverständlichen Sprache) geschriebenen Text siehst, ist auf deinem Rechner die myanmarische Schrift bereits installiert. Ein anderes Beispiel für Kästchen könnte vielleicht 𑄦𑄮 𑄌𑄋𑄴𑄟𑄳𑄦 sein.   ]

Offensichtlich handelt es sich um einen Facebook-„Freund“, dessen Name in der Schrift seines Landes geschrieben ist. Solche Kästchen, mit oder ohne Inhalt, stehen jedes für ein Zeichen, für welches das Betriebssystem kein Schriftzeichen zur Verfügung hat. Diese Kästchen werden auch als Tofu bezeichnet. Google hat dankenswerterweise eine Initiative gestartet, diese Tofukästchen überflüssig zu machen: „NO more TOfu“, woraus die Bezeichnung „Noto-Schriften“ entstanden ist. Auf der Seite https://www.google.com/get/noto/ findest du alles Nötige.

Jetzt fehlt nur noch die Information, um welche Sprache es sich bei den Kästchen handelt. Zu diesem Zweck nimmst du den Inhalt eines Kästchens (als Beispiel diene etwa das dritte) von links oben nach rechts unten als eine Zeichenkette, im Beispiel 102f, und suchst dann im Internet nach 102f unicode und findest in der Antwort, dass es sich um ein Zeichen der myanmarischen (birmanischen) Schrift handelt.

ACHTUNG: Bisher war mein Text allgemein gehalten, ab jetzt bezieht er sich eher auf das Betriebssystem Linux openSUSE (Leap 42.2), aber es sind weiterhin Teile enthalten, die auch für Windows (7) gelten.

Einige der Noto-Schriften stehen bei openSUSE zum Installieren bereit, du musst dafür nicht auf die Googleseite gehen. Die Installation erfolgt auf die übliche Art, etwa mittels YaST. Die nötigen Pakete beginnen alle mit noto-, als etwa noto-sans-myanmar-fonts.

Wenn du auf deinem Rechner virtuelle Maschinen nutzt, zum Beispiel habe ich in Linux unter der Virtualisierungssoftware VirtualBox ein System Windows 7, so musst du beachten, dass jedes Betriebssystem seine eigenen Schriften hat, so dass du also fehlende Schriften entsprechend mehrfach installieren musst. In meinem Fall habe ich Glück, da Windows 7 von vornherein mindestens 12 (so viele habe ich gefunden) Schriften mehr hat als openSUSE. Lediglich die myanmarische Schrift, die zufällig mein Beispiel war, ist in Windows 7 nicht enthalten. Ich müsste sie dann von der oben genannten Googleseite aus installieren (habe ich noch nicht gemacht).

Neben „gewöhnlichen exotischen“ Schriften gibt es auch „noch exotischere“ Schriften, die in der Noto-Initiative nicht enthalten sind. Ein Beispiel findest du in dem Einschub weiter oben, wo es sich um die Chakma-Schrift handelt, die Schrift eines kleinen Volkes in Indien. In solchen Fällen suchst du im WWW etwa nach chakma font und findest dann Adressen, wo du die Schriftart herunterladen kannst. Die heruntergeladene Datei hat (meist) die Endung .ttf. Wenn du die Datei öffnest, erhältst du ein Fenster, in welchem sich eine Schaltfläche „Installieren“ findet.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , , , , , , , , , , | Kommentar hinterlassen

Auf dem Computer Fotos für Instagram hochladen

Instagram ist bekanntlich so konzipiert, dass du Fotos nur vom Handy aus hochladen kannst. Diese Einschränkung hat natürlich viele nicht in Ruhe gelassen, bis sie eine Methode fanden, Bilder auch vom PC aus hochzuladen. Wenn du im Internet nach solchen Möglichkeiten suchst, findest du eine große Anzahl solcher Methoden. Da ich etwas vorsichtig bin, wenn ich unbekannte und nicht weit verbreitete Programme installieren soll, war ich froh, eine Methode zu finden, die ein durchaus bekanntes Programm dafür verwendet. Es handelt sich um den Browser Google Chrome.

Zuerst musst du eine Erweiterung für Google Chrome installieren. Gehe dafür in den Chrome Web Store, etwa durch Besuchen der Seite https://chrome.google.com/webstore.

Im Suchfeld links fast ganz oben gibst du „instagram from computer“ ein. Dass du die richtige Erweiterung gefunden hast, siehst du an dem Wort „guimble“, dem Namen des Erstellers.

Dann klicke rechts auf „Hinzufügen“. Ist die Erweiterung hinzugefügt, hast du auf der Chrome-Seite rechts oben ein kleines blaues Symbol, es sieht aus wie ein aufgeklappter Klapprechner. Wenn du mit der Maus darüber fährst, siehst du den seltsamen Text „Facebook video and gif downloader“, der dich aber nicht stören soll.

Um ein Bild zu Instagram hochzuladen, klickst du einfach auf das blaue Symbol. Dann geht ein Fenster mit einer Eingabebox auf. Was musst du dort eintragen? „Instagram Username“ und „Instagram Password“ sind selbsterklärend. In das Feld „Caption“ trägst du die Bildunterschrift und die #-Stichwörter ein, die bei deinem Bild dabeistehen sollen.

Es bleibt noch das Bild einzutragen. Meine Originalbilder sind für Instagram zu groß. Beim Versuch, sie hochzuladen, erhalte ich eine einschlägige Fehlermeldung. Wie groß sie maximal sein dürfen, habe ich nicht eindeutig feststellen können. Wenn du jedoch die Breite auf 640 Pixel verringerst (die Höhe ist bei Bildern im Landschaftsformat dann auch nicht größer), wird das Bild beim Klick in das Feld „Picture“ hochgeladen. Fertig!

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | Kommentar hinterlassen

Firefox reparieren

Der Browser Firefox ist ein komplexes Programm, bei dem es, aus welchen Gründen auch immer, zu Fehlern kommen kann, die man irgendwie nicht direkt beheben kann. Die (auch vom Hersteller Mozilla) empfohlene Vorgehensweise besteht dann oft darin, das Firefox-Profil zurückzusetzen. Das ist zwar schnell gemacht, aber danach bist du mit der Funktion von Firefox sicher nicht zufrieden, weil viele Dinge wie Lesezeichen, Benutzernamen, Passwörter, Cookies, Such- und Formulardaten, Add-ons usw. nicht mehr da sind. Deshalb gibt es an vielen Stellen (auch und besonders ausführlich bei Mozilla) Hinweise und Rezepte, wie du wieder zu deinen Firefox-Daten kommst.

Als ich neulich genau vor diesem Problem stand, konnte ich das zur Wiederherstellung nötige Verfahren beträchtlich abkürzen: Mit der Firefox-Funktion des Synchronisierens (siehe unter „Extras“ in der Menüzeile) können die genannten Daten mit denen von anderen Firefox-Instanzen abgeglichen („synchronisiert“) werden. Der Ort der anderen Firefox-Instanz ist beliebig, da die Daten bei Mozilla gespeichert sind. Da ich nun die Synchronisierung sowieso schon verwendete, weil ich in einem anderen Betriebssystem ebenfalls Firefox nutze, konnte ich dessen Daten mit wenigen Klicks in das jungfräuliche Firefoxprofil einspielen.

Ich habe im vorstehenden Text die nötigen Einzelheiten aus Bequemlichkeit weggelassen, es findet sich aber alles im Firefox-Programm und vor allem auf den Hilfeseiten von Mozilla ausführlich. Ich wollte mit diesem Beitrag nur auf die Möglichkeit des Synchronisierens zum Zweck der Rettung der Firefoxdaten hinweisen.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | Kommentar hinterlassen

Linux, KDE, Okular, PDF-Datei, externe Verweise („Links“)

Wenn ich in meinem Linux openSUSE Leap 42.1 mit KDE eine PDF-Datei lesen möchte, geht das üblicherweise mit dem Programm Okular. Jetzt erhielt ich von meiner Bank eine Mitteilung in PDF-Form. Im Text gab es blau hervorgehobene Wörter, die formal und kontextabhängig wie externe Verweise aussahen, die ich aber nicht anklicken konnte.

Da ich mir nicht vorstellen konnte, dass eine Bank eine nicht funktionierende Übermittlungsweise verwendet, habe ich das ganze in Windows probiert, und siehe da, der dortige Acrobat Reader hat alles gekonnt.

Zurück im Linux habe ich in Okular alles Mögliche  durchsucht, bis ich fündig wurde:

Klicke in der Menüleiste auf „Extras“ und dann auf „Navigation“ und schon kann auch Okular mit den externen Verweisen etwas anfangen.

Kleiner Wermutstropfen (oder großartige Möglichkeiten?): „Navigation“ ist alternativ zu 5 weiteren Funktionalitäten, die du mit der Maus zur Verfügung hast, etwa das Markieren von Text, du hast also immer nur 1 von 6 Funktionen zur Verfügung. Zur Erleichterung gibt es für die Auswahl der Mausfunktionen auch Tastaturgriffe, die du auswendiglernen kannst oder mit dem Klick auf „Extras“ dir anzeigen lassen kannst. Der Acrobat Reader scheint mir in dieser Hinsicht komfortabler zu sein.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , , , , , | Kommentar hinterlassen

Audio-CD mit VLC Media Player abspielen (Linux)

Mein Klapprechner läuft mit Linux openSUSE Leap 42.1, die installierte VLC-Version ist 2.2.2 Weatherwax.

Wenn ich eine Audio-CD einlege, bietet mir das Betriebssystem unter anderem an, die CD mit VLC abzuspielen. Wenn ich dies annehme, öffnet sich das VLC-Fenster, in der linken Menüspalte ist „Playlist“ ausgewählt, im Hauptfenster sind die einzelnen Musikstücke mit Titel, Dauer und Album angezeigt und der erste Titel wird automatisch abgespielt. Das ist alles so, wie es sein soll.

Nun ein anderes Szenarium. Eine Audio-CD ist eingelegt und ich beschließe, sie jetzt mit VLC abzuspielen und starte daher das Programm VLC. Das sich öffnende Fenster sieht ganauso aus wie im ersten Fall mit dem Unterschied, dass im Hauptfenster nichts von der CD erscheint. Das ist selbstverständlich richtig, da ich ja mit meinem VLC etwas anderes vorhaben könnte, als die eingelegte CD abzuspielen.

Anstelle der CD-Daten steht der Text „Playlist ist currently empty. Drop a file here or select a media source from the left.“ Da ich keine Datei zum Fallenlassen habe, beschreite ich die Alternative und wähle vom linken Menü unter „Devices“ den Eintrag „Discs“. Jetzt verschwindet der Inhalt des Hauptfensters und ich bin gerade so weit wie zuvor.

In meiner Not gehe ich mit der Maus zum Startzeichen (nach rechts weisendes Dreieck) ganz links unten. Dort erfahre ich „Play. If the playlist is empty, open a medium“. Ich klicke auf das Startzeichen und es öffnet sich das „Open Media“-Fenster. Dort wähle ich „Disc“, dann „Audio CD“, dann „Play“ und schon (!) schließt sich das „Open Media“-Fenster, im Hauptfenster erscheinen die CD-Daten (falls links „Playlist“ ausgewählt ist bzw. wird) und das erste Stück wird abgespielt.

Bemerkung: Ich habe hier die englische Version beschrieben. In der deutschen geht es genauso. Interessant ist vielleicht, dass die englischen Begriffe „Discs“ und „Disc“ in der deutschen Version „Platten“ bzw. „Medium“ heißen.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | Kommentar hinterlassen

PL/1 für Linux

Im August/September 2011 befasste ich mich mit einem neuen Compiler für die Programmiersprache PL/1 unter Linux. Ich habe in meinem damaligen Blog t520.wordpress.com drei Beiträge darüber veröffentlicht. Nachstehend ihr Wortlaut, die Originalbeiträge im alten Blog habe ich inzwischen gelöscht.

1. Beitrag:

Als PL/I-Nutzer seit 1969 ist mir diese wahrhaft hervorragende Programmiersprache sozusagen ans Herz gewachsen. Wenn ich etwas zu programmieren habe, ist jedesmal PL/I meine erste Wahl, vorausgesetzt, die Umgebung lässt das zu. Ein weißer Fleck auf der PL/I-Landkarte war für mich bisher Linux. Nicht dass jetzt der erste Versuch gestartet wird, PL/I für Linux zur Verfügung zu stellen, aber es gibt jetzt einen neuen Anlauf, den ich (vorerst) mit Wohlwollen betrachte und den ich erst mal mitgehen möchte. Es handelt sich um den PL/I-Compiler der Firma Iron Spring (iron-spring.com) für Linux und OS/2.

Er ist noch so neu, dass er für OS/2 als beta- und für Linux als alpha-Version bezeichnet wird. Entsprechend schwierig war die Installation und erste Benutzung. Das Herunterladen der 2,8 MB großen Datei pli-0.9.2a.tgz war kein Problem. Beim Entpacken mittels Ark machte ich den Fehler, dass ich das Kästchen “Pfade beim Entpacken beibehalten” nicht angeklickt habe, so dass am Ende alle Dateien, auch wenn sie eigentlich in Unterverzeichnissen lagen, sich nebeneinander im gleichen Verzeichnis befanden. Dies hatte zur Folge, dass der Befehl  make install nicht vollständig ausgeführt werden konnte.

Aber ich greife vor. Zunächst erhebt sich nach dem Entpacken die Frage, wie der Compiler zu installieren ist. Nirgendwo auf den Web-Seiten fand ich irgendeinen Hinweis, bis der Zufall half: Im “Programming Guide” gibt es den Abschnitt “Linking PL/I Programs”. Dort findet sich der Verweis “Linux”, der zu einem neuen Dokument führt, das einen Abschnitt “Installation” hat, uff! Wenn man den im obigen Absatz genannten Fehler nicht macht, kann man Compiler und Bibliothek einfach installieren.

Zum Kompilieren eines PL/I-Programms muss man den Parameter -C angeben, also etwa plic -C hw.pli. Ist es in Ordnung, so wird ein Objektprogramm .o erzeugt.

Die nächste Hürde ist der link-Schritt. Angegeben ist der Befehl

ld -z muldefs -Bstatic -M -e main -t -o hw \ hw.o \ -lprf \ >hw.map

Dabei habe ich die angegebenen Variablen schon durch meine Dateinamen hw, hw.o und hw.map (wofür steht wohl hw bei meinem ersten Programm?) ersetzt.

Die Gegenschrägstriche (“\“) sollen Fortsetzungsstriche bei mehrzeiligen Befehlen sein, aber wer weiß das schon? Wenn man sie einfach weglässt, funktioniert alles wunderbar.

Demnächst versuche ich mal richtige Programme und werde weiter berichten.

2. Beitrag

Meine ursprüngliche Freude über einen neuen PL/I-Compiler für Linux (iron-spring.com) hat einen kleinen Dämpfer erfahren, nachdem ich die ersten Schritte gemacht habe.

Das Hauptproblem ist für mich der Sprachumfang des Compilers. Er entspricht dem PL/I für MVS und VM der Firma IBM, was man durchaus für veraltet erklären kann. Ich habe mindestens seit 15 Jahren mit einer neueren Version gearbeitet (PL/I für AIX und PL/I für Windows). In dem ersten Programm, das ich umstellen wollte, habe ich folgende Änderungen machen müssen:

  1. Anweisungen der Art i += 1; müssen in der Grundform i = i  + 1; geschrieben werden. Das sieht nun nicht besonders schlimm aus, aber es gibt ja auch längere Variablennamen, etwa auch qualifizierte, bei denen dann die Schreibarbeit doch wächst.
  2. In Formatlisten ist die do-Schleife nicht erlaubt. Stattdessen muss ich Schleifen um die Ausgabeanweisung herum setzen.
  3. Die Verbindung der im Programm vereinbarten file-Variablen mit dem Dateinamen außerhalb geht nicht mehr bequem über Umgebungsvariablen. Entweder muss ich die title-Option verwenden, dann muss das Programm aber die Dateinamen kennen, sie also etwa beim Aufruf mitgeteilt bekommen haben, oder ich sorge dafür, dass file-Variable und (relativer) Dateiname gleich heißen.
  4. Während ich in der bisher benutzten PL/I-Version zum Beispiel die file-Variable ein nur mit dem Attribut file versehen musste und dann sofort read file (ein) ... verwenden konnte, muss ich für denselben Zweck ein jetzt mit record input env (U) vereinbaren.

Ich vermute, dass bei anderen Programmen noch weitere Änderungen nötig sind, damit der Iron Spring-Compiler sie versteht.

Ein weiteres Problem besteht darin, dass der Compiler wegen seiner Neuheit noch einige Fehler enthält. Bisher habe ich 2 Compilerfehler gefunden (Fehlernummern 208 und 210). Positiv ist zu vermerken, dass der Compilerautor schnell und kompetent auf Fehlerhinweise reagiert.

3. Beitrag

Der PL/I-Compiler von Iron Spring (iron-spring.com) in seiner jetzigen Version (0.9.2a) hat meines Erachtens so viele Fehler bei relativ einfachen Anweisungen, dass er unbrauchbar ist. Ich habe mich daher entschlossen, ihn vorerst nicht weiter zu verwenden. Wenn eine neue Version herauskommt, sehen wir weiter.

*************************************************************************************

Soweit die Vergangenheit aus dem Jahr 2011.

Inzwischen habe ich weiter PL/1 für Windows von der Firma IBM benutzt. Da die damit erstellten Programme natürlich auch für in Linux bearbeitete Aufgaben unter Windows laufen müssen, war ein ständiges Hin- und Herschalten zwischen den beiden Betriebssystemen notwendig. Dies funktioniert zwar durch die Verwendung einer Virtualisierungssoftware (VirtualBox), bei der Windows nur ein Fenster in Linux ist, reibungslos, ist dann aber doch auf die Dauer wegen der von Zeit zu Zeit notwendigen Änderung der Windowssysteme lästig geworden.

Die Neuigkeiten des Iron Spring PL/I Compilers habe ich ständig verfolgt, so dass ich inzwischen glaube, dass ich einen neuen Versuch damit wagen sollte. Die Version ist zunächst 0.9.5, ab Problem Nr. 6 verwende ich 0.9.6.

Das (Test)Objekt ist ein PL/1-Programm von 380 Zeilen. Ich beschreibe im folgenden alle Änderungen, die ich an diesem Programm vornehmen musste, bis es lief. Wenn ich anschließend noch weiter Änderungen beschreiben muss, werde ich sie an diesen Blogbeitrag anhängen, er ist also vorläufig wahrscheinlich/eventuell unvollständig.

Ich habe für jedes Problem einen Schweregrad [n] nach folgender Tabelle vergeben:

  • [0]: Nicht reproduzierbarer Fehler, Ursache unbekannt, eigentlich kein Problem.
  • [1]: Mein Programm ist in einem anderen Dialekt geschrieben. Ich muss – einmalig – mein Programm anpassen.
  • [2]: Mein Programm ist richtig und wird ohne Fehlermeldung kompiliert, jedoch wird bei der Ausführung ein „falscher“ Fehler angezeigt, dessen Ursache nicht ersichtlich ist.
  • [3]: Mein Programm ist richtig und wird ohne Fehlermeldung kompiliert, jedoch führt die Ausführung ohne Fehlermeldung zu einem fehlerhaften Ergebnis.

1. Problem [1]:

Die Anweisung nrtag += 1; ergibt vor der Zeile 286 in der .lst-Datei die Fehlermeldungen

286 (ERR208)Unrecognized keyword NRTAG.
286 (INF249)-input flushed to next ";".

Abhilfe: Schreibe diese Anweisung wie alle ähnlichen um in nrtag = nrtag + 1;

2. Problem [1]:

Die Anweisung put file (tex) edit ((a (i) do i = 1 to 7)) (skip, a); in Zeile 88 wird am Ende der .lst-Datei mit folgender Meldung geahndet:

88 (ERR995)Deferred feature GET/PUT List contains DO.

Abhilfe für diese und entsprechende Anweisungen ist umschreiben in

do i = 1 to 7;
put file (tex) edit (a (i)) (skip, a);
end;

3. Problem [1]:

Die Anweisung do jp = 1 to laenge (i); in Zeile 285 wird am Ende der .lst-Datei mit folgender Meldung geahndet:

285 (ERR690)<exp2> (TO) contains non-scalar or non-computational data.

Abhilfe für diese und entsprechende Anweisungen ist umschreiben in

k = laenge (i);
do jp = 1 to k;

4. Problem [1]:

Der Compiler versteht das Zeichen ^ nicht als Nichtzeichen, wenn man es nicht besonders als solches kennzeichnet. Letzteres geschieht durch Angabe des Parameters "-cn(^)" (einschließlich der Gänsefüßchen) im Aufruf des Compilers.

5. Problem [0]:

Das nach den ersten 4 Änderungen fehlerfrei kompilierte und gebundene Programm geht beim Start in eine Endlosschleife. Leider oder glücklicherweise ließ sich das Problem nicht mehr reproduzieren. Ich weiß leider nicht mehr, was ich geändert habe, oder ob ich überhaupt etwas geändert habe. Weg ist weg!

6. Problem [2]:

Das Programm endet vorzeitig mit der Fehlermeldung

No WHEN clause selected in SELECT statement,
and no OTHERWISE clause present.
ERROR condition raised at address 0805D842
in procedure with entry _pli_OTH
Thread = 7183

Im Programm kommen zwei SELECT-Anweisungen vor. Die eine hat eine OTHERWISE-Klausel, bei der zweiten kann es von der Programmlogik niemals zu dem Fehler kommen. Da ich Anhänger des defensiven Programmierens bin, füge ich dennoch die fehlende Klausel hinzu, in der ich eine Fehlermeldung ausgebe und zum Programmende gehe.

Diese Programmänderung ändert aber nichts an der Fehlermeldung. Sie verschwindet erst, als ich den Bedingungspräfix (STRG): vor der PROCEDURE-Anweisung entferne. Ich bin darauf gekommen, weil ich einen solchen Fehler bereits 2011 gemeldet habe.

Das Problem Nr. 6 habe ich an den Programmautor weitergegeben. Es ist (hoffentlich) in Bearbeitung.

Lösung: Es war erfolgreich in Bearbeitung! Nach weniger als 3 Wochen gab es eine neue Programmversion 0.9.7, in der der Fehler beseitigt wurde. Großes Lob für den Programmautor Peter Flass!

7. Problem [1]:

In der für das 6. Problem hinzugefügten OTHERWISE-Klausel verwende ich die Anweisung put skip data (k);. Dies führt bei der Kompilierung für die Zeile 216 zu der Warnung

216 (WRN557)Undeclared variable SYSPRINT has been assigned default attributes "EXTERNAL FILE".

Die Warnung verschwindet durch die Hinzunahme der Deklaration dcl sysprint file ext;.

8. Problem [3]:

Das Programm beginnt in den Deklarationen mit

DCL A (12) CHAR (73) STATIC INIT (
'\documentclass{report}\usepackage{a4,colordvi,epsf}',
'\usepackage[pdftex]{color,graphicx}',

...

Ziemlich zu Anfang der Programmausführung werden die ersten Zeilen in die Ausgabedatei geschrieben:

do i = 1 to 8;
PUT FILE (TEX) EDIT (A (I)) (SKIP, A);
end;

In der Ausgabedatei fehlen die ersten 8 Zeichen der ersten Zeile!

Als Abhilfe habe ich die Deklaration des Bereichs A um ein nulltes Element ergänzt, welches nicht mit ausgegeben wird:

DCL A (0 :12) CHAR (73) STATIC INIT (
'dummydummydummy',
'\documentclass{report}\usepackage{a4,colordvi,epsf}',
'\usepackage[pdftex]{color,graphicx}',

...
Wird fortgesetzt!

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , , | Kommentar hinterlassen