All files / src/abap/2_statements/statements open_dataset.ts

100% Statements 21/21
100% Branches 0/0
100% Functions 1/1
100% Lines 21/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37  1x 1x 1x     1x     30x       30x   30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x 30x   30x       30x      
import {IStatement} from "./_statement";
import {verNot, str, seq, altPrio, per, opt} from "../combi";
import {Target, Source} from "../expressions";
import {Version} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
 
export class OpenDataset implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const mode = seq("IN",
                     opt("LEGACY"),
                     altPrio("BINARY MODE", "TEXT MODE"));
 
    const code = seq("CODE PAGE", Source);
 
    const direction = seq("FOR", altPrio("OUTPUT", "INPUT", "UPDATE", "APPENDING"));
    const encoding = seq("ENCODING", altPrio("DEFAULT", "UTF-8", "NON-UNICODE"));
    const pos = seq("AT POSITION", Source);
    const message = seq("MESSAGE", Target);
    const ignoring = str("IGNORING CONVERSION ERRORS");
    const replacement = seq("REPLACEMENT CHARACTER", Source);
    const bom = str("SKIPPING BYTE-ORDER MARK");
    const wbom = str("WITH BYTE-ORDER MARK");
    const type = seq("TYPE", Source);
    const filter = seq("FILTER", Source);
    const linetype = altPrio("SMART", "NATIVE", "UNIX");
    const feed = seq("WITH", linetype, "LINEFEED");
    const windows = str("WITH WINDOWS LINEFEED");
 
    const ret = seq("OPEN DATASET",
                    Source,
                    per(direction, type, mode, wbom, replacement, filter, encoding, pos, message, ignoring, bom, code, feed, windows));
 
    return verNot(Version.Cloud, ret);
  }
 
}