tag:blogger.com,1999:blog-202847102008-09-03T17:51:43.588-07:00MEDITECH NPR Report WritingNPR Report Tips & Traps (No warranty is expressed or implied for this information.)
<br>olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comBlogger149125tag:blogger.com,1999:blog-20284710.post-59779481878974209562008-08-25T11:24:00.001-07:002008-08-25T11:45:20.307-07:00Reverse DO Loop Walk Thru (MEDITECH NPR)GET.DETAIL<br />; EDM.PAT.daily.log.x[ADM.PAT.facility,registration.date,registration.time,urn]<br />; ?(HE)HEAADL[gqb,heRDT,heRTM,aa]<br />""^ADM.PAT.facility^registration.date^registration.time^urn,<br />DO{@Next(urn,daily.log.x) @RECORD;<br /> @Next(registration.time,daily.log.x) ""^urn;<br /> @Next(registration.date,daily.log.x) ""^registration.time;<br /> @Next(ADM.PAT.facility,daily.log.x) b.registration.date^registration.date}<br /><br /><strong>Reverse DO Loop Walk Thru: </strong><br /><br />Line 1 <br />Code: DO{@Next(urn,daily.log.x) @RECORD; <br />Explained: Try to get the next urn from the EDM.PAT.daily.log.x index. This is the first time thru, the facility, registration.date & registration.time subscripts won’t be set up. So, nothing happens and we proceed thru down to Line 2.<br /><br />Line 2:<br />Code: @Next(registration.time,daily.log.x) ""^urn;<br />Explained: Try to get the next registration time. This is the first time thru, the other subscripts are NIL, so proceed to Line 3.<br /><br />Line 3:<br />Code: @Next(registration.date,daily.log.x) ""^registration.time;<br />Explained: Try to get the next registration date. This is the first time thru, the other subscripts are NIL, so proceed to Line 4.<br /><br />Line 4:<br />Code: @Next(ADM.PAT.facility,daily.log.x) b.registration.date^registration.date}<br />Explained: Get the next facility in the index. Set the starting registration.date. Go to Line 1.<br /><br />Line 1: <br />Explained: Try to get the next urn. We have 2 (ADM.PAT.facility,registration.date) of the 3 subscripts required to next on urn. Fall down to Line 2.<br /><br />Line 2:<br />Explained: Get the next registration.time. Set the urn subscript to NIL. <br /><br />Line 1: <br />Get the next urn. Go RECORD some data. <br /><br />At each level of @Next processing, processing starts over at the top and proceeds until there are no more records for the subscripts in play.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-26270636565080264722008-08-04T10:51:00.000-07:002008-08-04T12:52:05.685-07:00First Class Denizens of the Universe (Part 3 of 3)In <a href="http://www.meditechbulletin.com/newsletter/MCBApril2008.asp#tricks">Part 1</a> of this series, we wrote a report to keep an eye on our use of MEDITECH Server Resources. In <a href="http://www.meditechbulletin.com/newsletter/MCBMayJune2008.asp#tricks">Part 2</a>, we looked at a way to keep server resource usage to a minimum. In <a href="http://www.meditechbulletin.com/newsletter/MCBAugust2008.asp#tricks">Part 3</a>, we look at an important NPR change control problem and solution.<br /><br />One evening you’re dining on the town, you jump as your cell phone rings unexpectedly. It’s the Help Desk; seems your new NPR report in the ED is crashing. Your plans for the evening fade away like an ice cube on the sidewalk on a summer day. Hours later, you discover the problem with the report. It seems you forgot about a macro that is called when the patient is under 2 years old. This code never made it LIVE. How could this have been prevented?<br /><br />Read the rest of <a href="http://www.meditechbulletin.com/newsletter/MCBAugust2008.asp#Tricks">First Class Denizens of the Universe (Part 3 of 3)</a> in the August MEDITECH Bulletin.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-66099587274454961222008-08-02T17:16:00.000-07:002008-08-02T23:18:41.190-07:00MEDITECH NPR Change Process for Problem TicketsLike most people, you want to do things right the first time. But in the event something doesn't go as planned, you need a standardized Change Process in place so the change can be backed out. Let's examine a Change Process we can use in MEDITECH NPR to work a problem ticket to completion. <br /><br />1) Login to LIVE & <a href="http://comstock-software.com/blogs/npr/2008/02/npr-report-backup-convention-strategy.html">backup</a> the BAR.PAT.zcus.duplicate.charges.npr.report to BAR.PAT.zcus.duplicate.charges.npr.report.0.<br /><br />2) Test the report BAR.PAT.zcus.duplicate.charges.npr.report in LIVE. <br /><br />3) If the problem can be reproduced in LIVE, create another copy of the report named BAR.PAT.zcus.duplicate.charges.npr.report.dev in LIVE. <br /><br />4) Put trap code in the .DEV report and resolve the problem.<br /><br />5) Put the .DEV report on a testing menu in LIVE and have the reporting party test and approve the changes.<br /><br />6) Enter an Emergency Change Control request.<br /><br />7) Check TEST and make sure there isn't a .DEV report already there. If there is a .DEV report in TEST, <a href="http://comstock-software.com/blogs/npr/2008/02/npr-report-backup-convention-strategy.html">backup</a> as BAR.PAT.zcus.duplicate.charges.npr.report.dev.0. Someone might be making report modifications per another change request, we don't want to lose the work that might already be in progress.<br /><br />8) Move the .DEV version from LIVE to TEST. <br /><br />9) Remove the .DEV report from the testing menu in LIVE.<br /><br />10) Delete the .DEV report in LIVE.<br /><br />11) Delete BAR.PAT.zcus.duplicate.charges.npr.report in TEST.<br /><br />12) Rename the .DEV report in TEST to BAR.PAT.zcus.duplicate.charges.npr.report.<br /><br />13) Move BAR.PAT.zcus.duplicate.charges.npr.report LIVE.<br /><br />I'd like to hear from you via email at: jsharpe@comstock-software.com on how you would improve this process.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-43961105817916881792008-07-22T08:56:00.000-07:002008-07-30T08:51:41.200-07:00MEDITECH NPR Report Performance ImprovementNPR Report Performance Improvement Tips from a recent BAR Report: <br /><br />1. Review the data definitions from page 1 on the report.<br /><br />- BAR.PAT.discharge.x[bar.dis.ser,account]<br /> ?(B)BZDDX[bzds,bz]<br /><br />- BAR.PAT.top[account]<br /> $(B1)BZ[bz]<br /><br />2. Order the subscripts from the index in the SELECTs first.<br /><br />3. Remove report fragments that execute for every record.<br /><br />Last week a client challenged me to improve the performance of a BAR report. I was able to reduce the run time of the report by about 75% using the steps above. While this is not an exhaustive list of improvements tips, it will make a good article in the future. <br /><br />If you are looking for such a list, email me at: jsharpe@comstock-software.com; depending on interest, the list could come out sooner than later.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-46985725564686803722008-07-19T21:25:00.000-07:002008-07-30T08:52:48.549-07:00@Root in the MEDITECH NPR Report WriterYou've initialized a standard MEDITECH NPR report, at once you recognize the infamous @Root macro. What does it do? The @Root macro is used to refer to a segment's top level segment also known as the root. @Root(@edm.data.doc) translates to *(HE)HEAA[aa] which is the main segment. Examine these MEDITECH data definitions for the segments below.<br /><br />EDM.PAT.main[urn]<br />*(HE)HEAA[aa]<br /><br />EDM.PAT.edm.data.doc[urn,doc.q]<br />*(HE)HEAA[aa]D[heDOC]olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-8779686257036736472008-07-05T14:18:00.001-07:002008-07-30T08:53:35.739-07:00Using @ to Access Data Fields in MEDITECH NPRConsider the RAD.ORD.main segment. <br /><br />main[urn]<br />$(R)RO[ro]<br /><br />urn<br />arrive.time $(R)RO[ro]EX|11 <br /><br />RAD.ORD.urn is a subscript, you can access its value in your MEDITECH NPR report referring to it as @urn or urn. RAD.ORD.arrive.time does not translate to a local variable. This value requires a subscript to access the data. If you leave the @ symbol off of arrive.time you'll get this error: <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://comstock-software.com/blogs/npr/uploaded_images/CannotFindDataElement-708419.bmp"><img style="cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/CannotFindDataElement-708408.bmp" border="0" alt="" /></a><br /><br />To get MEDITECH NPR to translate to the correct object code, you want to reference this field as @arrive.time.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-1231963269319483022008-07-04T06:41:00.000-07:002008-07-30T08:54:27.204-07:00Runtime Selection Variables for your NPR Report?<a href="http://comstock-software.com/blogs/npr/uploaded_images/ReportSelections-767315.bmp"><img style="cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/ReportSelections-767305.bmp" border="0" alt="" /></a><br /><br />Find the runtime variables for your selections after the report is translated.<br /><br /><a href="http://comstock-software.com/blogs/npr/uploaded_images/NprSelectionVariables-730082.bmp"><img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/NprSelectionVariables-730066.bmp" border="0" alt="" /></a><br /><br />To define the custom fields for your report's picture in NPR:<br /><br />xx.date.selection.from<br />DAT=FREE<br />LEN=8<br />VAL=b.operation.date <br /><br />xx.date.selection.thru<br />DAT=FREE<br />LEN=8<br />VAL=e.operation.date<br /><br />Notice how the runtime variables b.operation.date & e.operation.date are translated as /b.operation.date & /e.operation.date by the NPR Report Writer.<br /><br />MEDITECH Client Server Reference: <a href="http://meditech.com/prrw/pages/RWcbASvariables.htm">http://meditech.com/prrw/pages/RWcbASvariables.htm</a><br /><br />MEDITECH Magic Reference: <a href="http://meditech.com/prrw/pages/RWmbASvariables.htm">http://meditech.com/prrw/pages/RWmbASvariables.htm</a>olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-18001996778951316992008-07-01T21:29:00.000-07:002008-07-30T08:58:29.617-07:00Finding What You're Looking For?Have you ever been at a loss for a data definition that you see in the NPR Report Writer, but couldn't find in the MEDITECH Data Definitions for your release of MEDITECH? <br /><br />Try looking at the Data Definitions that comes after the release you are currently on. If your hospital runs Client Server 5.55 SR2; try looking at the CS 5.6 SR data definitions.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-29621508206546024252008-07-01T08:18:00.000-07:002008-07-01T08:20:49.593-07:00GL Budget Period TotalsThis question came in this morning, but for some reason I can't get back to you because the email message bounces back. Here's your question and my answer: <br /><br />=== QUESTION === <br /><br />this is not a tech guy, far from it, yet i know that this should be simple.<br /><br />GL.Budget<br /><br />One file gives me the annual amounts found in my budget file and I can see how to get the annual numbers.<br />then next file will give me the period (12 monthly) amounts that total to the annual amount.<br /><br />So how do I return the 12 period amounts from the detail file?<br /><br />Thanks for any help.<br /><br />=== ANSWER ===<br /><br />If you are in CS you'll want to use the 'gl.period.budgets.file' as your segment; if you are MAGIC you'll use the 'periods' as your segment. To get the amount for period 1, you'll return budget.ytd. For the other periods, you'll take the budget.ytd and subtract the previous budget.ytd. <br /> <br />If you need help coding this, I can setup a time to WebEx with you. <br /> <br />Great question, thanks for asking,<br />Johnolesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-82099184294316668702008-06-14T23:55:00.000-07:002008-06-15T00:39:04.447-07:00Turn Off Buffering in NPR Reports (Client Server)<a href="http://comstock-software.com/blogs/npr/uploaded_images/BufFootNote-769583.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/BufFootNote-769576.png" border="0" alt="" /></a><br /><br /><br/><br /><br/><br /><br />"To turn off buffering, enter BUF=NONE in the report’s footnote section. If a report has a VAL statement that attempts to replace elements with buffered results increasing a line’s length longer than 255 characters, a translation error message appears." - Meditech Client Server NPR Manualolesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-16639247003876359492008-06-12T10:40:00.000-07:002008-06-12T10:55:22.381-07:00ABS.PAT Dxsabs.pat.dxs[urn, dx.seq.no]<br />:DZ[dz]D["DX",dzDXN]<br /><br />Field Name Offset/Local/VAL <br />dx.seq.no dzDXN <br />dx :DZ[dz]D["DX",dzDXN]|0 <br /><br />To hard code and print 10 dxs side by side from the ABS.PAT.main segment define your VAL statements in your fields as follows.<br /> <br />NPR DX Field 1: <br />VAL=IF{""^dx.seq.no,@Next(dx.seq.no) @dx;""}<br /><br />NPR DX Fields 2 - 10:<br />VAL=IF{@dx.seq.no @Next(dx.seq.no),@dx;""}olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-85239557448217392052008-06-07T00:25:00.000-07:002008-06-07T01:02:42.714-07:00Details WorktoolsGet Organized: <a href="http://www.details-worktools.com">http://www.details-worktools.com</a>olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-22886632211222850442008-06-05T16:33:00.000-07:002008-06-05T16:40:15.133-07:00One Way to Simplify IF StatmentsAssume Q has a value of 1 or 2.<br /><br />This: IF{(0<Q<3) 1;0} is simpler than this: IF{(Q=1)!(Q=2) 1;0}.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-67039932794619714862008-06-05T09:44:00.000-07:002008-07-30T08:55:01.803-07:00MEDITECH Magic Reports with StyleI just joined the forum at <a href="http://rwpgx.org">http://rwpgx.org</a>. Looks like a great place to meet like minded developers. More later...olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-2535397300339109202008-06-04T23:57:00.000-07:002008-06-05T00:17:57.767-07:00Sorting Strings By DelimiterI love a great text editor. My favorite is <a href="http://textpad.com">Textpad</a>. There are times when I'm working on a computer where installing Textpad is not an option. That's where this tool comes in. Ever need to sort a string by delimiter or change delimiters? Maybe and its a BIG maybe, you'll keep this free tool in mind if you do. Here it is in action.<br /><br /><a href="http://comstock-software.com/blogs/npr/uploaded_images/SortStringByDelimiter-751901.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/SortStringByDelimiter-751899.png" border="0" alt="" /></a><br /><br /><br/><br /><br/><br /><br /><a href="http://comstock-software.com/blogs/npr/uploaded_images/SortStringByDelimiter-Sorted-772648.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/SortStringByDelimiter-Sorted-772646.png" border="0" alt="" /></a><br /><br /><br/><br /><br/><br /><br />Try it here: <a href="http://comstock-software.com/SortDelimitedList.aspx">http://comstock-software.com/SortDelimitedList.aspx</a><br /><br />Please leave suggestions as comments to this post.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-14327305382940487062008-06-04T22:04:00.000-07:002008-06-05T00:20:04.879-07:00Populating the RL Select with KEYWORDs<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://comstock-software.com/blogs/npr/uploaded_images/RlSelectKeywords-761803.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/RlSelectKeywords-761799.png" border="0" alt="" /></a><br /><br /><br/><br /><br />"END"^c.patient.gl.account["BEGINNING"]olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-50442320172092758622008-06-04T08:52:00.000-07:002008-06-04T09:05:59.901-07:00Code From the Footnotes<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://comstock-software.com/blogs/npr/uploaded_images/FragmentFromFootnotes-723658.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/FragmentFromFootnotes-723656.png" border="0" alt="" /></a><br /><br /><br/><br />Do you have occasions where you'd like CS code to run right out of the gate in your NPR report? Try adding a footnote with only code (no AL keyword). <br /><br />This footnote: %Z.rw.fragment("","MRI.PAT") translated to the second line of object code in the report as: %(Z)rw.fragment("","MRI.PAT").olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-24676452199572661122008-06-03T00:28:00.001-07:002008-06-03T00:31:12.703-07:00NPR Field Attribute - SIZEVNPR Field Attribute SIZEV for vertical:<br /><br />DAT=FREE<br />FONT=n<br />JFY=L<br />LEN=1<br />SIZE=3.0<br />SIZEV=3.0<br />VAL="+"olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-22776744739714518152008-05-27T23:21:00.000-07:002008-05-28T08:13:04.615-07:00Requiring an NPR Select in a Custom FieldI've got an NPR report in Client Server with a custom defined field as a SELECT. The field is used to capture a value which determines the format, content & layout of the report. The field is set up on page 2 as:<br /><br />xx.type IG Enter Report Type of T (TX) or D (DC)<br /><br />The clinicians want the SELECT to be required. Here's one way to handle this: <br /><br />- AL START IF{(c.xx.type@tr.12u'="T"'="D") @W.display("Select T or D as Report Type"),H(5);<br />- AL CLOSE.UP 1}<br /><br />When the report type SELECTION is T or D, the report runs and returns results.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-57981194648058783192008-05-27T21:17:00.000-07:002008-05-27T21:25:02.967-07:00ADM.PAT CCDQR FileADM.PAT.ccdqr[ccdqr.patient,ccdqr.query]<br />*(A1)AA.CCDQR[aa,ggv]<br /><br />MAGIC NUR custom queries will not file a blank over a filed query unless there is a custom attribute to clear the previous value. <br /><br />In CS 5.5 the OE Custom Queries on the 'Enter / Edit Patient Data' screen will in fact file a blank value over a previous value.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-73592252995961189712008-05-14T07:29:00.000-07:002008-07-30T10:11:22.241-07:00First Class Denizens of the Universe (Part 2 of 3)As a MEDITECH Client Server Analyst who is aspiring to greater responsibilities, no doubt you’ll find yourself writing NPR reports. This article is the second in a series of three (see the <a href="http://www.meditechbulletin.com/newsletter/MCBApril2008.asp#tricks">April 2008 issue</a> for Part 1) where we examine strategies to keep you in the limelight for all the right reasons.<br /><br />In Part 1 of this series, we wrote a report to keep an eye on our use of MEDITECH Server Resources. In Part 2, we look at another way to keep server resource usage to a minimum.<br /><br />Recently, I was challenged to improve the performance of a report in the NUR.PC.WORK DPM. This was challenging because the NUR module didn’t have the index I needed. It was also challenging because the report was already using an index. ...<br /><br /><br />Read the rest of <a href="http://www.meditechbulletin.com/newsletter/MCBMayJune2008.asp#tricks">First Class Denizens of the Universe (Part 2 of 3)</a> in the May/June MEDITECH Bulletin.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-11790915770904656452008-04-28T10:19:00.000-07:002008-05-14T08:49:47.878-07:00Pre-Loading NPR SelectsYou have an NPR report, you'd like to autopopulate the following SELECT on.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://comstock-software.com/blogs/npr/uploaded_images/BarStatus-718448.jpg"><br /><img style="margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/BarStatus-718438.jpg" border="0" alt="" /></a><br /><br />Create a macro <preload> and call it from the NPR Title: "_%(BAR)PAT..zcus.report.name.M..preload("")_"<br /><br />Define the following in a macro named preload:<br /><br />1^c.bar.status["FB"],<br />1^c.bar.status["IB"],<br />1^c.bar.status["UB"],<br />"Billing Report";<br /><br />Run the report and you'll see that the SELECT for bar.status is populated with the items from the macro.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://comstock-software.com/blogs/npr/uploaded_images/BarStatusExecuting-751516.jpg"><br /><img style="margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;" src="http://comstock-software.com/blogs/npr/uploaded_images/BarStatusExecuting-751401.jpg" border="0" alt="" /></a>olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-40919301613574777402008-04-01T18:58:00.000-07:002008-07-30T10:11:38.457-07:00First Class Denizens of the Universe (Part 1 of 3)"As a MEDITECH Client Server Analyst who is aspiring to greater responsibilities, no doubt you’ll find yourself writing NPR reports. This article is the first in a series of three where we examine strategies to keep you in the lime light for all the right reasons." <br /><br />Read the rest of <a href="http://www.meditechbulletin.com/newsletter/MCBApril2008.asp#tricks">First Class Denizens of the Universe (Part 1 of 3)</a> in the April MEDITECH Bulletin.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-22436605994356065132008-03-25T09:25:00.000-07:002008-07-05T14:45:32.957-07:00IS.NOT.NUMBERThis elegant solution was posted by an astute, anonymous reader:<br /><br />/TXT?0N<br /><br /><br />My original solution: <br /><br />--IS.NOT.NUMBER<br />--; Input(s): /TXT<br />--; Output(s): /SKIP as nil<br />--; If /TXT is not a number return /SKIP as 1.<br />--0^Q,""^/SKIP,<br />--DO{(/TXT#Q^/CHR)&(/SKIP_.=.) E(/CHR)^/ASCII,<br />--IF{/ASCII<46 @SKIP;<br />--/ASCII>57 @SKIP;<br />--/ASCII=47 @SKIP},<br />--Q+1^Q},/SKIP<br />--<br />--SKIP<br />--1^/SKIPolesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.comtag:blogger.com,1999:blog-20284710.post-49898565069036878542008-03-20T10:09:00.000-07:002008-03-20T10:13:05.433-07:00Binary ProgrammingShayne Nelson on <a href="http://blogs.ittoolbox.com/dw/architect/archives/binary-programming-is-born-21944">Binary Programming</a>.olesharpiehttp://www.blogger.com/profile/03964176610733609690olesharpie@gmail.com