© 2 0 0 9 b y h a r v e y e. h a h n exported data, gee!... no, j! arlington heights memorial...
TRANSCRIPT
![Page 1: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/1.jpg)
© 2 0 0 9 b y H a r v e y E . H a h n
Exported Data, Gee!...No, J!
Exported Data, Gee!...No, J!
Arlington Heights Memorial Library
Arlington Heights, Illinois
![Page 2: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/2.jpg)
PresenterPresenter
Harvey E. Hahn
Former Manager,
Technical Services,
Arlington Heights
Memorial LibraryArlington Heights, Illinois
![Page 3: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/3.jpg)
PurposePurpose
• To introduce the J programming language as a powerful alternative and addition to Excel for handling exported Millennium data
![Page 4: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/4.jpg)
What is “J”?What is “J”?
• An improved sibling of APL
• Invented in 1989 by Ken Iverson, who also invented APL in early 1960’s
• Availability (free): http://www.jsoftware.com
![Page 5: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/5.jpg)
What is “J”?What is “J”?
• Like APL, J operates on an entire array as a single entity rather than thinking of the array as a collection of separate elements
• J views nearly everything as an array
![Page 6: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/6.jpg)
What is “J”?What is “J”?
• Terms for arrays of increasing rank:• atom – a single element (rank 0)• list – one or more atoms (rank 1)• table – one or more lists (rank 2)• report – one or more tables (rank 3+)
![Page 7: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/7.jpg)
An analogyAn analogy
• atom
• list
• table
• report
![Page 8: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/8.jpg)
What is “J”?What is “J”?
• Expanding upon the arithmetic symbols (+, -, etc.), J uses nearly all symbols (and some letters) on an ASCII keyboard to represent operations on arrays
• Each symbol also has 2 inflected forms, appending either a period or a colon
![Page 9: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/9.jpg)
What is “J”?What is “J”?
• There are only two basic command formats—everything else is a variation on these:
• verb noun (monadic - 1 arg)
• noun verb noun (dyadic - 2 args)
![Page 10: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/10.jpg)
What is “J”?What is “J”?
• A verb (function) acts upon a noun (data) to produce another noun (data)
• In other words, the result of each of the two basic commands is a noun
![Page 11: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/11.jpg)
What is “J”?What is “J”?
• The key difference in these noun arguments from other programming languages is that not only can they be single numeric or literal values but they can also be lists or entire arrays!
• This is the main “secret” of J’s power
![Page 12: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/12.jpg)
What is “J”?What is “J”?
• A second “secret” of J’s power is that the explicit array looping needed in other languages is built into J’s commands
• This considerably simplifies the writing of scripts and helps mentally focus on the “big picture”
![Page 13: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/13.jpg)
What is “J”?What is “J”?
• Because J is so terse, often a whole program (or portions) can be written sideways rather than vertically!
• Here is an example of a whole program within a single line of code (frequencies of subject headings in a catalog):
sh7=.|:((|:~.(/:{)sh),(<&>#;.1~:(/:{)sh))
![Page 14: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/14.jpg)
What is “J”?What is “J”?
![Page 15: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/15.jpg)
What is “J”?What is “J”?
• Downsides:• Looks like “Martian”• Rather “geeky”• Huge amount of documentation, but very
difficult to find specific information• Steep learning curve may intimidate
beginners• Major paradigm shift in thinking
![Page 16: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/16.jpg)
What is “J”?What is “J”?
• Downsides:• Looks like “Martian”• Rather “geeky”• Huge amount of documentation, but very
difficult to find specific information• Steep learning curve may intimidate
beginners• Major paradigm shift in thinking
![Page 17: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/17.jpg)
What is “J”?What is “J”?
• Downsides:• Looks like “Martian”• Rather “geeky”• Huge amount of documentation, but very
difficult to find specific information• Steep learning curve may intimidate
beginners• Major paradigm shift in thinking
![Page 18: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/18.jpg)
What is “J”?What is “J”?
• Downsides:• Looks like “Martian”• Rather “geeky”• Huge amount of documentation, but very
difficult to find specific information• Steep learning curve may intimidate
beginners• Major paradigm shift in thinking
![Page 19: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/19.jpg)
What is “J”?What is “J”?
• Downsides:• Looks like “Martian”• Rather “geeky”• Huge amount of documentation, but very
difficult to find specific information• Steep learning curve may intimidate
beginners• Major paradigm shift in thinking
![Page 20: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/20.jpg)
What is “J”?What is “J”?
• Downsides:• Looks like “Martian”• Rather “geeky”• Huge amount of documentation, but very
difficult to find specific information• Steep learning curve may intimidate
beginners• Major paradigm shift in thinking
![Page 21: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/21.jpg)
What is “J”?What is “J”?
• Upsides:• Can do a lot with very little code• Availability of a very complete suite of
“assisting” applications, most written in J (plotting, forms and controls, spreadsheet, database, regular expressions, etc.)
• Size of arrays is limited only by amount of memory and disk space available
• So-called “boxed” arrays can contain mixed numeric and literal data
![Page 22: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/22.jpg)
What is “J”?What is “J”?
• Upsides:• Can do a lot with very little code• Availability of a very complete suite of
“assisting” applications, most written in J (plotting, forms and controls, spreadsheet, database, regular expressions, etc.)
• Size of arrays is limited only by amount of memory and disk space available
• So-called “boxed” arrays can contain mixed numeric and literal data
![Page 23: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/23.jpg)
What is “J”?What is “J”?
• Upsides:• Can do a lot with very little code• Availability of a very complete suite of
“assisting” applications, most written in J (plotting, forms and controls, spreadsheet, database, regular expressions, etc.)
• Size of arrays is limited only by amount of memory and disk space available
• So-called “boxed” arrays can contain mixed numeric and literal data
![Page 24: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/24.jpg)
What is “J”?What is “J”?
• Upsides:• Can do a lot with very little code• Availability of a very complete suite of
“assisting” applications, most written in J (plotting, forms and controls, spreadsheet, database, regular expressions, etc.)
• Size of arrays is limited only by amount of memory and disk space available
• So-called “boxed” arrays can contain mixed numeric and literal data
![Page 25: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/25.jpg)
What is “J”?What is “J”?
• Upsides:• Can do a lot with very little code• Availability of a very complete suite of
“assisting” applications, most written in J (plotting, forms and controls, spreadsheet, database, regular expressions, etc.)
• Size of arrays is limited only by amount of memory and disk space available
• So-called “boxed” arrays can contain mixed numeric and literal data
![Page 26: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/26.jpg)
Examples of J primitivesExamples of J primitives
i. n create list of integers from 0 to n-1
|. reverse order of items in array
|: transpose (flip) rows/cols in table
/:~ sort items in list in ascending order
~. dedupe items in list
, append two sets of items
=: global assignment ( =. is local )
![Page 27: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/27.jpg)
Examples of JExamples of J
• You can give your own names to verbs:
] revfile1=: 1 + i.10
1 2 3 4 5 6 7 8 9 10
] revfile2=: 2 3 5 8
2 3 5 8
remove=: -. NB. usually known as "not"
] result=: revfile1 remove revfile2 1 4 6 7 9 10
![Page 28: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/28.jpg)
More examples of JMore examples of J
• You can create your own verbs: shfreq=: 3 : 0 NB. "x" is LH arg, "y" is RH arg of verb:
sh2=. (/:{) y NB. sorted list sh3=. # ;.1 ~: sh2 NB. freq's sh4=. |: ~. sh2 NB. unique SH's sh5=. < every sh3 NB. counts sh6=. |: (sh4,sh5) NB. combine SH's & counts )
• Use new verb like any other J verb: freqlist=: shfreq sh NB. sh = file of SH's
![Page 29: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/29.jpg)
PROBLEM:PROBLEM:
• III statistical reports use “zero suppression”—that is, if the data in a given line (or row) contains a value of zero, the line (or row) is omitted!
• This creates serious problems when assembling data from multiple periods
![Page 30: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/30.jpg)
SOLUTION:SOLUTION:
• J !
![Page 31: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/31.jpg)
Detailed example 1Detailed example 1
• Using filled holds on the basis of the (first) SCAT table, append monthly data to a master file
![Page 32: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/32.jpg)
Export vs. download from WMRExport vs. download from WMR
• “Export” immediately opens and transfers data to Microsoft Excel
• “Download” permits preprocessing (or even total processing) with the full power of the J language
![Page 33: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/33.jpg)
Download data from WMRDownload data from WMR
• Click “Download” button above report
• Downloaded data is ALWAYS saved to a file named “download_1x1”
![Page 34: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/34.jpg)
Rename the fileRename the file
• Immediately rename this file to an appropriate filename based on a preplanned naming scheme
• Because III always uses a pipe delimiter in WMR downloaded data, be sure to use .psv (pipe separated values) as the file extension (analogous to .csv extension)
![Page 35: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/35.jpg)
File extensions for III dataFile extensions for III data
• III exports 3 kinds of delimited data:• csv – comma separated values• tsv – tab separated values• psv – pipe separated values
![Page 36: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/36.jpg)
File extensions for III dataFile extensions for III data
• The “hhfiles.ijs” function library accommodates all 3 file types—this file should be loaded before using J with III data files:
load '~user\hhfiles.ijs'
![Page 37: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/37.jpg)
Monthly filled holds dataMonthly filled holds data
![Page 38: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/38.jpg)
PSV – pipe separated valuesPSV – pipe separated values
![Page 39: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/39.jpg)
CSV – comma separated valuesCSV – comma separated values
![Page 40: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/40.jpg)
Read PSV file into new tableRead PSV file into new table
• Read disk file into internal array “a1”:
a1=. readpsv 'C:\FilledHolds0801.psv'
• Note: readpsv is found only in the “hhfiles.ijs” file and is not part of the standard J system
![Page 41: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/41.jpg)
J table (array) of read dataJ table (array) of read data
![Page 42: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/42.jpg)
Identify header values to saveIdentify header values to save
0 1 2 30
12
3
45
6
![Page 43: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/43.jpg)
Temporarily save some headersTemporarily save some headers
• Save the headers for the key column and the values column:
keyhdr=. (< 3 0) { a1
datehdr=. (< 2 1) { a1
![Page 44: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/44.jpg)
Save headersSave headers
![Page 45: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/45.jpg)
Make table have data only (#1)Make table have data only (#1)
• Drop first 4 header rows, which don’t contain any data:
a2=. 4 }. a1
![Page 46: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/46.jpg)
Remove first 4 rows of non-dataRemove first 4 rows of non-data
![Page 47: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/47.jpg)
Filled holds (header-less)Filled holds (header-less)
![Page 48: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/48.jpg)
Work with selected columnsWork with selected columns
• We want to work only with the “key” (location) column and the “values” column—in J’s zero-origin parlance, these are columns 0 and 2
a3=. (0 2) {"1 a2
• Note: The rank conjunction "1 is necessary to indicate columns, or else J will deal with rows, which is the norm
![Page 49: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/49.jpg)
Select columnsSelect columns
![Page 50: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/50.jpg)
Reduce to 2 columns onlyReduce to 2 columns only
![Page 51: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/51.jpg)
Temporarily save footerTemporarily save footer
• Save the entire footer row for the key column and the values column, and then replace the key column footer with its uppercase version:
totrow=. {: a3
totrow=. (<'TOTAL') 0 } totrow
![Page 52: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/52.jpg)
Save and revise footerSave and revise footer
![Page 53: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/53.jpg)
Make table have data only (#2)Make table have data only (#2)
• Drop last (footer) row, which doesn’t contain any actual table data:
a4=. }: a3
![Page 54: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/54.jpg)
Filled holds (footer-less)Filled holds (footer-less)
![Page 55: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/55.jpg)
Retrieve and combine headersRetrieve and combine headers
• Create new header row by appending date to title (i.e., value to key):
hdrrow=: keyhdr , datehdr
![Page 56: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/56.jpg)
Retrieve and combine headersRetrieve and combine headers
![Page 57: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/57.jpg)
Create “standard” tableCreate “standard” table
• Append header row, data rows, and footer row to create new table of data:
a7=. hdrrow , a4 , totrow
• Note: In other words, create table a7 out of these elements:
new column header row
data rows (table a4)
revised (total) footer row
![Page 58: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/58.jpg)
Top of new “standard” tableTop of new “standard” table
![Page 59: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/59.jpg)
Bottom of new “standard” tableBottom of new “standard” table
![Page 60: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/60.jpg)
Save new table as CSV fileSave new table as CSV file
• Save the table to disk, using the appropriate verb and a “csv” file extension:
a7 writecsv 'C:\FilledHolds0801.csv'
![Page 61: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/61.jpg)
Standardizing the “master” fileStandardizing the “master” file
• If it hasn’t already been done at an earlier time, the “master” file of table data needs to go through the same “standardization” process
![Page 62: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/62.jpg)
Master = Filled holds Jan-Dec07Master = Filled holds Jan-Dec07
![Page 63: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/63.jpg)
Load “master” fileLoad “master” file
• After loading (and perhaps after standardizing), the “master” file looks like any other “standard” table
![Page 64: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/64.jpg)
FH-masterFH-master
![Page 65: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/65.jpg)
Now for the “magic”…Now for the “magic”…
• The “hhutils.ijs” function library contains pre-written specialized verbs that perform the “magic” for you—this file should be loaded before using J with III data files:
load '~user\hhutils.ijs'
![Page 66: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/66.jpg)
Now for the “magic”…Now for the “magic”…
mf=: 'C:\FH-master.csv'
af=: 'C:\FilledHolds0801.csv'
mf sortupdatewith af
Note: sortupdatewith is contained in the “hhutils.ijs” file
![Page 67: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/67.jpg)
Updated “master” fileUpdated “master” file
![Page 68: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/68.jpg)
Zeros are filled in!Zeros are filled in!
![Page 69: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/69.jpg)
Repeat same process monthlyRepeat same process monthly
• The Feb08 data goes through the same data manipulations as did Jan08:
![Page 70: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/70.jpg)
Feb08 filled holds dataFeb08 filled holds data
![Page 71: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/71.jpg)
J table (array) of read dataJ table (array) of read data
![Page 72: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/72.jpg)
Updated “master” fileUpdated “master” file
![Page 73: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/73.jpg)
Save work and effort…Save work and effort…
• You don’t actually have to type in all of those J commands each time
• Instead, combine them into a script…
![Page 74: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/74.jpg)
…put it all in a script……put it all in a script…
fh=: 3 : 0 fhfile=. y a1=. readpsv fhfile keyhdr=. (< 3 0) { a1 datehdr=. (< 2 1) { a1 a2=. 4 }. a1 a3=. (0 2) {"1 a2 totrow=. {: a3 totrow=. (<'TOTAL') 0 } totrow a4=. }: a3 hdrrow=: keyhdr , datehdr a7=. hdrrow , a4 , totrow fhfile=. (_3 }. fhfile) , 'csv' a7 writecsv fhfile )
![Page 75: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/75.jpg)
…and run the script (easy!)…and run the script (easy!)
fh 'C:\FilledHolds0905.psv'
'C:\FH-master.csv' sortupdatewith
'C:\FilledHolds0905.csv' [all one line]
• And those two lines are all you have to do each month!
• Well, almost… You have to do a little setup in J first (such as loading scripts)
![Page 76: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/76.jpg)
Detailed example 2Detailed example 2
• Using a “filled holds by location” report, compress monthly data, and append it to a master file
![Page 77: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/77.jpg)
Jan08 filled holds by locationJan08 filled holds by location
![Page 78: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/78.jpg)
Data manipulationData manipulation
• Manipulate the table data the same way as in Example 1
![Page 79: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/79.jpg)
J table (array) of read dataJ table (array) of read data
![Page 80: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/80.jpg)
Identify header values to saveIdentify header values to save
![Page 81: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/81.jpg)
Remove first 4 rows of non-dataRemove first 4 rows of non-data
![Page 82: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/82.jpg)
Filled holds by loc (header-less)Filled holds by loc (header-less)
![Page 83: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/83.jpg)
Reduce to 2 columns onlyReduce to 2 columns only
![Page 84: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/84.jpg)
FHBL vs. FHFHBL vs. FH
• Because FHBL (Filled Holds By Location) data differs from FH (Filled Holds) data, it must be handled differently
• FHBL data categories can occur multiple times throughout a table downloaded from III
![Page 85: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/85.jpg)
Two months comparedTwo months compared
![Page 86: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/86.jpg)
The key: data compressionThe key: data compression
• What needs to happen:• Sort the data to gather categories together• Compress (dedupe) the categories• Sum the values in each compressed
category
![Page 87: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/87.jpg)
Now for the “magic”…Now for the “magic”…
• The “hhutils.ijs” function library contains pre-written specialized verbs that perform the “magic” for you—this file should be loaded before using J with III data files:
load '~user\hhutils.ijs'
![Page 88: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/88.jpg)
Now for the “magic”… (#1)Now for the “magic”… (#1)
• Sort the unordered data, and then compress duplicate keys into a single key:
a5=. /:~ a4
a6=. dedupesum a5
Note: dedupesum is contained in the “hhutils.ijs” file
![Page 89: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/89.jpg)
Compressed Jan08 FHBL tableCompressed Jan08 FHBL table
![Page 90: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/90.jpg)
Create “master” fileCreate “master” file
• Because no “master” file exists yet, use the Windows “copy” function to make a renamed copy of the Jan08 file:
C:\FilledHoldsByLoc0801.csv C:\FHBL-master.csv
![Page 91: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/91.jpg)
Repeat same process monthlyRepeat same process monthly
• The Feb08 data goes through the same data manipulations as did Jan08:
![Page 92: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/92.jpg)
Feb08 filled holds by locationFeb08 filled holds by location
![Page 93: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/93.jpg)
Compressed Feb08 FHBL tableCompressed Feb08 FHBL table
![Page 94: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/94.jpg)
Now for the “magic”… (#2)Now for the “magic”… (#2)
mf=: 'C:\FHBL-master.csv'
af=: 'C:\FilledHoldsByLoc0802.csv'
mf sortupdatewith af
Note: sortupdatewith is contained in the “hhutils.ijs” file
![Page 95: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/95.jpg)
Updated “master” fileUpdated “master” file
![Page 96: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/96.jpg)
Zeros are filled in! (#1)Zeros are filled in! (#1)
![Page 97: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/97.jpg)
Zeros are filled in! (#2)Zeros are filled in! (#2)
![Page 98: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/98.jpg)
Create a J scriptCreate a J script
• As in Example 1, you can combine the separate J commands into a script for easier use
![Page 99: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/99.jpg)
…and run it…and run it
fhbl 'C:\FilledHoldsByLoc0905.psv'
'C:\FHBL-master.csv' sortupdatewith
'C:\FilledHoldsByLoc0905.csv' [all one line]
![Page 100: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/100.jpg)
Appetite whetted for J?Appetite whetted for J?
• J has enough array and mathematical power to keep you learning for a lifetime
• J can be used independently of Excel
• J can be used in conjunction with Excel (there are also direct interfaces with Excel)
• I hope that I’ve interested you enough in J so that you can…
![Page 101: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/101.jpg)
Appetite whetted for J?Appetite whetted for J?
• J has enough array and mathematical power to keep you learning for a lifetime
• J can be used independently of Excel
• J can be used in conjunction with Excel (there are also direct interfaces with Excel)
• I hope that I’ve interested you enough in J so that you can…
![Page 102: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/102.jpg)
Appetite whetted for J?Appetite whetted for J?
• J has enough array and mathematical power to keep you learning for a lifetime
• J can be used independently of Excel
• J can be used in conjunction with Excel (there are also direct interfaces with Excel)
• I hope that I’ve interested you enough in J so that you can…
![Page 103: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/103.jpg)
Appetite whetted for J?Appetite whetted for J?
• J has enough array and mathematical power to keep you learning for a lifetime
• J can be used independently of Excel
• J can be used in conjunction with Excel (there are also direct interfaces with Excel)
• I hope that I’ve interested you enough in J so that you can…
![Page 104: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/104.jpg)
Appetite whetted for J?Appetite whetted for J?
• J has enough array and mathematical power to keep you learning for a lifetime
• J can be used independently of Excel
• J can be used in conjunction with Excel (there are also direct interfaces with Excel)
• I hope that I’ve interested you enough in J so that you can…
![Page 105: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/105.jpg)
J J
Take up the torch and run with it!
![Page 106: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/106.jpg)
![Page 107: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/107.jpg)
More informationMore information
• ---- AHML web site ---- (as long as it’s available)
http://www.ahml.info/oml
• Link: Scripts Using J (including my “Beginning J”)
![Page 108: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/108.jpg)
More informationMore information
• ------ IUG presentation ------
• SSSSShh (May 2009) (second portion): http://www.innopacusers.org/iug-conferences
![Page 109: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/109.jpg)
More informationMore information
• ------ J forums / groups ------
http://www.jsoftware.com/forums.htm
http://groups.google.com/group/J-Programming
![Page 111: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/111.jpg)
Thanks for attending!Thanks for attending!
![Page 112: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/112.jpg)
Q & AQ & A
![Page 113: © 2 0 0 9 b y H a r v e y E. H a h n Exported Data, Gee!... No, J! Arlington Heights Memorial Library Arlington Heights, Illinois](https://reader036.vdocuments.mx/reader036/viewer/2022081518/551b5e15550346a6148b459c/html5/thumbnails/113.jpg)