You can subscribe to this list here.
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(11) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2020 |
Jan
|
Feb
|
Mar
(1) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
(2) |
2022 |
Jan
(28) |
Feb
(6) |
Mar
(14) |
Apr
(4) |
May
|
Jun
(6) |
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
(4) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: Marc R. <re...@gm...> - 2024-10-06 15:24:07
|
I just pushed a new 'interpret' branch with updates to support a new INTERPRET instruction. These updates implement the INTERPRET instruction as in oorexx and regina, i.e. it will parse and execute (interpret) any (valid) NetRexx clauses in the context of the running program, with full access to variables, properties and methods. The included DiagInterpret.nrx unit test shows some of the capabilities: ===== Exec: DiagInterpret ===== >> i = i + 1 >> say 'i = 'i i = 1 >> i = callmethod(i) >> do;say 'i = 'i;end i = 2 >> j = callmethod(j) >> say 'j = 'j j = 2 >> k = j >> say 'k = 'k k = 2 >> if k \= 2 then signal DiagX('Failed create new var') Some faulty clauses to test --- Cannot parse clause : r = substr( --- Cannot parse clause : parse v v --- Cannot parse clause : i = 1/0 --- Cannot parse clause : i = i + --- Cannot parse clause : leave --- Block "do; i = 0" not properly ended --- Cannot parse clause : end --- Cannot parse clauses : end;end --- Cannot parse this "end: end;" >> loop forever; leave; end; >> if 1 then j = 3; else j = 2; >> if 0; then j = 3; else j = 2 >> select; when i = 1 then j = 3; when j = 3 then j = 4; otherwise; j = 1; finally; do;say 'i = 'i; say 'j = 'j; end;end i = 2 j = 1 >> interpret "interpret 'j = 0; say j'" 0 >> j = interpretreturn(j) >> return 1 DiagInterpret: OK! Obviously, the INTERPRET instruction is only supported when interpreting NetRexx. When compiling an INTERPET instruction, the translator will issue an error. Please test Marc |
From: Marc R. <re...@gm...> - 2023-04-21 09:22:18
|
Hi René, releasing 4.05 Beta is fine by me. Will you create a 4.05-BETA branch/tag on the repo, so we have a reference point? Thanks for all your work. Marc On 4/21/23 10:33, René Jansen wrote: > Dear fellow NetRexx developers, > > I want to release NetRexx 4.0.5 BETA tomorrow - any last minute things? Coincidentally, NetRexx is 27 years of GA tomorrow. > > This beta will allow for a few weeks of testing before we go GA just before or during the symposium. Documentation changes can go on, but let’s semi ‘feature freeze’ the larger items. I might put in some input checking in ‘random’ because that is not really complete. > > Ongoing things are also the Homebrew install recipes, but these are outside of the NetRexx repository. If there is anything to put into the beta, now would be an excellent time. > > As we are going to have printed NetRexx books, by the RexxLA Press, I would like to freeze the documentation for a short while on the 1st of May (at which time I will change the version to GA). Extra proofing before that time will be very much appreciated. > > best regards, > > René. > > _______________________________________________ > Netrexx-develop mailing list > Net...@li... > https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: René J. <rvj...@xs...> - 2023-04-21 08:33:55
|
Dear fellow NetRexx developers, I want to release NetRexx 4.0.5 BETA tomorrow - any last minute things? Coincidentally, NetRexx is 27 years of GA tomorrow. This beta will allow for a few weeks of testing before we go GA just before or during the symposium. Documentation changes can go on, but let’s semi ‘feature freeze’ the larger items. I might put in some input checking in ‘random’ because that is not really complete. Ongoing things are also the Homebrew install recipes, but these are outside of the NetRexx repository. If there is anything to put into the beta, now would be an excellent time. As we are going to have printed NetRexx books, by the RexxLA Press, I would like to freeze the documentation for a short while on the 1st of May (at which time I will change the version to GA). Extra proofing before that time will be very much appreciated. best regards, René. |
From: René J. <rvj...@xs...> - 2022-12-13 17:44:43
|
Hi Marc, yes, I see it, I think that makes a lot of people happy. best regards, René. > On 11 Dec 2022, at 10:26, Marc Remes <re...@gm...> wrote: > > Hi René, > > just posted second part of the NRL updates. > Built-in methods are now in the navigation pane of the pdf reader. > > Marc > > On 12/11/22 00:03, René Jansen wrote: >> Hi Marc, >> look great! >> I was looking for a way to have the BIFs (or are those BIMs in NetRexx) displayed more prominently - there have bewen a few requests for that. It would be good if they were all listed when someone opens the “Methods for NetRexx Strings” tab - problem is here that this (always) was a fairly flat definition list. Splitting it into something that turns up in the tab window is probably a lot of work. >> I thought I done a change for the title page - there is a linefeed missing now - but I cannot find the commit. It might be sitting on some machine without being pushed, I’ll redo after we merged this. >> best regards, >> René. >>> On 9 Dec 2022, at 10:14, Marc Remes <re...@gm...> wrote: >>> >>> I pushed the work-in-progress doc-reorganise branch. >>> It is an attempt to remove the clutter in the pdf navigation pane by converting chapters into sections. >>> >>> Is this something worthwhile pursuing further? Any other remarks? >>> >>> Marc >>> _______________________________________________ >>> Netrexx-develop mailing list >>> Net...@li... >>> https://lists.sourceforge.net/lists/listinfo/netrexx-develop >> _______________________________________________ >> Netrexx-develop mailing list >> Net...@li... >> https://lists.sourceforge.net/lists/listinfo/netrexx-develop > _______________________________________________ > Netrexx-develop mailing list > Net...@li... > https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: Marc R. <re...@gm...> - 2022-12-11 14:27:09
|
Hi René, just posted second part of the NRL updates. Built-in methods are now in the navigation pane of the pdf reader. Marc On 12/11/22 00:03, René Jansen wrote: > Hi Marc, > > look great! > > I was looking for a way to have the BIFs (or are those BIMs in NetRexx) displayed more prominently - there have bewen a few requests for that. It would be good if they were all listed when someone opens the “Methods for NetRexx Strings” tab - problem is here that this (always) was a fairly flat definition list. Splitting it into something that turns up in the tab window is probably a lot of work. > > I thought I done a change for the title page - there is a linefeed missing now - but I cannot find the commit. It might be sitting on some machine without being pushed, I’ll redo after we merged this. > > best regards, > > René. > >> On 9 Dec 2022, at 10:14, Marc Remes <re...@gm...> wrote: >> >> I pushed the work-in-progress doc-reorganise branch. >> It is an attempt to remove the clutter in the pdf navigation pane by converting chapters into sections. >> >> Is this something worthwhile pursuing further? Any other remarks? >> >> Marc >> _______________________________________________ >> Netrexx-develop mailing list >> Net...@li... >> https://lists.sourceforge.net/lists/listinfo/netrexx-develop > > > > _______________________________________________ > Netrexx-develop mailing list > Net...@li... > https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: René J. <rvj...@xs...> - 2022-12-10 23:03:51
|
Hi Marc, look great! I was looking for a way to have the BIFs (or are those BIMs in NetRexx) displayed more prominently - there have bewen a few requests for that. It would be good if they were all listed when someone opens the “Methods for NetRexx Strings” tab - problem is here that this (always) was a fairly flat definition list. Splitting it into something that turns up in the tab window is probably a lot of work. I thought I done a change for the title page - there is a linefeed missing now - but I cannot find the commit. It might be sitting on some machine without being pushed, I’ll redo after we merged this. best regards, René. > On 9 Dec 2022, at 10:14, Marc Remes <re...@gm...> wrote: > > I pushed the work-in-progress doc-reorganise branch. > It is an attempt to remove the clutter in the pdf navigation pane by converting chapters into sections. > > Is this something worthwhile pursuing further? Any other remarks? > > Marc > _______________________________________________ > Netrexx-develop mailing list > Net...@li... > https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: Marc R. <re...@gm...> - 2022-12-09 14:14:37
|
I pushed the work-in-progress doc-reorganise branch. It is an attempt to remove the clutter in the pdf navigation pane by converting chapters into sections. Is this something worthwhile pursuing further? Any other remarks? Marc |
From: Jason M. <agr...@gm...> - 2022-08-18 21:36:19
|
Side note: Latest version does not lock OpenBSD when X window closed. |
From: Jason M. <agr...@gm...> - 2022-08-18 21:34:45
|
Sorry, I had period ".:" in CLASSPATH. Been some time, since I done any testing. |
From: Jason M. <agr...@gm...> - 2022-08-18 21:03:39
|
[33mWorkspace for NetRexx 4.04 [0m build 1-20220818-1657 Copyright (c) Martin Lafaix 2000 Copyright (c) parts RexxLA 2019,2021 +++ [31mError [0m: Exception ' [33m./nim/dist/nimble/tests/run: Too many open files [0m' is raised while initializing properties, but cannot be caught Throwable:java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 [34mReady; [0m [34m1.441 s [?1l [?1000l [?2004lException in thread "main" java.io.IOError: java.io.IOException: Cannot run program "stty": error=24, Too many open files at org.jline.terminal.impl.AbstractPosixTerminal.getAttributes(AbstractPosixTerminal.java:46) at org.jline.terminal.impl.AbstractTerminal.enterRawMode(AbstractTerminal.java:117) at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:602) at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:494) at org.vpad.extra.workpad.Workspace.read(Workspace.java:461) at org.vpad.extra.workpad.Workspace.start(Workspace.java:418) at org.vpad.extra.workpad.Workspace.main(Workspace.java:305) Caused by: java.io.IOException: Cannot run program "stty": error=24, Too many open files at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) at org.jline.utils.ExecHelper.exec(ExecHelper.java:35) at org.jline.terminal.impl.ExecPty.doGetConfig(ExecPty.java:175) at org.jline.terminal.impl.ExecPty.getAttr(ExecPty.java:87) at org.jline.terminal.impl.AbstractPosixTerminal.getAttributes(AbstractPosixTerminal.java:44) ... 6 more Caused by: java.io.IOException: error=24, Too many open files at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:251) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ... 10 more |
From: Jason M. <agr...@gm...> - 2022-08-18 20:43:57
|
src/netrexx/lang/RexxDictionary.nrx : Notes say it's OK src/org/netrexx/njpipes/node.nrx src/org/netrexx/process/NetRexxInterpreter.nrx src/org/netrexx/process/NetRexxS.nrx src/org/netrexx/process/Nrx.nrx tests/lists/CSVtest.nrx tests/lists/jsontest.nrx tests/lists/jsontest2.nrx tests/lists/wordlisttest.nrx tests/testUTF8Default.nrx |
From: René J. <rvj...@xs...> - 2022-06-28 22:53:15
|
[intentionally cross-posted] Dear RexxLA members, The 33rd International Rexx Language Symposium (2022) will be on September 12-14, with an optional programme on the preceding Sunday. Like last year, the symposium will be online and conducted via zoom. Also like last year, the schedule will be adapted to the time zones in the US and Europe. (For other geographies we might re-run some of the presentations - it is our firm intention to have some of the presentations available on video this year). The International Rexx Language Symposium is a yearly event where Rexx users, irrespective of implementations and language variants, can meet and mingle. The programme committee which judges the presentation proposals consists of the President and the Vice President of RexxLA - that is myself and Terry Fuller. Please send in your presentation proposals! The separate Call For Papers (CFP) will shine more light on this process and its requirements. Apart from the presentations (which are readable from the RexxLA.org <http://rexxla.org/> website right after the presentations takes place, and which are often used a reference material), this yearly symposium is also a great opportunity to meet your fellow Rexx users, the implementors of the various variants, and - if we are lucky - a Q&A Session with the Father of Rexx himself, IBM Fellow Michael Cowlishaw. This year there will be even more Q&A sessions, and social events where we leave the session and its microphones and cameras open - and we will even experiment with parallel- and breakout sessions (if we understand how to do these in Zoom in time). There will be presentations on Classic (including mainframe) Rexx on TSO (ISPF) and CMS, Regina Rexx, NetRexx for the JVM world, and Open Object Rexx. Also, new implementations will be discussed. Hope to see you all! Best regards, René Jansen, President, Rexx Language Association. |
From: Rony G. F. <Ron...@wu...> - 2022-06-18 11:26:57
|
On 17.06.2022 18:20, René Jansen wrote: > Wow! +1 Very nice! ---rony >> On 17 Jun 2022, at 16:38, Marc Remes <re...@gm...> wrote: >> >> Latest push fixes access to properties >> >>> On 6/17/22 10:49, Marc Remes wrote: >>> I've updated branch interactive-trace. >>> You now have access to method variables and arguments, you can view or modify their values. Accessing properties still throws an exception. >>> On the interactive trace *-> prompt you can now: >>> press [Enter] to trace interactively >>> type '=' to reinterpret current clause >>> type '-[n]' to show previous n clause(s), shows current clause if n is absent >>> type '+[n]' to show next n clause(s), shows next clause if n is absent >>> type 'trace off' to stop tracing >>> any other clause entered must be either an assignment or a SAY instruction >>> I've turned away of touching existing code as much as possible, so albeit experimental, impact on existing code is limited to nonexistent. >>> A sample run : >>> << >>> $ cat trace.nrx >>> class trace >>> method main(args=String[]) static >>> say 'interactively tracing..' >>> trace int >>> i=0 >>> say 'i='i >>> do >>> say 'Hello world'||'!'.copies(i) >>> end >>> trace off >>> x=traces(9) >>> say 'x:'x >>> xx=traced(9) >>> say 'xx.prop:'xx.prop >>> loop while i < 5 >>> trace int >>> i=i+1 >>> say 'i='i >>> say 'Hello world'||'!'.copies(i) >>> end >>> method traces(arg=Rexx) static >>> trace int >>> say 'method traced called' >>> say 'traced:'arg >>> return arg >>> class traced >>> properties public >>> prop = 9 >>> method traced(arg=Rexx) >>> trace int >>> say 'prop:'prop >>> say 'class traced constructed' >>> say 'traced:'arg >>> $ nrc -exec trace >>> NetRexx portable processor 4.04-alpha build 1,558-20220616-1912 >>> Copyright (c) RexxLA, 2011,2022. All rights reserved. >>> Parts Copyright (c) IBM Corporation, 1995,2008. >>> Program trace.nrx >>> === class trace === >>> function main(String[]) >>> function traces(Rexx) >>> === class traced === >>> constructor traced(Rexx) >>> ===== Exec: trace ===== >>> interactively tracing.. >>> *-> >>> --- trace.nrx >>> 6 *=* i=0 >>> >v> i "0" >>> *-> say i >>> 0 >>> *-> i=3 >>> *-> say i >>> 3 >>> *-> >>> 7 *=* say 'i='i >>> >>> "i=3" >>> i=3 >>> *-> >>> 8 *=* do >>> *-> >>> 9 *=* say 'Hello world'||'!'.copies(i) >>> >>> "3" >>> >>> "Hello world!!!" >>> Hello world!!! >>> *-> >>> 10 *=* end >>> *-> >>> 11 *=* trace off >>> *-> >>> 25 *=* say 'method traced called' >>> >>> "method traced called" >>> method traced called >>> *-> -3 >>> method traces(arg=Rexx) static >>> trace int >>> say "method traced called" >>> *-> say arg >>> 9 >>> *-> arg=8 >>> *-> >>> 26 *=* say 'traced:'arg >>> >>> "traced:8" >>> traced:8 >>> *-> >>> 27 *=* return arg >>> >>> "8" >>> *-> >>> x:8 >>> *-> >>> 35 *=* say 'prop:'prop >>> >>> "prop:9" >>> prop:9 >>> *-> >>> 36 *=* say 'class traced constructed' >>> >>> "class traced constructed" >>> class traced constructed >>> *-> -3 >>> trace int >>> say "prop:"prop >>> say "class traced constructed" >>> *-> -5 >>> prop=9 >>> method traced(arg=Rexx) >>> trace int >>> say "prop:"prop >>> say "class traced constructed" >>> *-> say arg >>> 9 >>> *-> arg=8 >>> *-> say arg >>> 8 >>> *-> >>> 37 *=* say 'traced:'arg >>> >>> "traced:8" >>> traced:8 >>> *-> >>> xx.prop:9 >>> *-> >>> 18 *=* i=i+1 >>> >v> i "4" >>> *-> >>> 19 *=* say 'i='i >>> >>> "i=4" >>> i=4 >>> *-> trace off >>> Hello world!!!! >>> *-> >>> 18 *=* i=i+1 >>> >v> i "5" >>> *-> >>> 19 *=* say 'i='i >>> >>> "i=5" >>> i=5 >>> *-> >>> 20 *=* say 'Hello world'||'!'.copies(i) >>> >>> "5" >>> >>> "Hello world!!!!!" >>> Hello world!!!!! >>> *-> >>> 16 *=* loop while i < 5 >>> >>> "0" >>> *-> >>> 21 *=* end >>> *-> >>> Processing of 'trace.nrx' complete [2 classes] >>> Please test; >>> Marc >>>> On 6/7/22 13:42, Marc Remes wrote: >>>> I've submitted branch interactive-trace, an *experimental* *experiment* to mimic Classic Rexx interactive trace capabilities. >>>> >>>> The new 'TRACE INT' instruction will intercept and pause execution during interpretation and present a '*->' prompt to the user. >>>> Pressing [Enter] will interpret next clause >>>> Typing '=' will reinterpret current clause >>>> Typing '?' will show usage >>>> Typing 'TRACE OFF' will stop interactive trace and will continue normally with next clause >>>> Typing anything else is currently 'not supported'. >>>> >>>> TRACE INT is only active when interpreting NetRexx code, otherwise a warning 'TRACE INT ignored when compiling' is shown. >>>> >>>> An example: >>>> << >>>> $ cat trace.nrx >>>> >>>> class trace >>>> >>>> method main(args=String[]) static >>>> say 'interactively tracing..' >>>> trace int >>>> i=0 >>>> say 'i='i >>>> do >>>> say 'Hello world'||'!'.copies(i) >>>> end >>>> trace off >>>> loop while i < 5 >>>> trace int >>>> i=i+1 >>>> say 'i='i >>>> say 'Hello world'||'!'.copies(i) >>>> end >>>> Sample run: >>>> << >>>> $ nrc -exec trace >>>> NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 >>>> Copyright (c) RexxLA, 2011,2022. All rights reserved. >>>> Parts Copyright (c) IBM Corporation, 1995,2008. >>>> Program trace.nrx >>>> === class trace === >>>> function main(String[]) >>>> ===== Exec: trace ===== >>>> interactively tracing.. >>>> *-> >>>> --- trace.nrx >>>> 6 *=* i=0 >>>> >v> i "0" >>>> *-> >>>> 7 *=* say 'i='i >>>> >>> "i=0" >>>> i=0 >>>> *-> trace off >>>> Hello world >>>> *-> >>>> 14 *=* i=i+1 >>>> >v> i "1" >>>> *-> trace off >>>> i=1 >>>> Hello world! >>>> *-> >>>> 14 *=* i=i+1 >>>> >v> i "2" >>>> *-> = >>>> *=* i=i+1 >>>> >v> i "3" >>>> *-> >>>> 15 *=* say 'i='i >>>> >>> "i=3" >>>> i=3 >>>> *-> >>>> 16 *=* say 'Hello world'||'!'.copies(i) >>>> >>> "3" >>>> >>> "Hello world!!!" >>>> Hello world!!! >>>> *-> >>>> 12 *=* loop while i < 5 >>>> >>> "1" >>>> *-> trace off >>>> *-> >>>> 14 *=* i=i+1 >>>> >v> i "4" >>>> *-> trace off >>>> i=4 >>>> Hello world!!!! >>>> *-> trace off >>>> i=5 >>>> Hello world!!!!! >>>> Processing of 'trace.nrx' complete >>>> Do not reinterprete a clause that changes 'level' depth: >>>> << >>>> $ nrc -exec trace >>>> NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 >>>> Copyright (c) RexxLA, 2011,2022. All rights reserved. >>>> Parts Copyright (c) IBM Corporation, 1995,2008. >>>> Program trace.nrx >>>> === class trace === >>>> function main(String[]) >>>> ===== Exec: trace ===== >>>> interactively tracing.. >>>> *-> >>>> --- trace.nrx >>>> 6 *=* i=0 >>>> >v> i "0" >>>> *-> >>>> 7 *=* say 'i='i >>>> >>> "i=0" >>>> i=0 >>>> *-> >>>> 8 *=* do >>>> *-> >>>> 9 *=* say 'Hello world'||'!'.copies(i) >>>> >>> "0" >>>> >>> "Hello world" >>>> Hello world >>>> *-> >>>> 10 *=* end >>>> *-> = >>>> *=* end >>>> *-> = >>>> *=* end >>>> Exception in thread "main" java.lang.NullPointerException: Cannot read field "prev" because "<parameter1>.curlevel" is null >>>> at org.netrexx.process.RxInterpreter.poplevel(RxInterpreter.java:1590) >>>> at org.netrexx.process.NrEnd.interpret(NrEnd.java:174) >>>> at org.netrexx.process.RxInterpreter.runfree(RxInterpreter.java:1314) >>>> at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:1180) >>>> at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:835) >>>> at org.netrexx.process.RxTranslator.exec(RxTranslator.java:791) >>>> at org.netrexx.process.NetRexxC.process(NetRexxC.java:536) >>>> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:345) >>>> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:324) >>>> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:320) >>>> at org.netrexx.process.NetRexxC.main(NetRexxC.java:174) >>>> As such, the code is to be considered experimental.. >>>> >>>> Pressing [Enter] without interfering with execution should not have other impact than 'pausing' execution. >>>> >>>> Obviously, 'not supported' should be replaced by interpreting the provided 'trace' clause in the context of the current program with access to the current varpool. >>>> Unfortunately, this is not trivial, at least with my understanding of Mike's code. >>>> >>>> Marc >>>> >>>> >>>> |
From: René J. <rvj...@xs...> - 2022-06-17 16:20:26
|
Wow! René. > On 17 Jun 2022, at 16:38, Marc Remes <re...@gm...> wrote: > > Latest push fixes access to properties > >> On 6/17/22 10:49, Marc Remes wrote: >> I've updated branch interactive-trace. >> You now have access to method variables and arguments, you can view or modify their values. Accessing properties still throws an exception. >> On the interactive trace *-> prompt you can now: >> press [Enter] to trace interactively >> type '=' to reinterpret current clause >> type '-[n]' to show previous n clause(s), shows current clause if n is absent >> type '+[n]' to show next n clause(s), shows next clause if n is absent >> type 'trace off' to stop tracing >> any other clause entered must be either an assignment or a SAY instruction >> I've turned away of touching existing code as much as possible, so albeit experimental, impact on existing code is limited to nonexistent. >> A sample run : >> << >> $ cat trace.nrx >> class trace >> method main(args=String[]) static >> say 'interactively tracing..' >> trace int >> i=0 >> say 'i='i >> do >> say 'Hello world'||'!'.copies(i) >> end >> trace off >> x=traces(9) >> say 'x:'x >> xx=traced(9) >> say 'xx.prop:'xx.prop >> loop while i < 5 >> trace int >> i=i+1 >> say 'i='i >> say 'Hello world'||'!'.copies(i) >> end >> method traces(arg=Rexx) static >> trace int >> say 'method traced called' >> say 'traced:'arg >> return arg >> class traced >> properties public >> prop = 9 >> method traced(arg=Rexx) >> trace int >> say 'prop:'prop >> say 'class traced constructed' >> say 'traced:'arg >> $ nrc -exec trace >> NetRexx portable processor 4.04-alpha build 1,558-20220616-1912 >> Copyright (c) RexxLA, 2011,2022. All rights reserved. >> Parts Copyright (c) IBM Corporation, 1995,2008. >> Program trace.nrx >> === class trace === >> function main(String[]) >> function traces(Rexx) >> === class traced === >> constructor traced(Rexx) >> ===== Exec: trace ===== >> interactively tracing.. >> *-> >> --- trace.nrx >> 6 *=* i=0 >> >v> i "0" >> *-> say i >> 0 >> *-> i=3 >> *-> say i >> 3 >> *-> >> 7 *=* say 'i='i >> >>> "i=3" >> i=3 >> *-> >> 8 *=* do >> *-> >> 9 *=* say 'Hello world'||'!'.copies(i) >> >>> "3" >> >>> "Hello world!!!" >> Hello world!!! >> *-> >> 10 *=* end >> *-> >> 11 *=* trace off >> *-> >> 25 *=* say 'method traced called' >> >>> "method traced called" >> method traced called >> *-> -3 >> method traces(arg=Rexx) static >> trace int >> say "method traced called" >> *-> say arg >> 9 >> *-> arg=8 >> *-> >> 26 *=* say 'traced:'arg >> >>> "traced:8" >> traced:8 >> *-> >> 27 *=* return arg >> >>> "8" >> *-> >> x:8 >> *-> >> 35 *=* say 'prop:'prop >> >>> "prop:9" >> prop:9 >> *-> >> 36 *=* say 'class traced constructed' >> >>> "class traced constructed" >> class traced constructed >> *-> -3 >> trace int >> say "prop:"prop >> say "class traced constructed" >> *-> -5 >> prop=9 >> method traced(arg=Rexx) >> trace int >> say "prop:"prop >> say "class traced constructed" >> *-> say arg >> 9 >> *-> arg=8 >> *-> say arg >> 8 >> *-> >> 37 *=* say 'traced:'arg >> >>> "traced:8" >> traced:8 >> *-> >> xx.prop:9 >> *-> >> 18 *=* i=i+1 >> >v> i "4" >> *-> >> 19 *=* say 'i='i >> >>> "i=4" >> i=4 >> *-> trace off >> Hello world!!!! >> *-> >> 18 *=* i=i+1 >> >v> i "5" >> *-> >> 19 *=* say 'i='i >> >>> "i=5" >> i=5 >> *-> >> 20 *=* say 'Hello world'||'!'.copies(i) >> >>> "5" >> >>> "Hello world!!!!!" >> Hello world!!!!! >> *-> >> 16 *=* loop while i < 5 >> >>> "0" >> *-> >> 21 *=* end >> *-> >> Processing of 'trace.nrx' complete [2 classes] >>>> >> Please test; >> Marc >>> On 6/7/22 13:42, Marc Remes wrote: >>> I've submitted branch interactive-trace, an *experimental* *experiment* to mimic Classic Rexx interactive trace capabilities. >>> >>> The new 'TRACE INT' instruction will intercept and pause execution during interpretation and present a '*->' prompt to the user. >>> Pressing [Enter] will interpret next clause >>> Typing '=' will reinterpret current clause >>> Typing '?' will show usage >>> Typing 'TRACE OFF' will stop interactive trace and will continue normally with next clause >>> Typing anything else is currently 'not supported'. >>> >>> TRACE INT is only active when interpreting NetRexx code, otherwise a warning 'TRACE INT ignored when compiling' is shown. >>> >>> An example: >>> << >>> $ cat trace.nrx >>> >>> class trace >>> >>> method main(args=String[]) static >>> say 'interactively tracing..' >>> trace int >>> i=0 >>> say 'i='i >>> do >>> say 'Hello world'||'!'.copies(i) >>> end >>> trace off >>> loop while i < 5 >>> trace int >>> i=i+1 >>> say 'i='i >>> say 'Hello world'||'!'.copies(i) >>> end >>>>> >>> >>> Sample run: >>> << >>> $ nrc -exec trace >>> NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 >>> Copyright (c) RexxLA, 2011,2022. All rights reserved. >>> Parts Copyright (c) IBM Corporation, 1995,2008. >>> Program trace.nrx >>> === class trace === >>> function main(String[]) >>> ===== Exec: trace ===== >>> interactively tracing.. >>> *-> >>> --- trace.nrx >>> 6 *=* i=0 >>> >v> i "0" >>> *-> >>> 7 *=* say 'i='i >>> >>> "i=0" >>> i=0 >>> *-> trace off >>> Hello world >>> *-> >>> 14 *=* i=i+1 >>> >v> i "1" >>> *-> trace off >>> i=1 >>> Hello world! >>> *-> >>> 14 *=* i=i+1 >>> >v> i "2" >>> *-> = >>> *=* i=i+1 >>> >v> i "3" >>> *-> >>> 15 *=* say 'i='i >>> >>> "i=3" >>> i=3 >>> *-> >>> 16 *=* say 'Hello world'||'!'.copies(i) >>> >>> "3" >>> >>> "Hello world!!!" >>> Hello world!!! >>> *-> >>> 12 *=* loop while i < 5 >>> >>> "1" >>> *-> trace off >>> *-> >>> 14 *=* i=i+1 >>> >v> i "4" >>> *-> trace off >>> i=4 >>> Hello world!!!! >>> *-> trace off >>> i=5 >>> Hello world!!!!! >>> Processing of 'trace.nrx' complete >>>>> >>> >>> Do not reinterprete a clause that changes 'level' depth: >>> << >>> $ nrc -exec trace >>> NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 >>> Copyright (c) RexxLA, 2011,2022. All rights reserved. >>> Parts Copyright (c) IBM Corporation, 1995,2008. >>> Program trace.nrx >>> === class trace === >>> function main(String[]) >>> ===== Exec: trace ===== >>> interactively tracing.. >>> *-> >>> --- trace.nrx >>> 6 *=* i=0 >>> >v> i "0" >>> *-> >>> 7 *=* say 'i='i >>> >>> "i=0" >>> i=0 >>> *-> >>> 8 *=* do >>> *-> >>> 9 *=* say 'Hello world'||'!'.copies(i) >>> >>> "0" >>> >>> "Hello world" >>> Hello world >>> *-> >>> 10 *=* end >>> *-> = >>> *=* end >>> *-> = >>> *=* end >>> Exception in thread "main" java.lang.NullPointerException: Cannot read field "prev" because "<parameter1>.curlevel" is null >>> at org.netrexx.process.RxInterpreter.poplevel(RxInterpreter.java:1590) >>> at org.netrexx.process.NrEnd.interpret(NrEnd.java:174) >>> at org.netrexx.process.RxInterpreter.runfree(RxInterpreter.java:1314) >>> at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:1180) >>> at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:835) >>> at org.netrexx.process.RxTranslator.exec(RxTranslator.java:791) >>> at org.netrexx.process.NetRexxC.process(NetRexxC.java:536) >>> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:345) >>> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:324) >>> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:320) >>> at org.netrexx.process.NetRexxC.main(NetRexxC.java:174) >>>>> >>> As such, the code is to be considered experimental.. >>> >>> Pressing [Enter] without interfering with execution should not have other impact than 'pausing' execution. >>> >>> Obviously, 'not supported' should be replaced by interpreting the provided 'trace' clause in the context of the current program with access to the current varpool. >>> Unfortunately, this is not trivial, at least with my understanding of Mike's code. >>> >>> Marc >>> >>> >>> >>> >>> > _______________________________________________ > Netrexx-develop mailing list > Net...@li... > https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: Marc R. <re...@gm...> - 2022-06-17 14:38:24
|
Latest push fixes access to properties On 6/17/22 10:49, Marc Remes wrote: > > I've updated branch interactive-trace. > > You now have access to method variables and arguments, you can view or modify their values. Accessing properties still throws an exception. > > On the interactive trace *-> prompt you can now: > > press [Enter] to trace interactively > type '=' to reinterpret current clause > type '-[n]' to show previous n clause(s), shows current clause if n is absent > type '+[n]' to show next n clause(s), shows next clause if n is absent > type 'trace off' to stop tracing > any other clause entered must be either an assignment or a SAY instruction > > I've turned away of touching existing code as much as possible, so albeit experimental, impact on existing code is limited to nonexistent. > > A sample run : > << > $ cat trace.nrx > > class trace > > method main(args=String[]) static > say 'interactively tracing..' > trace int > i=0 > say 'i='i > do > say 'Hello world'||'!'.copies(i) > end > trace off > x=traces(9) > say 'x:'x > xx=traced(9) > say 'xx.prop:'xx.prop > loop while i < 5 > trace int > i=i+1 > say 'i='i > say 'Hello world'||'!'.copies(i) > end > > method traces(arg=Rexx) static > trace int > say 'method traced called' > say 'traced:'arg > return arg > > class traced > properties public > prop = 9 > > method traced(arg=Rexx) > trace int > say 'prop:'prop > say 'class traced constructed' > say 'traced:'arg > $ nrc -exec trace > NetRexx portable processor 4.04-alpha build 1,558-20220616-1912 > Copyright (c) RexxLA, 2011,2022. All rights reserved. > Parts Copyright (c) IBM Corporation, 1995,2008. > Program trace.nrx > === class trace === > function main(String[]) > function traces(Rexx) > > === class traced === > constructor traced(Rexx) > ===== Exec: trace ===== > interactively tracing.. > *-> > --- trace.nrx > 6 *=* i=0 > >v> i "0" > *-> say i > 0 > *-> i=3 > *-> say i > 3 > *-> > 7 *=* say 'i='i > >>> "i=3" > i=3 > *-> > 8 *=* do > *-> > 9 *=* say 'Hello world'||'!'.copies(i) > >>> "3" > >>> "Hello world!!!" > Hello world!!! > *-> > 10 *=* end > *-> > 11 *=* trace off > *-> > 25 *=* say 'method traced called' > >>> "method traced called" > method traced called > *-> -3 > method traces(arg=Rexx) static > trace int > say "method traced called" > *-> say arg > 9 > *-> arg=8 > *-> > 26 *=* say 'traced:'arg > >>> "traced:8" > traced:8 > *-> > 27 *=* return arg > >>> "8" > *-> > x:8 > *-> > 35 *=* say 'prop:'prop > >>> "prop:9" > prop:9 > *-> > 36 *=* say 'class traced constructed' > >>> "class traced constructed" > class traced constructed > *-> -3 > trace int > say "prop:"prop > say "class traced constructed" > *-> -5 > prop=9 > method traced(arg=Rexx) > trace int > say "prop:"prop > say "class traced constructed" > *-> say arg > 9 > *-> arg=8 > *-> say arg > 8 > *-> > 37 *=* say 'traced:'arg > >>> "traced:8" > traced:8 > *-> > xx.prop:9 > *-> > 18 *=* i=i+1 > >v> i "4" > *-> > 19 *=* say 'i='i > >>> "i=4" > i=4 > *-> trace off > Hello world!!!! > *-> > 18 *=* i=i+1 > >v> i "5" > *-> > 19 *=* say 'i='i > >>> "i=5" > i=5 > *-> > 20 *=* say 'Hello world'||'!'.copies(i) > >>> "5" > >>> "Hello world!!!!!" > Hello world!!!!! > *-> > 16 *=* loop while i < 5 > >>> "0" > *-> > 21 *=* end > *-> > Processing of 'trace.nrx' complete [2 classes] >>> > > Please test; > > Marc > > On 6/7/22 13:42, Marc Remes wrote: >> I've submitted branch interactive-trace, an *experimental* *experiment* to mimic Classic Rexx interactive trace capabilities. >> >> The new 'TRACE INT' instruction will intercept and pause execution during interpretation and present a '*->' prompt to the user. >> Pressing [Enter] will interpret next clause >> Typing '=' will reinterpret current clause >> Typing '?' will show usage >> Typing 'TRACE OFF' will stop interactive trace and will continue normally with next clause >> Typing anything else is currently 'not supported'. >> >> TRACE INT is only active when interpreting NetRexx code, otherwise a warning 'TRACE INT ignored when compiling' is shown. >> >> An example: >> << >> $ cat trace.nrx >> >> class trace >> >> method main(args=String[]) static >> say 'interactively tracing..' >> trace int >> i=0 >> say 'i='i >> do >> say 'Hello world'||'!'.copies(i) >> end >> trace off >> loop while i < 5 >> trace int >> i=i+1 >> say 'i='i >> say 'Hello world'||'!'.copies(i) >> end >>>> >> >> Sample run: >> << >> $ nrc -exec trace >> NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 >> Copyright (c) RexxLA, 2011,2022. All rights reserved. >> Parts Copyright (c) IBM Corporation, 1995,2008. >> Program trace.nrx >> === class trace === >> function main(String[]) >> ===== Exec: trace ===== >> interactively tracing.. >> *-> >> --- trace.nrx >> 6 *=* i=0 >> >v> i "0" >> *-> >> 7 *=* say 'i='i >> >>> "i=0" >> i=0 >> *-> trace off >> Hello world >> *-> >> 14 *=* i=i+1 >> >v> i "1" >> *-> trace off >> i=1 >> Hello world! >> *-> >> 14 *=* i=i+1 >> >v> i "2" >> *-> = >> *=* i=i+1 >> >v> i "3" >> *-> >> 15 *=* say 'i='i >> >>> "i=3" >> i=3 >> *-> >> 16 *=* say 'Hello world'||'!'.copies(i) >> >>> "3" >> >>> "Hello world!!!" >> Hello world!!! >> *-> >> 12 *=* loop while i < 5 >> >>> "1" >> *-> trace off >> *-> >> 14 *=* i=i+1 >> >v> i "4" >> *-> trace off >> i=4 >> Hello world!!!! >> *-> trace off >> i=5 >> Hello world!!!!! >> Processing of 'trace.nrx' complete >>>> >> >> Do not reinterprete a clause that changes 'level' depth: >> << >> $ nrc -exec trace >> NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 >> Copyright (c) RexxLA, 2011,2022. All rights reserved. >> Parts Copyright (c) IBM Corporation, 1995,2008. >> Program trace.nrx >> === class trace === >> function main(String[]) >> ===== Exec: trace ===== >> interactively tracing.. >> *-> >> --- trace.nrx >> 6 *=* i=0 >> >v> i "0" >> *-> >> 7 *=* say 'i='i >> >>> "i=0" >> i=0 >> *-> >> 8 *=* do >> *-> >> 9 *=* say 'Hello world'||'!'.copies(i) >> >>> "0" >> >>> "Hello world" >> Hello world >> *-> >> 10 *=* end >> *-> = >> *=* end >> *-> = >> *=* end >> Exception in thread "main" java.lang.NullPointerException: Cannot read field "prev" because "<parameter1>.curlevel" is null >> at org.netrexx.process.RxInterpreter.poplevel(RxInterpreter.java:1590) >> at org.netrexx.process.NrEnd.interpret(NrEnd.java:174) >> at org.netrexx.process.RxInterpreter.runfree(RxInterpreter.java:1314) >> at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:1180) >> at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:835) >> at org.netrexx.process.RxTranslator.exec(RxTranslator.java:791) >> at org.netrexx.process.NetRexxC.process(NetRexxC.java:536) >> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:345) >> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:324) >> at org.netrexx.process.NetRexxC.main2(NetRexxC.java:320) >> at org.netrexx.process.NetRexxC.main(NetRexxC.java:174) >>>> >> As such, the code is to be considered experimental.. >> >> Pressing [Enter] without interfering with execution should not have other impact than 'pausing' execution. >> >> Obviously, 'not supported' should be replaced by interpreting the provided 'trace' clause in the context of the current program with access to the current varpool. >> Unfortunately, this is not trivial, at least with my understanding of Mike's code. >> >> Marc >> >> >> >> >> |
From: Marc R. <re...@gm...> - 2022-06-17 08:50:08
|
I've updated branch interactive-trace. You now have access to method variables and arguments, you can view or modify their values. Accessing properties still throws an exception. On the interactive trace *-> prompt you can now: press [Enter] to trace interactively type '=' to reinterpret current clause type '-[n]' to show previous n clause(s), shows current clause if n is absent type '+[n]' to show next n clause(s), shows next clause if n is absent type 'trace off' to stop tracing any other clause entered must be either an assignment or a SAY instruction I've turned away of touching existing code as much as possible, so albeit experimental, impact on existing code is limited to nonexistent. A sample run : << $ cat trace.nrx class trace method main(args=String[]) static say 'interactively tracing..' trace int i=0 say 'i='i do say 'Hello world'||'!'.copies(i) end trace off x=traces(9) say 'x:'x xx=traced(9) say 'xx.prop:'xx.prop loop while i < 5 trace int i=i+1 say 'i='i say 'Hello world'||'!'.copies(i) end method traces(arg=Rexx) static trace int say 'method traced called' say 'traced:'arg return arg class traced properties public prop = 9 method traced(arg=Rexx) trace int say 'prop:'prop say 'class traced constructed' say 'traced:'arg $ nrc -exec trace NetRexx portable processor 4.04-alpha build 1,558-20220616-1912 Copyright (c) RexxLA, 2011,2022. All rights reserved. Parts Copyright (c) IBM Corporation, 1995,2008. Program trace.nrx === class trace === function main(String[]) function traces(Rexx) === class traced === constructor traced(Rexx) ===== Exec: trace ===== interactively tracing.. *-> --- trace.nrx 6 *=* i=0 >v> i "0" *-> say i 0 *-> i=3 *-> say i 3 *-> 7 *=* say 'i='i >>> "i=3" i=3 *-> 8 *=* do *-> 9 *=* say 'Hello world'||'!'.copies(i) >>> "3" >>> "Hello world!!!" Hello world!!! *-> 10 *=* end *-> 11 *=* trace off *-> 25 *=* say 'method traced called' >>> "method traced called" method traced called *-> -3 method traces(arg=Rexx) static trace int say "method traced called" *-> say arg 9 *-> arg=8 *-> 26 *=* say 'traced:'arg >>> "traced:8" traced:8 *-> 27 *=* return arg >>> "8" *-> x:8 *-> 35 *=* say 'prop:'prop >>> "prop:9" prop:9 *-> 36 *=* say 'class traced constructed' >>> "class traced constructed" class traced constructed *-> -3 trace int say "prop:"prop say "class traced constructed" *-> -5 prop=9 method traced(arg=Rexx) trace int say "prop:"prop say "class traced constructed" *-> say arg 9 *-> arg=8 *-> say arg 8 *-> 37 *=* say 'traced:'arg >>> "traced:8" traced:8 *-> xx.prop:9 *-> 18 *=* i=i+1 >v> i "4" *-> 19 *=* say 'i='i >>> "i=4" i=4 *-> trace off Hello world!!!! *-> 18 *=* i=i+1 >v> i "5" *-> 19 *=* say 'i='i >>> "i=5" i=5 *-> 20 *=* say 'Hello world'||'!'.copies(i) >>> "5" >>> "Hello world!!!!!" Hello world!!!!! *-> 16 *=* loop while i < 5 >>> "0" *-> 21 *=* end *-> Processing of 'trace.nrx' complete [2 classes] >> Please test; Marc On 6/7/22 13:42, Marc Remes wrote: > I've submitted branch interactive-trace, an *experimental* *experiment* to mimic Classic Rexx interactive trace capabilities. > > The new 'TRACE INT' instruction will intercept and pause execution during interpretation and present a '*->' prompt to the user. > Pressing [Enter] will interpret next clause > Typing '=' will reinterpret current clause > Typing '?' will show usage > Typing 'TRACE OFF' will stop interactive trace and will continue normally with next clause > Typing anything else is currently 'not supported'. > > TRACE INT is only active when interpreting NetRexx code, otherwise a warning 'TRACE INT ignored when compiling' is shown. > > An example: > << > $ cat trace.nrx > > class trace > > method main(args=String[]) static > say 'interactively tracing..' > trace int > i=0 > say 'i='i > do > say 'Hello world'||'!'.copies(i) > end > trace off > loop while i < 5 > trace int > i=i+1 > say 'i='i > say 'Hello world'||'!'.copies(i) > end >>> > > Sample run: > << > $ nrc -exec trace > NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 > Copyright (c) RexxLA, 2011,2022. All rights reserved. > Parts Copyright (c) IBM Corporation, 1995,2008. > Program trace.nrx > === class trace === > function main(String[]) > ===== Exec: trace ===== > interactively tracing.. > *-> > --- trace.nrx > 6 *=* i=0 > >v> i "0" > *-> > 7 *=* say 'i='i > >>> "i=0" > i=0 > *-> trace off > Hello world > *-> > 14 *=* i=i+1 > >v> i "1" > *-> trace off > i=1 > Hello world! > *-> > 14 *=* i=i+1 > >v> i "2" > *-> = > *=* i=i+1 > >v> i "3" > *-> > 15 *=* say 'i='i > >>> "i=3" > i=3 > *-> > 16 *=* say 'Hello world'||'!'.copies(i) > >>> "3" > >>> "Hello world!!!" > Hello world!!! > *-> > 12 *=* loop while i < 5 > >>> "1" > *-> trace off > *-> > 14 *=* i=i+1 > >v> i "4" > *-> trace off > i=4 > Hello world!!!! > *-> trace off > i=5 > Hello world!!!!! > Processing of 'trace.nrx' complete >>> > > Do not reinterprete a clause that changes 'level' depth: > << > $ nrc -exec trace > NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 > Copyright (c) RexxLA, 2011,2022. All rights reserved. > Parts Copyright (c) IBM Corporation, 1995,2008. > Program trace.nrx > === class trace === > function main(String[]) > ===== Exec: trace ===== > interactively tracing.. > *-> > --- trace.nrx > 6 *=* i=0 > >v> i "0" > *-> > 7 *=* say 'i='i > >>> "i=0" > i=0 > *-> > 8 *=* do > *-> > 9 *=* say 'Hello world'||'!'.copies(i) > >>> "0" > >>> "Hello world" > Hello world > *-> > 10 *=* end > *-> = > *=* end > *-> = > *=* end > Exception in thread "main" java.lang.NullPointerException: Cannot read field "prev" because "<parameter1>.curlevel" is null > at org.netrexx.process.RxInterpreter.poplevel(RxInterpreter.java:1590) > at org.netrexx.process.NrEnd.interpret(NrEnd.java:174) > at org.netrexx.process.RxInterpreter.runfree(RxInterpreter.java:1314) > at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:1180) > at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:835) > at org.netrexx.process.RxTranslator.exec(RxTranslator.java:791) > at org.netrexx.process.NetRexxC.process(NetRexxC.java:536) > at org.netrexx.process.NetRexxC.main2(NetRexxC.java:345) > at org.netrexx.process.NetRexxC.main2(NetRexxC.java:324) > at org.netrexx.process.NetRexxC.main2(NetRexxC.java:320) > at org.netrexx.process.NetRexxC.main(NetRexxC.java:174) >>> > As such, the code is to be considered experimental.. > > Pressing [Enter] without interfering with execution should not have other impact than 'pausing' execution. > > Obviously, 'not supported' should be replaced by interpreting the provided 'trace' clause in the context of the current program with access to the current varpool. > Unfortunately, this is not trivial, at least with my understanding of Mike's code. > > Marc > > > > > |
From: Marc R. <re...@gm...> - 2022-06-07 11:42:27
|
I've submitted branch interactive-trace, an *experimental* *experiment* to mimic Classic Rexx interactive trace capabilities. The new 'TRACE INT' instruction will intercept and pause execution during interpretation and present a '*->' prompt to the user. Pressing [Enter] will interpret next clause Typing '=' will reinterpret current clause Typing '?' will show usage Typing 'TRACE OFF' will stop interactive trace and will continue normally with next clause Typing anything else is currently 'not supported'. TRACE INT is only active when interpreting NetRexx code, otherwise a warning 'TRACE INT ignored when compiling' is shown. An example: << $ cat trace.nrx class trace method main(args=String[]) static say 'interactively tracing..' trace int i=0 say 'i='i do say 'Hello world'||'!'.copies(i) end trace off loop while i < 5 trace int i=i+1 say 'i='i say 'Hello world'||'!'.copies(i) end >> Sample run: << $ nrc -exec trace NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 Copyright (c) RexxLA, 2011,2022. All rights reserved. Parts Copyright (c) IBM Corporation, 1995,2008. Program trace.nrx === class trace === function main(String[]) ===== Exec: trace ===== interactively tracing.. *-> --- trace.nrx 6 *=* i=0 >v> i "0" *-> 7 *=* say 'i='i >>> "i=0" i=0 *-> trace off Hello world *-> 14 *=* i=i+1 >v> i "1" *-> trace off i=1 Hello world! *-> 14 *=* i=i+1 >v> i "2" *-> = *=* i=i+1 >v> i "3" *-> 15 *=* say 'i='i >>> "i=3" i=3 *-> 16 *=* say 'Hello world'||'!'.copies(i) >>> "3" >>> "Hello world!!!" Hello world!!! *-> 12 *=* loop while i < 5 >>> "1" *-> trace off *-> 14 *=* i=i+1 >v> i "4" *-> trace off i=4 Hello world!!!! *-> trace off i=5 Hello world!!!!! Processing of 'trace.nrx' complete >> Do not reinterprete a clause that changes 'level' depth: << $ nrc -exec trace NetRexx portable processor 4.04-alpha build 1,400-20220530-2046 Copyright (c) RexxLA, 2011,2022. All rights reserved. Parts Copyright (c) IBM Corporation, 1995,2008. Program trace.nrx === class trace === function main(String[]) ===== Exec: trace ===== interactively tracing.. *-> --- trace.nrx 6 *=* i=0 >v> i "0" *-> 7 *=* say 'i='i >>> "i=0" i=0 *-> 8 *=* do *-> 9 *=* say 'Hello world'||'!'.copies(i) >>> "0" >>> "Hello world" Hello world *-> 10 *=* end *-> = *=* end *-> = *=* end Exception in thread "main" java.lang.NullPointerException: Cannot read field "prev" because "<parameter1>.curlevel" is null at org.netrexx.process.RxInterpreter.poplevel(RxInterpreter.java:1590) at org.netrexx.process.NrEnd.interpret(NrEnd.java:174) at org.netrexx.process.RxInterpreter.runfree(RxInterpreter.java:1314) at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:1180) at org.netrexx.process.RxInterpreter.callMethod(RxInterpreter.java:835) at org.netrexx.process.RxTranslator.exec(RxTranslator.java:791) at org.netrexx.process.NetRexxC.process(NetRexxC.java:536) at org.netrexx.process.NetRexxC.main2(NetRexxC.java:345) at org.netrexx.process.NetRexxC.main2(NetRexxC.java:324) at org.netrexx.process.NetRexxC.main2(NetRexxC.java:320) at org.netrexx.process.NetRexxC.main(NetRexxC.java:174) >> As such, the code is to be considered experimental.. Pressing [Enter] without interfering with execution should not have other impact than 'pausing' execution. Obviously, 'not supported' should be replaced by interpreting the provided 'trace' clause in the context of the current program with access to the current varpool. Unfortunately, this is not trivial, at least with my understanding of Mike's code. Marc |
From: Jason M. <agr...@gm...> - 2022-04-30 17:28:32
|
Marc, can you drop the parentheses in CastExpr but leave the space In ./tools/java2nrx/src/japa/parser/ast/visitor/DumpVisitor.java Example: 867 public void visit(CastExpr n, Object arg) { 868 //printer.print("("); 869 n.getType().accept(this, arg); 870 //printer.print(") "); 871 printer.print(" "); 872 n.getExpr().accept(this, arg); 873 } Thank you, Jason |
From: Jason M. <agr...@gm...> - 2022-04-03 14:23:17
|
30.1.1 Android The security model of Android is based on least needed privilege and is imple- mented by assigning each application a different userid, so that applications on the same device (be it a phone or a tablet) cannot get to each others data. The consequence of this is that simple NetREXX programming and scripting Last sentence seems unfinished. Suggest something like: on the device itself is limited, however developing complete applications in NetRexx is not. |
From: Marc R. <re...@gm...> - 2022-04-01 16:49:52
|
> non oo bifs * With this one weird trick ... Rexx is back in 1984 I like |
From: Jason M. <agr...@gm...> - 2022-04-01 16:39:06
|
René, nice too! No worries, just fun and get it done. https://sourceforge.net/p/netrexx/code/ci/a6bf18083d5f9c2091484e1dacd11c854225463e/tree/src/netrexx/lang/RexxRexx.nrx?barediff=a1944898ff77ec62b84f46f5e8773a1410da34f4 |
From: Jason M. <agr...@gm...> - 2022-03-28 18:13:01
|
Really nice, Marc. 😁 https://sourceforge.net/p/netrexx/code/ci/b8b5d4cc0320c9f6b40508fbfdde6f0e58b21b53/tree/tools/java2nrx/src/japa/parser/ast/visitor/DumpVisitor.java?barediff=f18b3898f22264114a13e041a5a93fd64d8243d5 |
From: René J. <rvj...@xs...> - 2022-03-24 16:13:47
|
Works briliiantly: /* netrexx test automatic uses */ lineout('todaysnumber.txt',date('B’)) Leaves the day number in the intended file. Best regards, René. > On 24 Mar 2022, at 17:04, Marc Remes <re...@gm...> wrote: > > Check the latest commit. > > On 3/24/22 16:43, Marc Remes wrote: >> Hi René, >> as RexxDate extends RexxTime, shouldn't we set the default 'scripting mode uses' to RexxStream and RexxDate? >> Marc >> On 3/23/22 14:46, Marc Remes wrote: >>> Hi René, >>> >>> I think that should be possible. >>> Let me look at it. >>> >>> Marc >>> >>> On 3/23/22 12:12, René Jansen wrote: >>>> Hi Marc and developers, >>>> >>>> when using ‘uses’ (of which I did not see the use the first few decennia of NetRexx’ existence) there needs to be a ‘class’ defined. As we recently added a lot of Classic Rexx functionality (address, address with, Date, and now stream I/O in the upcoming NetRexx 4.03, it seems fitting that one can ‘uses’ these in scripting mode. Would that be an easy fix? (Auto-include a ‘uses RexxStream, RexxTime on the generated class?) Are there counterexamples? >>>> >>>> best regards, >>>> >>>> René. >>>> >>>> _______________________________________________ >>>> Netrexx-develop mailing list >>>> Net...@li... >>>> https://lists.sourceforge.net/lists/listinfo/netrexx-develop > _______________________________________________ > Netrexx-develop mailing list > Net...@li... > https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: Marc R. <re...@gm...> - 2022-03-24 16:05:07
|
Check the latest commit. On 3/24/22 16:43, Marc Remes wrote: > Hi René, > > as RexxDate extends RexxTime, shouldn't we set the default 'scripting mode uses' to RexxStream and RexxDate? > > Marc > > On 3/23/22 14:46, Marc Remes wrote: >> Hi René, >> >> I think that should be possible. >> Let me look at it. >> >> Marc >> >> On 3/23/22 12:12, René Jansen wrote: >>> Hi Marc and developers, >>> >>> when using ‘uses’ (of which I did not see the use the first few decennia of NetRexx’ existence) there needs to be a >>> ‘class’ defined. As we recently added a lot of Classic Rexx functionality (address, address with, Date, and now >>> stream I/O in the upcoming NetRexx 4.03, it seems fitting that one can ‘uses’ these in scripting mode. Would that be >>> an easy fix? (Auto-include a ‘uses RexxStream, RexxTime on the generated class?) Are there counterexamples? >>> >>> best regards, >>> >>> René. >>> >>> _______________________________________________ >>> Netrexx-develop mailing list >>> Net...@li... >>> https://lists.sourceforge.net/lists/listinfo/netrexx-develop |
From: Marc R. <re...@gm...> - 2022-03-24 15:43:50
|
Hi René, as RexxDate extends RexxTime, shouldn't we set the default 'scripting mode uses' to RexxStream and RexxDate? Marc On 3/23/22 14:46, Marc Remes wrote: > Hi René, > > I think that should be possible. > Let me look at it. > > Marc > > On 3/23/22 12:12, René Jansen wrote: >> Hi Marc and developers, >> >> when using ‘uses’ (of which I did not see the use the first few decennia of NetRexx’ existence) there needs to be a >> ‘class’ defined. As we recently added a lot of Classic Rexx functionality (address, address with, Date, and now stream >> I/O in the upcoming NetRexx 4.03, it seems fitting that one can ‘uses’ these in scripting mode. Would that be an easy >> fix? (Auto-include a ‘uses RexxStream, RexxTime on the generated class?) Are there counterexamples? >> >> best regards, >> >> René. >> >> _______________________________________________ >> Netrexx-develop mailing list >> Net...@li... >> https://lists.sourceforge.net/lists/listinfo/netrexx-develop |