The JOD Page

JOD LogoJOD is a J language programming tool. Version: 0.9.93 released November 22, 2013

This page maintains references to primary JOD materials. See the directory: JOD Dictionary

JOD can be installed and updated with the J package manager. JOD can also be installed by downloading jod.zip, (also available in the files side bar in the JOD Dictionary directory), and unzipping, preserving directories , to the J relative path: ~addons/general/jod (J relative paths are expanded by the jpath verb.)

JOD Online Help - points to JOD’s online documentation. These are the same pages referenced by JOD’S jodhelp  verb.

JOD PDF Help - current JOD system documentation in one PDF document:  jod.pdf - also available in the files side bar.

Hard Copy JOD documentation - you can order JOD documentation in spiral book bound form.  The book is printed on demand at www.lulu.com.  The pricing is at cost.

JOD Slide Show - a short Google presentation about JOD.

JOD Dictionary Dump Scripts – This GitHub repository holds working dictionary dump scripts. Dump scripts are used to create, update and archive JOD dictionaries.

JOD Source Code is available as:

  1. JOD dictionary database dumps – install the jodsource addon with the J package manager or download jodsource.zip and unzip into:
    ~addons/general/jodsource
  2. A GitHub jod repository. Pull into an empty local repository with:
    git remote add jod https://github.com/bakerjd99/jod.git
    git pull jod master
  3. An old Subversion jod repository. This repository is no longer updated use the GitHub version.  Checkout with:
    svn checkout http://joddictionary.googlecode.com/svn/trunk/ joddictionary-read-only
  4. Standard J *.ijs script files jodijs.zip
  5. A Semi Literate fully indexed jodcode.pdf document.

Many Examples of JOD Generated Scripts - see the GitHub jacks repository.

