home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #23 / NN_1992_23.iso / spool / bit / listserv / ibmmain / 2340 < prev    next >
Encoding:
Text File  |  1992-10-09  |  25.3 KB  |  835 lines

  1. Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
  2. Path: sparky!uunet!uvaarpa!darwin.sura.net!paladin.american.edu!auvm!MVS.DRAPER.COM!PDM1881
  3. Message-ID: <IBM-MAIN%92100811381662@RICEVM1.RICE.EDU>
  4. Newsgroups: bit.listserv.ibm-main
  5. Date:         Thu, 8 Oct 1992 12:36:00 EST
  6. Sender:       IBM Mainframe Discussion list <IBM-MAIN@RICEVM1.BITNET>
  7. From:         "Peter D. Matthews Jr." <pdm1881@MVS.DRAPER.COM>
  8. Subject: XXWSC ISPF Edit Macro: Old Waterloo SYSPUB to GML
  9. Comments: To: seb@draper.com, ibm-main@ricevm1.rice.edu
  10. Lines: 823
  11.  
  12. >
  13. >From:   IN%"IBM-MAIN@ricevm1.rice.edu"  "IBM Mainframe Discussion list"
  14. > 7-OCT-1992 11:46:41.90
  15. >To:     IN%"IBM-MAIN@ricevm1.rice.edu"  "Multiple recipients of list IBM-MAIN"
  16. >CC:
  17. >Subj:   uow script to dcf converter
  18. >
  19. >Date: 07 Oct 1992 11:42:13 -0400 (EDT)
  20. >From: Bob Quigley <BOB@ysu.edu>
  21. >Subject: uow script to dcf converter
  22. >
  23. >I am looking for some kind of program to read fairly simple Waterloo
  24. >script programs and convert them to IBM's DCF script language. Does
  25. >such a beast exist? VM environment is best for me, but MVS is OK too.
  26. >
  27. >Thanks,
  28. >Bob Quigley (bob@ysu.edu)
  29. >Youngstown State University
  30.  
  31. Following is from our MVS System News.  Below that is current XXWSC
  32. Macro and some tutorial panels.  It sometimes dies in the middle, but if
  33. you run it again, it continues churning away, so I never fixed it.
  34. Sorry that it's not REXX.
  35.  
  36.   April 17, 1986
  37. | July 11, 1986 (revised)
  38. |
  39. | WATERLOO SCRIPT NOW UNSUPPORTED - XXWSC CONVERTS WSCRIPT TO GML
  40. |
  41.     ...
  42.  
  43.   The new XXWSC macro may be used when editing a sequential data set or
  44.   member to convert from Waterloo SCRIPT and SYSPUB markup to IBM DCF
  45.   (SCRIPT/VS) and GML markup.  The entire member being edited will be
  46.   processed.
  47.  
  48.   The conversion is by no means complete, but it does handle the major
  49.   constructs used in Waterloo SCRIPT, such as .POINT, .CHAPTER and .US.
  50.   Manual editing will be required to polish the results, but XXWSC does
  51.   80-90% of the job.
  52.  
  53.     ...
  54.  
  55.   To convert a document, do the following:
  56.  
  57.     1. Make a backup copy of your data set.
  58.  
  59.     2. Edit (a member of) the data set using ISPF option 2.
  60.  
  61.     3. COMMAND ===> XXWSC
  62.  
  63.     4. Carefully examine the results before saving.  Make any
  64.        manual changes which you can see.
  65.  
  66.     5. Repeat steps 2-4 until all members have been converted.
  67.  
  68.     6. Format the document ... and correct any errors detected - print
  69.        the results first, if necessary.
  70.  
  71.  
  72.     ...
  73.  
  74.  
  75.   - DETAILS
  76.  
  77.   Help for macros such as XXWSC is provided inside ISPF.  Press the HELP
  78.   key or enter HELP in the COMMAND field while editing.  Then select
  79.   option M on the Edit Tutorial menu.  XXWSC is a "system-wide" macro -
  80.   select 1 on the next menu, and then name XXWSC.  Since you may find
  81.   this somewhat cumbersome to reach (unless you're on an exploring
  82.   expedition), we provide the information here:
  83.  
  84.  
  85.     Native Control Words converted -
  86.  
  87.        .FO      --> .FO                .IX      --> :IH# :I#
  88.        .UD SET      (affects .US)      .HY      --> .DU
  89.        .US      --> :HP1 :EHP1         .EF      --> removed
  90.  
  91.        Other native controls are not changed
  92.  
  93.     SYSPUB Macros Converted -
  94.  
  95.        .PARA    --> :P                 .XPL     --> :FIG FRAME=BOX
  96.        .POINT   --> :OL :UL :LI        .FIGNUM  --> ID=
  97.        .PART    --> :H0                .TABNUM  --> ID=
  98.        .APPENDIX--> :APPENDIX :H1      .FIGBEGIN--> :FIG
  99.        .CHAPTER --> :H1                .TABBEGIN--> :TAB
  100.        .NEWCHAP --> :H1                .FIGURE  --> :FIGCAP
  101.        .SECTION --> :H2                .TABLE   --> :TABCAP
  102.        .SUBSECT --> :H3                .FIGEND  --> :EFIG
  103.        .SUBSUB  --> :H4                .TABEND  --> :ETAB
  104. |      .SUBSUB1 --> :H5                .BOXON   --> :FIG FRAME=BOX, .BX
  105. |      .SUBSUB2 --> :H6                .BOXOFF  --> :EFIG, .BX
  106.        .SUBSUB3 --> :H7                .EQBEGIN --> :FORM
  107.        .SUBSUB4 --> :H8                .EQEND   --> :EFORM
  108.        .QUOTE   --> :LQ                .INDEX   --> :INDEX
  109.        .FOOTNOTE--> :FN                .CONTENTS--> :TOC
  110.        .ENDNOTE --> :FN                .FIGURES --> :FIGLIST
  111.        .FOOTEND --> :EFN               .TABLES  --> :TABLIST
  112.        .ENDEND  --> :EFN               Other controls are not changed
  113.  
  114.  
  115.                     /* XXWSC:  WATERLOO SCRIPT SYSPUB ---> DCF GML */
  116.                     /* VERSION 1.0   PETE MATTHEWS, 4-86           */
  117.                     /* RENAMED FROM XXGML           2-87           */
  118.   ISREDIT MACRO
  119.   CONTROL NOFLUSH NOCAPS END(DEND)
  120.  
  121.   ISREDIT (L,L2) = NUMBER
  122.   IF (&L = OFF)  THEN  GOTO INIT  /* SKIP UNNUMBERING */
  123.  
  124.   /* --------- CODE MODIFIED FROM XXUNNUM 4-4-86 ------------------- */
  125.       ISREDIT (SAVELB,SAVERB) = BOUNDS
  126.       ISREDIT UNNUM
  127.       ISREDIT (RF) = RECFM
  128.       IF &RF = V THEN DO
  129.        ISREDIT (LR) = LRECL
  130.        SET LASTCOL = &LR
  131.        ISREDIT (LASTLINE) = LINENUM .ZLAST
  132.        ISPEXEC CONTROL ERRORS RETURN
  133.        ISREDIT BOUNDS = 1,&LASTCOL
  134.        IF &LASTCC ^= 0 THEN DO
  135.         ISPEXEC DISPLAY PANEL(ISRERROR)
  136.         GOTO RECOVER
  137.        DEND
  138.        SET CURLINE = 0
  139.        DO WHILE &CURLINE < &LASTLINE
  140.         SET CURLINE = &CURLINE + 1
  141.         ISREDIT SHIFT ( &CURLINE 8
  142.         IF &LASTCC ^= 0 THEN DO
  143.          ISPEXEC DISPLAY PANEL(ISRERROR)
  144.          GOTO RECOVER
  145.         DEND
  146.        DEND
  147.        RECOVER:+
  148.        ISPEXEC CONTROL ERRORS CANCEL
  149.        IF &SAVERB = &LASTCOL-8 THEN SET SAVERB = &LASTCOL
  150.        ISREDIT BOUNDS = &SAVELB &SAVERB
  151.       DEND
  152. /* --------- END XXUNNUM ------------------------------- */
  153.  
  154.   ISPEXEC VGET (XXTRACE) SHARED
  155.   IF &XXTRACE ^= THEN DO
  156.     ISPEXEC CONTROL DISPLAY LINE
  157.     CONTROL CONLIST SYMLIST LIST
  158.     DEND
  159.  
  160.      /* INITIALIZE CONTROL VARIABLES */
  161.   INIT: +
  162.   ISREDIT SCAN = OFF                /* NO SUBSTITUTION FOR AMPERSANDS */
  163.   ISREDIT (STATE) = USER_STATE      /* SAVE EDITING STATE */
  164.   SET &AX     = FALSE
  165.   SET &FG     = FALSE
  166.   SET &XP     = FALSE
  167.   SET &ID     = #NONE#
  168.   SET &UDLM   = &STR(|)
  169.   SET &LNEST  = 0
  170.   SET &UNPROC = 0
  171.   SET &FNNUM  = 0
  172.   SET &P1     = O
  173.   SET &P2     = O
  174.   SET &P3     = O
  175.   SET &P4     = O
  176.   SET &    = &&
  177.   ISREDIT (MBR) = MEMBER
  178.   IF &STR(&MBR) = &STR()  THEN  DO
  179.     SET &FN1 = FN
  180.     SET &FN2 =
  181.     DEND
  182.   ELSE  DO  /* SET FOOTNOTE ID'S, PLANNING FOR TWO DIGITS, 7 CHAR MAX */
  183.     SET &FN1 = &SUBSTR(1:1,&MBR )
  184.     SET &FN2 = &SUBSTR(2:3,&MBR  )+
  185.                &SUBSTR(5:6,&MBR      )
  186.     DEND
  187.  
  188.      /* COMMENT BEFORE FIRST CONTROL LINE */
  189.   ISREDIT SEEK   '.'          FIRST 1 1
  190.   SET &L = &NRSTR(.*    FROM WSCRIPT VIA XXWSC - &SYSUID &SYSDATE)
  191.     ISREDIT  LINE_BEFORE .ZCSR = (L)
  192.  
  193.      /* SPLIT ALL MULTIPLE COMMAND LINES */
  194.   ISREDIT CHANGE ';,'   ';.'  ALL
  195.   ISREDIT SEEK   ';.'         FIRST
  196.   SET &LCC = &LASTCC
  197.   IF (&LCC=0)  THEN  DO
  198.     ISREDIT TSPLIT
  199.     ISREDIT CHANGE ';'   ''
  200.     ISREDIT SEEK   ';.'
  201.     DEND
  202.      /* HANDLE WSCRIPT ABBERRATIONS */
  203.   ISREDIT CHANGE '...'  '`~`' ALL 1 3 /* SAVE LABELS */
  204.   ISREDIT CHANGE '..'   '.'   ALL 1 2
  205.   ISREDIT CHANGE '`~`'  '...' ALL 1 3 /* RESTORE */
  206.   ISREDIT CHANGE ',,'   '.'   ALL 1 2
  207.   ISREDIT CHANGE ',.'   '.'   ALL 1 2
  208.   ISREDIT CHANGE ','    '.'   ALL 1 1
  209.   ISREDIT CHANGE '.SR'  '.SE' ALL 1 4
  210.   ISREDIT CHANGE '.UR ' ''    ALL 1 4
  211.   ISREDIT CHANGE '&NRSTR(&.SYSPPAGE)'  '&NRSTR(&.$PN)'  ALL
  212.   ISREDIT CHANGE '&NRSTR(&.SYSPAGE)'   '&NRSTR(&.$PN)'  ALL
  213.  
  214.      /* MAIN PROCESSING LOOP */
  215.   ISREDIT SEEK '.' 1 1 FIRST
  216.   IF (&LASTCC>0)  THEN  DO  /* ALL DONE OR ERROR */
  217.     ISPEXEC SETMSG MSG(XWSC001)
  218.     SET &LCC = 0
  219.     GOTO RETURN
  220.     DEND
  221.   GOTO PARSE  /* PROCESS INITIAL SEEK */
  222.  
  223.   NEXTCODE: +
  224.     ISREDIT SEEK '.' 1 1
  225.     IF (&LASTCC>0)  THEN  DO  /* ALL DONE OR ERROR */
  226.       ISPEXEC SETMSG MSG(XWSC001)
  227.       SET &LCC = 0
  228.       GOTO RETURN
  229.       DEND
  230.  
  231.        /* OBTAIN CURRENT LINE, CHECK CONTROL WORD */
  232.     PARSE: +
  233.     ISREDIT CHANGE ';' ' ' .ZCSR .ZCSR   /* STRIP FIRST SEMICOLON */
  234.     IF &LASTCC = 0  THEN  ISREDIT TSPLIT
  235.        /* OBTAIN CURRENT LINE, PARSE */
  236.     ISREDIT (L) = LINE .ZCSR
  237.     SET &SYSDVAL = &NRSTR(&L)
  238.     READDVAL L1 L2 L3 L4 L5 L6
  239.  
  240.     IF (&SUBSTR(1:2,&L1  ) = &STR(.*))  THEN  GOTO NEXTCODE
  241.     CONTROL CAPS  /* UPPERCASE FOR TESTING */
  242.     SET &LS = &L1
  243.     SET &L1 = &SUBSTR(2:8,&L1        )
  244.     CONTROL NOCAPS
  245.     ISREDIT (ROW,COL) = CURSOR
  246.  
  247.        /* SELECT CONTROL WORD */
  248.     IF (&L1 = FO     )  THEN  GOTO FO
  249.     IF (&L1 = UD     )  THEN  GOTO UD
  250.     IF (&L1 = US     )  THEN  GOTO US
  251.     IF (&L1 = IX     )  THEN  GOTO IX
  252.     IF (&L1 = HY     )  THEN  GOTO DU
  253.     IF (&L1 = EF     )  THEN  GOTO EF
  254.     IF (&L1 = CC     )  THEN  GOTO CC
  255.     IF (&L1 = CP     )  THEN  GOTO CC
  256.     IF (&L1 = CE     )  THEN  GOTO CC /* BEGIN/END AS :XMP ! */
  257.     IF (&L1 = PAGE   )  THEN  GOTO PAGE
  258.     IF (&L1 = .EF    )  THEN  GOTO EF /* ODDITY ON LAST LINE */
  259.     IF (&LENGTH(&L1) = 2)  THEN  GOTO NEXTCODE /* NATIVE CONTROL WORD */
  260.     IF (&L1 = PARA   )  THEN  GOTO P
  261.     IF (&L1 = POINT  )  THEN  GOTO LISTS
  262.     IF (&L1 = PART   )  THEN  GOTO H0
  263.     IF (&L1 = APPENDI)  THEN  GOTO APPX
  264.     IF (&L1 = CHAPTER)  THEN  GOTO H1
  265.     IF (&L1 = NEWCHAP)  THEN  GOTO H1
  266.     IF (&L1 = NEWAPPX)  THEN  GOTO H1
  267.     IF (&L1 = SECTION)  THEN  GOTO H2
  268.     IF (&L1 = SUBSECT)  THEN  GOTO H3
  269.     IF (&L1 = SUBSUB )  THEN  GOTO H4
  270.     IF (&L1 = SUBSUB1)  THEN  GOTO H5
  271.     IF (&L1 = SUBSUB2)  THEN  GOTO H6
  272.     IF (&L1 = SUBSUB3)  THEN  GOTO H7
  273.     IF (&L1 = SUBSUB4)  THEN  GOTO H8
  274.     IF (&L1 = QUOTE  )  THEN  GOTO QUOTE
  275.     IF (&L1 = FOOTNOT)  THEN  GOTO FN
  276.     IF (&L1 = ENDNOTE)  THEN  GOTO FN
  277.     IF (&L1 = FOOTEND)  THEN  GOTO EFN
  278.     IF (&L1 = ENDEND )  THEN  GOTO EFN
  279.     IF (&L1 = XPL    )  THEN  GOTO XPL
  280.     IF (&L1 = FIGNUM )  THEN  GOTO FIGID
  281.     IF (&L1 = TABNUM )  THEN  GOTO FIGID
  282.     IF (&L1 = FIGBEGI)  THEN  GOTO FIG
  283.     IF (&L1 = TABBEGI)  THEN  GOTO TAB
  284.     IF (&L1 = FIGURE )  THEN  GOTO FIGCAP
  285.     IF (&L1 = TABLE  )  THEN  GOTO TABCAP
  286.     IF (&L1 = FIGEND )  THEN  GOTO EFIG
  287.     IF (&L1 = TABEND )  THEN  GOTO ETAB
  288.     IF (&L1 = BOXON  )  THEN  GOTO BOXON
  289.     IF (&L1 = BOXOFF )  THEN  GOTO BOXOFF
  290.     IF (&L1 = EQBEGIN)  THEN  GOTO FORM
  291.     IF (&L1 = EQEND  )  THEN  GOTO EFORM
  292.     IF (&L1 = INDEX  )  THEN  GOTO INDEX
  293.     IF (&L1 = CONTENT)  THEN  GOTO TOC
  294.     IF (&L1 = FIGURES)  THEN  GOTO FIGLIST
  295.     IF (&L1 = TABLES )  THEN  GOTO TABLIST
  296.     SET &UNPROC = &UNPROC + 1
  297.     GOTO NEXTCODE /* NOT PROCESSED */
  298.  
  299.   FO: +
  300.     CONTROL CAPS  /* UPPERCASE FOR TESTING */
  301.     SET &L2 = &NRSTR(&L2)
  302.     CONTROL NOCAPS
  303.     IF (&L2 = ON) OR (&L2 = YES) OR (&L2 = BEGIN)  THEN  SET &L2 = ON
  304.     IF (&L2 = OFF) OR (&L2 = NO) OR (&L2 = END)    THEN  SET &L2 = OFF
  305.     SET &L = &NRSTR(.FO &L2)
  306.     ISREDIT  LINE .ZCSR = (L)
  307.     GOTO NEXTCODE
  308.  
  309.   US: +
  310.     CONTROL CAPS  /* UPPERCASE FOR TESTING */
  311.     SET &L2 = &NRSTR(&L2)
  312.     CONTROL NOCAPS
  313.     IF (&NRSTR(&L2) = ON) OR (&NRSTR(&L2) = YES) OR +
  314.        (&NRSTR(&L2) = BEGIN) OR (&DATATYPE(&NRSTR(&L2)) = NUM)  THEN  DO
  315.       /* ASSIGN LABEL .USON */  ISREDIT LABEL .ZCSR = .USON
  316.       SET &USROW = &ROW
  317.       SET &L = &NRSTR(.*    &L.)
  318.       ISREDIT  LINE .ZCSR = (L)
  319.       ISREDIT  LINE_AFTER .ZCSR = :HP1.
  320.       IF (&DATATYPE(&L2) NE NUM)  THEN  GOTO NEXTCODE
  321.         /* PROCESS .US NUMBER */
  322.         SET &ROW = &ROW + &L2
  323.         ISREDIT CURSOR = (ROW)
  324.         ISREDIT LINE_AFTER .ZCSR = &STR(.* &L2)
  325.         SET &ROW = &ROW + 1
  326.         ISREDIT CURSOR = (ROW)
  327.         /* NOW PROCESS END */ SET &L2 = OFF
  328.       DEND
  329.     IF (&STR(&L2) = OFF) OR (&STR(&L2) = NO) OR (&STR(&L2) = END)  +
  330.         THEN  DO
  331.       SET &L = &NRSTR(.*   .US &L2)
  332.       ISREDIT  LINE .ZCSR = (L)
  333.       DEND
  334.     ELSE  DO   /* .US LINE  (NOTE: LINE CAN HAVE ONLY 1 LABEL) */
  335.       SET &USROW = &ROW
  336.       ISREDIT CHANGE '.US ' ':HP1.' .ZCSR .ZCSR
  337.       SET &ROW = &ROW - 1
  338.       ISREDIT CURSOR = (ROW)
  339.       ISREDIT LABEL .ZCSR = .USON
  340.       SET &ROW = &ROW + 1
  341.       ISREDIT CURSOR = (ROW)
  342.       DEND
  343.     /* CHANGE UNDERSCORE DELIMITERS */
  344.     ISREDIT LABEL .ZCSR = .USOFF
  345.     /* SEARCH FROM TOP OF RANGE */ ISREDIT CURSOR = (USROW)
  346.     CDLM: +
  347.     SET USSTAT = ON
  348.     ISREDIT CHANGE '&UDLM' ':EHP1.' .USON .USOFF
  349.     IF &LASTCC = 0  THEN  DO
  350.       SET USSTAT = OFF
  351.       ISREDIT CHANGE '&UDLM' ':HP1.' .USON .USOFF
  352.       IF &LASTCC = 0  THEN  GOTO CDLM
  353.       DEND
  354.     IF (&USSTAT = ON)  THEN  ISREDIT LINE_AFTER .USOFF = :EHP1.
  355.     GOTO NEXTCODE
  356.  
  357.   UD: +
  358.     SET &L = &NRSTR(.*   &L)
  359.     ISREDIT  LINE .ZCSR = (L)
  360.     IF &NRSTR(&L2) = SET  THEN  SET &UDLM = &NRSTR(&L3.)
  361.     GOTO NEXTCODE
  362.  
  363.   IX: +
  364.     IF &DATATYPE(&NRSTR(&L2)) = NUM  THEN DO  /* IGNORE INDEX # */
  365.       SET &L2 = &NRSTR(&L3)
  366.       SET &L3 = &NRSTR(&L4)
  367.       SET &L4 = &NRSTR(&L5)
  368.       DEND
  369.     IF &NRSTR(&L4) NE &STR()  THEN  +
  370.           SET &L = &NRSTR(:IH1.&L2.:IH2.&L3.:I3.&L4.)
  371.     ELSE  IF &NRSTR(&L3) NE &STR()  THEN  +
  372.           SET &L = &NRSTR(:IH1.&L2.:I2.&L3.)
  373.     ELSE  SET &L = &NRSTR(:I1.&L2.)
  374.     ISREDIT  LINE .ZCSR = (L)
  375.     GOTO NEXTCODE
  376.  
  377.   DU: +
  378.     SET &L = &NRSTR(.DU ADD &L3.)
  379.     ISREDIT  LINE .ZCSR = (L)
  380.     GOTO NEXTCODE
  381.  
  382.   EF: +
  383.     SET &L = &NRSTR(.*    &L)
  384.     ISREDIT  LINE .ZCSR = (L)
  385.     GOTO NEXTCODE
  386.  
  387.   CC: +
  388.     CONTROL CAPS  /* UPPERCASE FOR TESTING */
  389.     SET &L2 = &NRSTR(&L2)
  390.     CONTROL NOCAPS
  391.     IF (&NRSTR(&L2) = ON) OR (&NRSTR(&L2) = YES) OR +
  392.        (&NRSTR(&L2) = BEGIN)  THEN  DO
  393.       IF (&XP = FALSE  AND  &FG = FALSE)  THEN  SET &L = &NRSTR(:XMP.)
  394.       ELSE                                      SET &L = &NRSTR(.*   &L)
  395.       ISREDIT  LINE .ZCSR = (L)
  396.       SET &XP = TRUE
  397.       DEND
  398.     ELSE  IF (&STR(&L2) = OFF) OR (&STR(&L2) = NO) OR +
  399.              (&STR(&L2) = END)  THEN  DO
  400.       IF (&XP = TRUE)    THEN  SET &L = &NRSTR(:EXMP.)
  401.       ELSE                     SET &L = &NRSTR(.*   &L)
  402.       ISREDIT  LINE .ZCSR = (L)
  403.       SET &XP = FALSE
  404.       DEND
  405.     ELSE  DO
  406.       /* NOTHING - NUMBER ASSUMED, OK IN DCF */
  407.       DEND
  408.     GOTO NEXTCODE
  409.  
  410.   PAGE: +
  411.     SET &L = &NRSTR(.PA)
  412.     ISREDIT  LINE .ZCSR = (L)
  413.     GOTO NEXTCODE
  414.  
  415.   P: +
  416.     SET &L = :P.
  417.     ISREDIT  LINE .ZCSR = (L)
  418.     GOTO NEXTCODE
  419.  
  420.   LISTS: /* INCOMPLETE */ +
  421.     CONTROL CAPS  /* UPPERCASE FOR TESTING */
  422.     SET &L2 = &NRSTR(&L2)
  423.     SET &L3 = &NRSTR(&L3)
  424.     SET &L4 = &NRSTR(&L4)
  425.     SET &L5 = &NRSTR(&L5)
  426.     SET &L6 = &NRSTR(&L6)
  427.     CONTROL NOCAPS
  428.  
  429.     IF &NRSTR(&L2) = SET  THEN  DO
  430.       IF &NRSTR(&L3) = B  THEN  SET &P1 = U
  431.       ELSE                      SET &P1 = O
  432.       IF &NRSTR(&L4) = B  THEN  SET &P2 = U
  433.       ELSE                      SET &P2 = O
  434.       IF &NRSTR(&L5) = B  THEN  SET &P3 = U
  435.       ELSE                      SET &P3 = O
  436.       IF &NRSTR(&L6) = B  THEN  SET &P4 = U
  437.       ELSE                      SET &P4 = O
  438.       SET &L = &NRSTR(.*    &L)
  439.       ISREDIT  LINE .ZCSR = (L)
  440.       GOTO NEXTCODE
  441.       DEND
  442.  
  443.     IF &NRSTR(&L2) = BEGIN  THEN  DO
  444.       SET &L2 = 1
  445.       SET &LNEST = 0
  446.       DEND
  447.  
  448.     IF &NRSTR(&L2) = END    THEN  DO
  449.       SET &L2 = 0
  450.       SET &L = &NRSTR(.*    &L)
  451.       ISREDIT  LINE .ZCSR = (L)
  452.       DEND
  453.     ELSE  DO
  454.       SET &L = :LI.
  455.       ISREDIT  LINE .ZCSR = (L)
  456.       IF &NRSTR(&L2) = &STR()  THEN  GOTO NEXTCODE
  457.       DEND
  458.  
  459.     IF &DATATYPE(&L2) = NUM  THEN  DO
  460.       DO WHILE(&LNEST>&L2)  /* END TO CORRECT LEVEL */
  461.         SET &PTYPE = &.P&LNEST.
  462.         SET &L = :E&PTYPE.L.
  463.         ISREDIT  LINE_BEFORE .ZCSR = (L)
  464.         SET &LNEST = &LNEST - 1
  465.         DEND
  466.       DO WHILE(&LNEST<&L2)  /* BEGIN TO CORRECT LEVEL */
  467.         SET &LNEST = &LNEST + 1
  468.         SET &PTYPE = &.P&LNEST.
  469.         SET &L = :&PTYPE.L.
  470.         ISREDIT  LINE_BEFORE .ZCSR = (L)
  471.         DEND
  472.       GOTO NEXTCODE
  473.       DEND
  474.  
  475.     GOTO NEXTCODE  /* END LISTS */
  476.  
  477.  
  478.   H0: +
  479.     SET &L1 = :H0.
  480.     GOTO HEAD
  481.  
  482.   APPX: +
  483.     IF &AX = FALSE  THEN  SET &AX = EXEC
  484.   H1: +
  485.     SET &L1 = :H1.
  486.     GOTO HEAD
  487.  
  488.   H2: +
  489.     SET &L1 = :H2.
  490.     GOTO HEAD
  491.  
  492.   H3: +
  493.     SET &L1 = :H3.
  494.     GOTO HEAD
  495.  
  496.   H4: +
  497.     SET &L1 = :H4.
  498.     GOTO HEAD
  499.  
  500.   H5: +
  501.     SET &L1 = :H5.
  502.     GOTO HEAD
  503.  
  504.   H6: +
  505.     SET &L1 = :H6.
  506.     GOTO HEAD
  507.  
  508.   H7: +
  509.     SET &L1 = :H7.
  510.     GOTO HEAD
  511.  
  512.   H8: +
  513.     SET &L1 = :H8.
  514.     GOTO HEAD
  515.  
  516.   HEAD: +
  517.     SET &L = &NRSTR(&L1.&L2)
  518.     ISREDIT  LINE .ZCSR = (L)
  519.     IF &AX = EXEC  THEN  DO
  520.       ISREDIT LINE_BEFORE .ZCSR = :APPENDIX.
  521.       SET &AX = TRUE
  522.       DEND
  523.     GOTO NEXTCODE
  524.  
  525.   QUOTE: +
  526.     CONTROL CAPS  /* UPPERCASE FOR TESTING */
  527.     SET &L2 = &NRSTR(&L2)
  528.     CONTROL NOCAPS
  529.     IF &L2 = BEGIN  THEN  SET &L = :LQ.
  530.     ELSE                  SET &L = :ELQ.
  531.     ISREDIT  LINE .ZCSR = (L)
  532.     GOTO NEXTCODE
  533.  
  534.   FN: +
  535.     SET &FNNUM = &FNNUM +1
  536.     SET &L = &NRSTR(&L2.:FNREF REFID=&FN1.&FNNUM.&FN2..)
  537.     ISREDIT  LINE .ZCSR = (L)
  538.     SET &L = &NRSTR(:FN ID=&FN1.&FNNUM.&FN2..)
  539.     ISREDIT  LINE_AFTER .ZCSR = (L)
  540.     GOTO NEXTCODE
  541.  
  542.   EFN: +
  543.     IF (&LS = .ENDNOTES)  THEN   SET &L = &NRSTR(.*    &L.)
  544.     ELSE                         SET &L = :EFN.
  545.     ISREDIT  LINE .ZCSR = (L)
  546.     GOTO NEXTCODE
  547.  
  548.   XPL: /* .XPL WAS BOXED ONE-LINE FIGURE */+
  549.     SET &L = &NRSTR(:FIG PLACE=INLINE FRAME=BOX.)
  550.     ISREDIT  LINE .ZCSR = (L)
  551.     SET &L = :EFIG.
  552.     ISREDIT  LINE_AFTER .ZCSR = (L)
  553.     SET &L = &NRSTR(&L2.)
  554.     ISREDIT  LINE_AFTER .ZCSR = (L)
  555.     GOTO NEXTCODE /* NOTE "REVERSED" ORDER OF MULTIPLE "AFTER" LINES */
  556.  
  557.   FIGID: GOTO TABID
  558.   TABID: +
  559.     SET &ID = &NRSTR(&L2)
  560.     SET &L = &NRSTR(.*      &L)
  561.     ISREDIT  LINE .ZCSR = (L)
  562.     ISREDIT CHANGE 'FIGURE &NRSTR(&.&ID.)' +
  563.       ':FIGREF REFID=&ID. PAGE=NO'  ALL
  564.     ISREDIT CHANGE 'TABLE &NRSTR(&.&ID.)' +
  565.       ':TABREF REFID=&ID. PAGE=NO'  ALL
  566.     GOTO NEXTCODE
  567.  
  568.   FIG: +
  569.     SET &L = &NRSTR(:FIG ID=&ID. PLACE=INLINE WIDTH=PAGE FRAME=NONE.)
  570.     ISREDIT  LINE .ZCSR = (L)
  571.     SET &FG = TRUE
  572.     GOTO NEXTCODE
  573.  
  574.   TAB: +
  575.     SET &L = &NRSTR(:TAB ID=&ID. PLACE=INLINE WIDTH=PAGE FRAME=NONE.)
  576.     ISREDIT  LINE .ZCSR = (L)
  577.     SET &FG = TRUE
  578.     GOTO NEXTCODE
  579.  
  580.   FIGCAP: +
  581.     SET &L = &NRSTR(:FIGCAP.&L3.)
  582.     ISREDIT  LINE .ZCSR = (L)
  583.     GOTO NEXTCODE
  584.  
  585.   TABCAP: +
  586.     SET &L = &NRSTR(:TABCAP.&L3.)
  587.     ISREDIT  LINE .ZCSR = (L)
  588.     ISREDIT  LINE_AFTER .ZCSR = :TABBODY.
  589.     GOTO NEXTCODE
  590.  
  591.   EFIG: +
  592.     SET &L = :EFIG.
  593.     ISREDIT  LINE .ZCSR = (L)
  594.     IF &NRSTR(&L2) NE &STR()  THEN  DO
  595.       ISREDIT CHANGE ':FIG ' ':FIG DEPTH=PAGE ' PREV 1 6
  596.       ISREDIT SEEK   ':EFIG' 1 6
  597.       DEND
  598.     SET &FG = FALSE
  599.     GOTO NEXTCODE
  600.  
  601.   ETAB: +
  602.     SET &L = :ETAB.
  603.     ISREDIT  LINE .ZCSR = (L)
  604.     IF &NRSTR(&L2) NE &STR()  THEN  DO
  605.       ISREDIT CHANGE ':TAB ' ':FIG DEPTH=PAGE ' PREV 1 6
  606.       ISREDIT SEEK   ':ETAB' 1 6
  607.       DEND
  608.     SET &FG = FALSE
  609.     GOTO NEXTCODE
  610.  
  611.   BOXON: +
  612.     IF (&FG = FALSE) THEN  SET &L = &NRSTR(.BX 1 &.$LL.)
  613.     ELSE                   SET &L = &NRSTR(.*    &L)
  614.     ISREDIT  LINE .ZCSR = (L)
  615.     SET &L = &NRSTR(:XMP.)
  616.     IF (&FG = FALSE)   THEN  ISREDIT  LINE_BEFORE .ZCSR = (L)
  617.     SET &FG = TRUE
  618.     IF (&FG = TRUE)  THEN  DO
  619.       ISREDIT CHANGE 'FRAME=NONE' 'FRAME=BOX' PREV
  620.       ISREDIT SEEK   '.BOXON'
  621.       DEND
  622.     GOTO NEXTCODE
  623.  
  624.   BOXOFF: +
  625.     IF (&FG = FALSE)  THEN  SET &L = &NRSTR(.BX OFF)
  626.     ELSE                    SET &L = &NRSTR(.*    &L)
  627.     ISREDIT  LINE .ZCSR = (L)
  628.     SET &L = &NRSTR(:EXMP.)
  629.     IF (&FG = TRUE)   THEN  ISREDIT  LINE_AFTER .ZCSR = (L)
  630.     SET &FG = FALSE
  631.     GOTO NEXTCODE
  632.  
  633.   FORM: +
  634.     SET &L = :FORM.
  635.     ISREDIT  LINE .ZCSR = (L)
  636.     GOTO NEXTCODE
  637.  
  638.   EFORM: +
  639.     SET &L = :EFORM.
  640.     ISREDIT  LINE .ZCSR = (L)
  641.     ISREDIT LINE_BEFORE .ZCSR = :FORMNUM.
  642.     GOTO NEXTCODE
  643.  
  644.   INDEX: +
  645.     SET &L = :INDEX.
  646.     ISREDIT  LINE .ZCSR = (L)
  647.     GOTO NEXTCODE
  648.  
  649.   TOC: +
  650.     SET &L = :TOC.
  651.     ISREDIT  LINE .ZCSR = (L)
  652.     GOTO NEXTCODE
  653.  
  654.   FIGLIST: +
  655.     SET &L = :FIGLIST.
  656.     ISREDIT  LINE .ZCSR = (L)
  657.     GOTO NEXTCODE
  658.  
  659.   TABLIST: +
  660.     SET &L = :TABLIST.
  661.     ISREDIT  LINE .ZCSR = (L)
  662.     GOTO NEXTCODE
  663.  
  664.   RETURN: +
  665.   ISREDIT CHANGE ':HP1.:EHP1.' '' ALL 1 12 /* DELETE NULL UNDERSCORE */
  666.   ISREDIT USER_STATE = (STATE)     /* RESTORE EDITING STATE */
  667.   ISPEXEC VPUT (UNPROC) SHARED
  668.   EXIT CODE(&LCC)
  669.  
  670. ./ ADD NAME=XEM
  671. )ATTR
  672.  ^ TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW) HILITE(REVERSE)
  673.  ! TYPE(TEXT) INTENS(HIGH) COLOR(PINK)
  674.  # TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW)
  675.  $ TYPE(TEXT) INTENS(LOW)  COLOR(GREEN)
  676.  @ TYPE(TEXT) INTENS(LOW)  COLOR(TURQ)
  677. )BODY EXPAND()
  678. %TUTORIAL --- EDIT - MACROS --- TUTORIAL
  679. %COMMAND ===>_ZCMD                                                             +
  680. %
  681. %  ^-------------------+
  682. %  ^|   EDIT MACROS   |+
  683. %  ^-------------------+
  684. +
  685. +
  686.  IBM does not provide any edit macros, but we here at CSDL have established
  687.  edit macros at three levels of support:
  688.  
  689.     !System-wide macros@(contained in 'CSD.CMD.CLIST')
  690.  
  691.     !Project-wide macros@(for example, in 'PROGLIB.CMD.CLIST')
  692.  
  693.     !User macros@(which you code in your CMD.CLIST or CMD.LOAD)
  694.  
  695. +The following topics are presented in sequence, or may be selected by number:
  696.  
  697.      %1+-$System-wide macros
  698.      %2+-$Project-wide macros
  699.      %3+-$User macros
  700. )PROC
  701.      &ZSEL = TRANS( &ZCMD
  702.                 1,XEMACROS
  703.                 2,YEMACROS
  704.                 3,ZEMACROS
  705.                 *,'?'
  706.                 )
  707. )END
  708. ./ ADD NAME=XEMACROS
  709. )ATTR
  710.  ^ TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW) HILITE(REVERSE)
  711.  ! TYPE(TEXT) INTENS(HIGH) COLOR(RED)
  712.  # TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW)
  713.  $ TYPE(TEXT) INTENS(LOW)  COLOR(GREEN)
  714. )BODY EXPAND(``)
  715. %TUTORIAL -`-`- EDIT - SYSTEM-WIDE MACROS -`-`- TUTORIAL
  716. %COMMAND ===>_ZCMD                                                             +
  717. %
  718. %` ` ^--`-`-------------------------------`-`--+ ` `
  719. %` ` ^| ` ` SYSTEM-WIDE (CSD) EDIT MACROS ` ` |+ ` `
  720. %` ` ^--`-`-------------------------------`-`--+ ` `
  721. +
  722.   This tutorial describes the edit macros available to all users.
  723.  
  724.   Tutorials for the following macros may be selected by number or name:
  725.  
  726.      %1#XXCMD   $- Get TSO command output into your data.
  727.      %2#XXD1TAB $- Copy the contents of a D.1 table into your data.
  728.      %3#XXD2BLD $- Convert your data into a format that D.2 can import.
  729.      %4#XXGML   $- Invoke online CSDL GML Summary.
  730.      %5#XXMLIST $- Copy a PDS member list into your data.
  731.      %6#XXNOCC  $- Replace ANSI carriage control with blank lines
  732.      %7#XXPAR   $- Match up left and right parentheses or curly braces.
  733.      %8#XXRENUM $- Non-destructive renumber.
  734.      %9#XXTRACE $- Control macro tracing mode.
  735.     %10#XXUNNUM $- Remove line numbers and realign data.
  736.     %11#XXWSC   $- Convert Waterloo SCRIPT/SYSPUB to IBM DCF/GML.
  737. )PROC
  738.      &ZSEL = TRANS(&ZCMD
  739.                           1,*XXCMD
  740.                    XXCMD   ,*XXCMD
  741.                           2,*XXD1TAB
  742.                    XXD1TAB ,*XXD1TAB
  743.                           3,*XXD2BLD
  744.                    XXD2BLD ,*XXD2BLD
  745.                           4,*XXGML
  746.                    XXGML   ,*XXGML
  747.                           5,*XXMLIST
  748.                    XXMLIST ,*XXMLIST
  749.                           6,*XXNOCC
  750.                    XXNOCC  ,*XXNOCC
  751.                           7,*XXPAR
  752.                    XXPAR   ,*XXPAR
  753.                           8,*XXRENUM
  754.                    XXRENUM ,*XXRENUM
  755.                           9,*XXTRACE
  756.                    XXTRACE ,*XXTRACE
  757.                          10,*XXUNNUM
  758.                    XXUNNUM ,*XXUNNUM
  759.                          11,*XXWSC
  760.                    XXWSC   ,*XXWSC
  761.                           *,'?'
  762.                   )
  763. )END
  764.  01/22/88 - SEB1525 = XXCMD added.
  765. ./ ADD NAME=XXWSC,SSI=01010000
  766. )ATTR
  767.  ^ TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW) HILITE(REVERSE)
  768.  @ TYPE(TEXT) INTENS(HIGH) COLOR(PINK)
  769.  \ TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW)
  770.  $ TYPE(TEXT) INTENS(LOW)  COLOR(GREEN)
  771. )BODY EXPAND()
  772. %TUTORIAL ------------------ EDIT - 'XXWSC' MACRO -------------------   TUTORIAL
  773. %COMMAND ===>_ZCMD                                                             +
  774. %
  775. %  ^--------------------------+
  776. %  ^|   XXWSC - EDIT MACRO   |+
  777. %  ^--------------------------+
  778. +
  779.   Use the%XXWSC+EDIT macro to convert text marked up with University of
  780.   Waterloo SCRIPT and SYSPUB controls to IBM DCF (SCRIPT/VS) controls
  781.   and GML tags.  XXWSC operates on the entire sequential data set or
  782.   member being edited.
  783. +
  784.   The conversion is not complete, and will need some editing to fix up
  785.   the results.  However, XXWSC attempts to convert the following:
  786.  
  787. % Native Control Words converted -
  788. +
  789.      .FO      --> .FO                   .IX      --> :IH# :H#
  790.      .UD SET                            .HY      --> .DU
  791.      .US      --> :HP1 :EHP1            .EF      --> removed
  792.  
  793.      Other native controls are not changed
  794.  
  795. \  (continued on next page)
  796. )INIT
  797. )PROC
  798.  &ZCONT = XXWSC1
  799. )END
  800. ./ ADD NAME=XXWSC1,SSI=01000000
  801. )ATTR
  802.  ^ TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW) HILITE(REVERSE)
  803.  @ TYPE(TEXT) INTENS(HIGH) COLOR(PINK)
  804.  # TYPE(TEXT) INTENS(HIGH) COLOR(TURQ)
  805.  \ TYPE(TEXT) INTENS(HIGH) COLOR(YELLOW)
  806.  $ TYPE(TEXT) INTENS(LOW)  COLOR(GREEN)
  807. )BODY EXPAND()
  808. %TUTORIAL ------------------ EDIT - 'XXWSC' MACRO -------------------   TUTORIAL
  809. %COMMAND ===>_ZCMD                                                             +
  810.  
  811. % SYSPUB Macros Converted -
  812. +
  813.      .PARA    --> :P                    .XPL     --> :FIG FRAME=BOX
  814.      .POINT   --> :OL :UL :LI           .FIGNUM  --> ID=
  815.      .PART    --> :H0                   .TABNUM  --> ID=
  816.      .APPENDIX--> :APPENDIX :H1         .FIGBEGIN--> :FIG
  817.      .CHAPTER --> :H1                   .TABBEGIN--> :TAB
  818.      .NEWCHAP --> :H1                   .FIGURE  --> :FIGCAP
  819.      .SECTION --> :H2                   .TABLE   --> :TABCAP
  820.      .SUBSECT --> :H3                   .FIGEND  --> :EFIG
  821.      .SUBSUB  --> :H4                   .TABEND  --> :ETAB
  822.      .SUBSUB1 --> :H5                   .BOXON   --> :BOXON FRAME=BOX
  823.      .SUBSUB2 --> :H6                   .BOXOFF  --> :BOXOFF
  824.      .SUBSUB3 --> :H7                   .EQBEGIN --> :FORM
  825.      .SUBSUB4 --> :H8                   .EQEND   --> :EFORM
  826.      .QUOTE   --> :LQ                   .INDEX   --> :INDEX
  827.      .FOOTNOTE--> :FN                   .CONTENTS--> :TOC
  828.      .ENDNOTE --> :FN                   .FIGURES --> :FIGLIST
  829.      .FOOTEND --> :EFN                  .TABLES  --> :TABLIST
  830.      .ENDEND  --> :EFN                  Other controls are not changed
  831. )INIT
  832. )PROC
  833. )END
  834. ./ ENDUP
  835.