//AACCDCSA JOB (AACS,SCH),CLAUD,CLASS=S,MSGCLASS=A //*UQ ALLOW //* --------------------------------------------------------------- //* BACKUP DO INFOPRINT //* --------------------------------------------------------------- //AOPBATCH EXEC PGM=AOPBATCH,PARM='/pidu -c "export //DD:INVENT;"' //INVENT DD DSN=AOP.INV.BACKUP(+1), // DISP=(NEW,CATLG), // DCB=(RECFM=VB,LRECL=32756,BLKSIZE=32760), // UNIT=SYSDA,SPACE=(CYL,(11,10),RLSE), // VOL=SER=PRD902 //STDOUT DD SYSOUT=* //STDERR DD SYSOUT=* //STDENV DD * //* --------------------------------------------------------------- * GRAVANDO EM CARTUCHO //* ---------------------------------------------------------------
O Natural depende do valor da opção do compilador TQMARK, como o Natural interpreta as " (aspas duplas). Execute o comando COMPOPT em uma linha de comando e você verá suas opções do compilador.
TQMARK=ON: Cada aspa dupla dentro de uma constante de texto é exibida como um apóstrofo simples. Este é o valor padrão.
TQMARK=OFF: Aspas duplas dentro de uma constante de texto não são traduzidas; elas são geradas como aspas duplas.
Se a opção do compilador deve ser aplicada a todo o programa:
DEFINE DATA LOCAL 1 #STRING (A10) INIT <'ABC"DEF'> END-DEFINE ** OPTIONS TQMARK=OFF ** WRITE #STRING * END
Outra possibilidade é traduzir o apóstrofo simples para aspas duplas:
DEFINE DATA LOCAL 1 #STRING (A10) INIT <'ABC"DEF'> END-DEFINE * WRITE #STRING EXAMINE #STRING FOR H'7D' REPLACE H'7F' WRITE #STRING * END
Foi utilizado a primeira opção no programa abaixo
> > + Program INFO0108 Lib NATURAL
....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0610 1 #CSA (A80) INIT <'//AOPBATCH EXEC PGM=AOPBATCH,PARM='>
0620 1 #CSB (A80) INIT <'/pidu -c '>
0630 1 #CSC (A80) INIT <'export //DD:INVENT;'>
0640 1 #CSE (A80) INIT <'/pidu -c "export //DD:INVENT;"'>
0650 1 #1-QUOTE (A1)
0660 1 #2-QUOTE (A1) /* INIT <'"'>
0670 END-DEFINE
0680 * ==================================================================== *
0690 FORMAT KD=ON
0700 SET KEY
0710 PF3 = PGM NAMED 'EXIT'
0720 OPTIONS TQMARK=OFF
0730 * ==================================================================== *
0740 MOVE "'" TO #1-QUOTE
0750 MOVE '"' TO #2-QUOTE
0760 REPEAT
0770 * ==================================================================== *
0780 COMPRESS
0790 #CSA
0800 #1-QUOTE
0810 #CSB
0820 #2-QUOTE
0830 #CSC
0840 #2-QUOTE
0850 #1-QUOTE
0860 INTO #C06
0870 LEAVING NO
0880 * ==================================================================== *
0890 * COMPRESS #CSA '"' #CSB '|' #CSC '|' '"' INTO #C06 LEAVING NO
0900 COMPRESS '//STEP01 EXEC NATURAL,PARM1='
0910 "'SYS=P,MT=0,STACK=(LOG NATURAL)'"
0920 INTO #C28 LEAVING NO
0930 * ==================================================================== *
0940 COMPUTE #TOT = 33 * 80
0950 CALL 'RJE' #RC #C01 #TOT
0960 CALL 'GETJOB' #JOBNUM #CALLER
0970 * ==================================================================== *
0980 FORMAT KD=OFF
0990 DEFINE WINDOW NUMJOB
1000 SIZE 08 * 50 BASE 07/17 TITLE ' NUMERO DO JOB '
....+....1....+....2....+....3....+....4....+....5....+... S 110 L 61
Job depois que rodou assim
XX* --------------------------------------------------------------- XX* BACKUP DO INFOPRINT SERVER XX* --------------------------------------------------------------- 4 XXAOPBATCH EXEC PGM=AOPBATCH,PARM='/pidu -c "export //DD:INVENT;"' 5 XXINVENT DD DSN=AOP.INV.BACKUP(+1), XX DISP=(NEW,CATLG), XX DCB=(RECFM=VB,LRECL=32756,BLKSIZE=32760), XX UNIT=SYSDA,SPACE=(CYL,(11,10),RLSE), XX VOL=SER=PRD902 6 XXSTDOUT DD SYSOUT=* 7 XXSTDERR DD SYSOUT=* 8 XXSTDENV DD DSN=AAB.DIST.JCLS(AABSINFO),DISP=SHR XX* ------------------------------------------------------------------ XX* GRAVANDO EM CARTUCHO XX* ------------------------------------------------------------------

Sem comentários:
Enviar um comentário