21 thoughts on “The JOD Page

  1. Pingback: JOD comes to Linux « Analyze the Data not the Drivel.

  2. I’ve read the article, I’ve viewed the slides, and read the JOD documentation. Yet, NONE of these sources answers the following questions:

    * What is JOD?
    * Why would I want to use it?
    * What problems does it solve?

    I see lots and lots of buzzwords and technical matter in the documentation, but nothing which communicates why it exists at all.

    • 1) What is JOD? It’s a J word database.

      2) Why would I want to use it? All J words, including large nouns (arrays), can be stored with a single put ‘array’ and fetched with a single get ‘array’.

      3) What problems does it solve? The same problems natural language dictionaries solve.

      4) Why does it exist at all? It exists because I had previous experience with code databases and saw how they significantly improve code reuse.

  3. Is JOD a (world-wide) repository of reusable pieces of J code? This reminds about Phrases on jsoftware.com and RosettaCode. No, probably JOD is not that; for that, one needs a universally available storage for pieces.

    Is JOD a system for coding in J in an organization? Where someone decided that text files aren’t as good as a company-wide database for code pieces? May be.

    I agree that docs on JOD aren’t entirely clear.

    • Thanks for commenting. I have been using JOD for so long that it’s hard for me to see it through other eyes. JOD’S online documentation is mainly for quick reference. jod.pdf is detailed and should answer most questions about JOD.

      JOD is not a world wide repository. It uses local jfiles. The jfiles may be on network drives. If I ever replace JOD’s storage object I might use some global store like Google Storage.

      JOD’s main function is organizing my code. In my active dictionaries I have over two thousand J words ranging from tiny tacit definitions to multi-page explicit definitions. J code is typically functional and side effect free which means most of these words can be freely reused in new contexts. I could set up standard require files but it’s easier to define JOD word groups and generate scripts on the fly. This approach yields exactly tailored runtime scripts that do not include redundant or unused chunks of code.

  4. John
    Starting to use JOD. Trivial question. In setting up a new dictionary I did not include any documentation as the third item. How do I subsequently add documentation and edit ?
    Any help welcome.

    Regards

    Bill

    • Bill,

      To revise documentation for an existing dictionary you have to unregister and re-register it. The following sequence illustrates how to do this:

      
       NB. load or require JOD
       load 'general/jod'
      
       NB. unregister the dictionary - it must be
       NB. a READWRITE dictionary (the default)
       3 regd 'play'
      
       NB. re-register using the same name and 
       NB. location with a third documentation item
       regd 'play';'c:/jod/j701/play';'this is documentation'
      
      

      Editing the documentation list, ‘this is the documentation’
      is something you do outside of JOD. You can use the J or
      any text editor to create this list.

      Hope this answers your question. – Thanks for dropping bye.

  5. John
    In Section 7 of the PDF (Release 0.8.0 3/2/2009) manual you refer to the jmaster.ijs as a binary component file. Should this be jmaster.ijf ?. Similar treatment for jwords.ijs etc in the section.

    How can I get and display the documentation stored by:
    newd ‘play’;’c:/jod/j701/play’;’this is documentation to get and display’

    Thanks Bill

    • Bill,

      You are correct about section 7. I spotted this error when I was revising jod.pdf. There is a new version of the manual jodnew.pdf available here:

      http://www.box.com/shared/gajfu50gc0

      and in the Files sidebar that fixes this and also reflects changes to JOD since version 0.8.0.

      As for your other question. There is no direct JOD command to fetch this documentation but you can get at it by first displaying the locations of dictionaries with od and then directly reading component 2 of the jwords.ijf file.

      4 od ”
      +-+————————————————-+
      |1|+———-+————————————+|
      | ||cbh |/home/john/jod/j701/cbh/ ||
      | |+———-+————————————+|
      | ||docs |/home/john/jod/j701/docs/ ||
      | |+———-+————————————+|
      | ||play |/home/john/jod/j701/play/ ||
      | |+———-+————————————+|
      | ||utils |/home/john/jod/j701/utils/ ||
      | |+———-+————————————+|
      +-+————————————————-+

      jread (‘/home/john/jod/j701/play/jwords.ijf’);2
      +———+
      |j toy box|
      +———+

      This looks like a good candidate for a little extension verb that reads and writes this item.

      Thanks for your careful reading. If you spot any errors in jodnew.pdf please let me know.

      John

      • Bill,

        I have extended the put and get verbs to read and write dictionary documentation.

        NB. read documentation
        5 get ”

        NB. write documentation – any character list
        5 put ‘document me’

        This is available in JOD version 0.9.65+

        John

  6. John
    Tried running:
    load ‘c:/users/owner/j64-701/addons/general/jodsource/jodsourcesetup.ijs’ on a 64 bit system.

    Got the following error:
    |domain error: unzOpen
    | 0=Z=. unzOpen,<ZN

    I note that the script has been tested on 32 bit systems.

    Can I load the jsource dictionaries into:
    c:/users/owner/jod/j701 or c:/users/owner/j64-601

    instead of:

    c:/jod/j701

    Bill

  7. Bill,

    Your error is caused by the arc/zip addon. It is used in the source setup script to extract the zipped dump scripts. Apparently it doesn’t work on 64 bit systems.

    This is not a show stopper. jodsource.zip is just a plain old zip file. You can extract and build the source dictionaries like this:

    1) Unzip utils.ijs, jod.ijs, joddev.ijs to a temp directory say c:/temp

    2) Start J and load JOD: load 'general/jod'

    3) Create your source dictionaries with the location you want:

    
    newd 'utils';'c:/users/owner/j64-601/utils'
    newd 'jod';'c:/users/owner/j64-601/jod'
    newd 'joddev';'c:/users/owner/j64-601/joddev'
    
    

    4) Open the dictionaries and load the dump scripts in this order.

    
    od 'utils'
    0!:0 <'c:/temp/utils.ijs'
    0 globs&> }. revo ''  NB. rebuilds cross references
    3 od ''
    
    od  ;:'jod utils'
    0!:0 <'c:/temp/jod.ijs'
    0  globs&> }. revo '' 
    3 od ''
    
    od  ;:' joddev jod utils'
    0!:0 <'c:/temp/joddev.ijs'
    0  globs&> }. revo '' 
    3 od ''
    
    

    Hope this helps.
    John

  8. John
    Installed latest PDF manual (12/12/2011) : need to rename from jodnew.pdf to jod.pdf.
    using:
    jodhelp ~ ‘PDF’
    works and goes to the local PDF file.

    Whereas:
    jodhelp ‘put’
    goes to the online help.
    It makes more sense to go to the latest help which is online.
    Bill

  9. Bill,

    Thanks for the note. jodhelp goes to online help by default. Normally the online help is more current but in the last month I have been making lots of changes to the PDF version.

    On thing you can do to is to define a verb that always loads the PDF version if that is your preferrence, eg:

    jodpdf_ijod_=: 3 : 'jodhelp~ ''PDF'' '

    Then jodpdf 0 always goes to the local PDF version.

    John

  10. Pingback: WordPress to LaTeX with Pandoc and J: Using TeXfrWpxml.ijs (Part 3) « Analyze the Data not the Drivel.

  11. Pingback: Mac JOD « Analyze the Data not the Drivel.

  12. Pingback: Git me a Hub’bery « Analyze the Data not the Drivel.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s