Two main problems arise. First, it may not be possible to combine the separate data structure diagrams involved in a program because of what are called structure clashes; this is solved by a form of program decomposition called inversion. Second, error handling is not accommodated by the simple method, and gives rise to a technique called backtracking, which is programmed by using assertions and the notation posit/quit/admit.
JSP is used in conjunction with Cobol and PL/I. Translators exist to convert from textual equivalents of Jackson data-structure diagrams into the required target language. It is claimed that the same code will always be produced from a given data specification.