@@ -92,6 +92,21 @@ export class MakeProject {
9292 } ;
9393 }
9494
95+ const qsysTempName = `QTMPSRC` ;
96+
97+ if ( data . member || data . parameters ?. srcfile ) {
98+ data . member = true ;
99+ data . parameters [ `srcfile` ] = `$(BIN_LIB)/${ qsysTempName } ` ;
100+ data . parameters [ `srcmbr` ] = ileObject . systemName ;
101+
102+ steps . push (
103+ {
104+ object : { name : ileObject . systemName , type : ileObject . type } ,
105+ command : MakeProject . resolveCommand ( `CPYFRMSTMF FROMSTMF('${ asPosix ( ileObject . relativePath ) } ') TOMBR('/QSYS.LIB/&CURLIB.LIB/${ qsysTempName } .FILE/${ data . parameters [ `srcmbr` ] } .MBR') MBROPT(*REPLACE)` , ileObject , commandOptions )
106+ }
107+ ) ;
108+ }
109+
95110 const command = MakeProject . resolveCommand ( toCl ( data . command , data . parameters ) , ileObject , commandOptions ) ;
96111
97112 steps . push ( {
@@ -348,10 +363,6 @@ export class MakeProject {
348363 return lines ;
349364 }
350365
351- static generateCommand ( data : CompileData , ileObject : ILEObjectTarget ) : string | undefined {
352- return MakeProject . resolveCommand ( toCl ( data . command , data . parameters ) , ileObject ) ;
353- }
354-
355366 static generateSpecificTarget ( data : CompileData , ileObject : ILEObjectTarget , customAttributes ?: CommandParameters ) : string [ ] {
356367 let lines : string [ ] = [ ] ;
357368
@@ -377,18 +388,23 @@ export class MakeProject {
377388 return undefined ;
378389 }
379390
380- const resolvedCommand = MakeProject . generateCommand ( data , ileObject ) ;
391+ const qsysTempName = `QTMPSRC` ;
392+
393+ if ( data . member ) {
394+ data . parameters [ `srcfile` ] = `$(BIN_LIB)/${ qsysTempName } ` ;
395+ data . parameters [ `srcmbr` ] = ileObject . systemName ;
396+ }
397+
398+ const resolvedCommand = MakeProject . resolveCommand ( toCl ( data . command , data . parameters ) , ileObject ) ;
381399 const objectKey = `${ ileObject . systemName } .${ ileObject . type } ` ;
382- const parentName = ileObject . relativePath ? path . dirname ( ileObject . relativePath ) : undefined ;
383- const qsysTempName : string | undefined = ( parentName && parentName . length > 10 ? parentName . substring ( 0 , 10 ) : parentName ) ;
384400
385401 lines . push (
386402 `$(PREPATH)/${ objectKey } : ${ asPosix ( ileObject . relativePath ) } ` ,
387403 ...( qsysTempName && data . member ?
388404 [
389405 // TODO: consider CCSID when creating the source file
390- `\t-system -qi "CRTSRCPF FILE($(BIN_LIB)/ ${ qsysTempName } ) RCDLEN(112) CCSID(${ sourceFileCcsid } )"` ,
391- `\tsystem "CPYFRMSTMF FROMSTMF('${ asPosix ( ileObject . relativePath ) } ') TOMBR('$(PREPATH)/${ qsysTempName } .FILE/${ ileObject . systemName } .MBR') MBROPT(*REPLACE)"`
406+ `\t-system -qi "CRTSRCPF FILE(${ data . parameters [ `srcfile` ] } ) RCDLEN(112) CCSID(${ sourceFileCcsid } )"` ,
407+ `\tsystem "CPYFRMSTMF FROMSTMF('${ asPosix ( ileObject . relativePath ) } ') TOMBR('$(PREPATH)/${ qsysTempName } .FILE/${ data . parameters [ `srcmbr` ] } .MBR') MBROPT(*REPLACE)"`
392408 ] : [ ] ) ,
393409 ...( data . preCommands ? data . preCommands . map ( cmd => `\t${ MakeProject . resolveCommand ( cmd , ileObject ) } ` ) : [ ] ) ,
394410 ...( data . command ?
@@ -423,8 +439,7 @@ export class MakeProject {
423439 return str . replace ( new RegExp ( search , `gi` ) , replace ) ;
424440 }
425441
426- const parentName = ileObject . relativePath ? path . dirname ( ileObject . relativePath ) : undefined ;
427- const qsysTempName : string | undefined = ( parentName && parentName . length > 10 ? parentName . substring ( 0 , 10 ) : parentName ) ;
442+ const qsysTempName = `QTMPSRC` ;
428443
429444 const isForAction = opts . forAction === true ;
430445 const libraryValue = isForAction ? `*CURLIB` : `$(BIN_LIB)` ;
@@ -466,6 +481,9 @@ export class MakeProject {
466481 command = simpleReplace ( command , `\\$\\(BIN_LIB\\)` , libraryValue ) ;
467482 command = simpleReplace ( command , `\\$\\(BNDDIR\\)` , opts . bindingDirectory ? opts . bindingDirectory . systemName : `*NONE` ) ;
468483 command = simpleReplace ( command , `\\$\\(APP_BNDDIR\\)` , `APP` ) ; // Default name
484+ command = simpleReplace ( command , `&SRCFILE` , `${ libraryValue } /${ qsysTempName } ` ) ;
485+ command = simpleReplace ( command , `&SRCPF` , qsysTempName ) ;
486+ command = simpleReplace ( command , `&SRCLIB` , libraryValue ) ;
469487 }
470488
471489 return command ;
0 commit comments